[BUG] --resume hydrates snapshots but not post-compact in-flight conversation entries (JSONL intact)
Summary
After claude --resume, the assistant context is hydrated from on-disk
resources (CLAUDE.md, state-snapshots, memory, self-narrative) but does
not include the conversation entries written to the JSONL after the most
recent compaction and before the resume. Those entries are present and
chain-intact in the JSONL — they are simply not loaded into the resumed
conversation context.
This is distinct from #24304: in #24304 the chain is corrupted at write
time. In this case the chain is fully intact and traversable; the
hydration step skips/truncates the post-compact tail.
Reproduction (deterministic in this environment)
- Open a Claude Code session, hold a long conversation.
- Trigger
/compact(manual or automatic). - Continue the conversation for N minutes (these new entries land in
the JSONL but have not yet been compacted into a snapshot).
- Close the terminal / kill the CC process.
claude --resume <session-id>- Ask the assistant: "do you remember what we just talked about?"
Observed: assistant answers using content from the most recent
pre-compact snapshot, ignoring the post-compact pre-resume entries.
Expected: assistant has context of the most recent N entries that
were written between the last compact and the resume.
Verification of JSONL integrity
A separate Claude Code instance scanned the affected JSONL:
- ~13,000 entries, ~55 MB
- No chain breaks, no orphan parentUuids, no missing/duplicate uuids
- Post-compact entries fully present and well-formed
- file-history-snapshot entries do not collide with adjacent uuids
So the data is fine on disk; the bug is in the resume hydration path.
Environment
- Claude Code: 2.1.104
- macOS: Darwin 25.4.0 (arm64)
- Shell: zsh
- The session contains MCP tool-result entries (from custom MCP
servers) — possibly relevant if hydration filters by message type.
Why this matters
For users who keep a single window as a long-running context anchor
across days/weeks, this resume behavior is high-impact: an apparently
successful --resume silently strips the most recent conversation from
the assistant's working context, even though the on-disk record is
complete. The user only notices when the assistant answers a question
about recent events using stale snapshot content as if it were current.
Workaround
Have the assistant manually read the tail of its own JSONL via the
Bash tool to repopulate its working context.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗