feat: read Claude Code sessions directly from the Claude home directory - #113
Open
scode wants to merge 1 commit into
Open
feat: read Claude Code sessions directly from the Claude home directory#113scode wants to merge 1 commit into
scode wants to merge 1 commit into
Conversation
scode
force-pushed
the
hookless/2-claude-scan
branch
from
July 7, 2026 00:48
28877e1 to
6eea715
Compare
scode
force-pushed
the
hookless/1-state-toml
branch
from
July 7, 2026 00:48
8b621fe to
550afbb
Compare
scode
force-pushed
the
hookless/2-claude-scan
branch
from
July 7, 2026 06:17
6eea715 to
16a451f
Compare
scode
force-pushed
the
hookless/1-state-toml
branch
from
July 7, 2026 06:17
550afbb to
14f6242
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second step of the hookless transition (
lore/hookless-migration.md): distill no longer depends on the SessionEndhook having copied a transcript — it reads Claude Code's own session store, with the Codex watermark model generalized
to both harnesses. The hook keeps running in this revision; a session present in both places is emitted once.
Two semantics deserve attention beyond the diff:
last_distilleddoubles as a floor for the scan, so the first scan-enabled distill does not replay the retentionwindow the legacy flow already learned from. For the same reason fresh installs now stamp install time instead of
epoch 0, which would ingest weeks of pre-install history the old system never saw.
mark-distillednow adopts the scan-start time distill staged rather than its own wall clock. That closes a windowwhere a session born between the scan and the mark would sit below the floor forever — the legacy flow silently
deleted such logs as obsolete, so this fixes an inherited loss, not just a new one.
The scanner treats
projects/as an undocumented, untrusted layout: UUID-stem allowlist, symlinks rejected at readtime via handle identity (not just at discovery), and labels sanitized before they reach tag-attribute position.
changelog: include