[BUG] Session resume loads zero conversation history — silently drops all context
UPDATE 2026-03-28: Root cause identified — progress entry elision bug introduced in 2.1.85. See root cause comment for full details, binary regression proof, and workaround scripts.
Bug Summary
Resuming long-running sessions with --continue loads only system-overhead tokens (~32k) into the context window, silently dropping 300k–430k tokens of conversation history. The JSONL session log confirms the UUID chain is unbroken (session correctly identified), but cache_read_input_tokens drops from 348k–434k to near-zero between the last turn of the previous session and the first turn after resume. No compaction event, no summary event, no error — the history is silently absent.
This has been reproduced across two independent projects on the same machine.
Evidence from session JSONL logs
Session 1 — nah project
# Last assistant turn before exit (Mar 27, 16:17 UTC):
cache_read_input_tokens: 348,388
cache_creation_input_tokens: 225
# First assistant turn after resume (Mar 28, 17:16 UTC):
model: <synthetic> (for /exit response)
input_tokens: 0, cache_read_input_tokens: 0
# First real model call after resume (17:18 UTC):
input_tokens: 3, cache_read_input_tokens: 31,727
# (31k = system prompt + CLAUDE.md + memory + skills only — no conversation history)
Session 2 — MCN WordPress project
# Last assistant turn before exit (Mar 25, 23:21 UTC):
cache_read_input_tokens: 434,086
# First turn after resume (Mar 28, 17:11 UTC):
model: <synthetic>
cache_read_input_tokens: 0
# First real model call:
cache_read_input_tokens: 0
Comparison
| | nah project | MCN WordPress project |
|---|---|---|
| Last turn before exit | 348,613 tokens | 434,086 tokens |
| First turn after resume | 0 tokens | 0 tokens |
| Session JSONL size | 17MB, 6,932 lines | 12MB, 7,408 lines |
| Summary events in log | 0 | 0 |
| Gap between sessions | ~25 hours | ~3 days |
In both cases, the UUID parent chain is unbroken across the session boundary — the resume correctly identified and connected to the previous session. But zero conversation content was loaded. No summary type events exist in either log.
Steps to Reproduce
- Work in a session over multiple days until context accumulates to 300k+ tokens (large JSONL, many log entries, background agents active)
- Exit with
/exit - Resume later with
--continueor--resume - Context usage shows ~3-4% (system overhead only) — previous conversation completely absent
- No compaction notification shown, no summary generated
Expected Behavior
Per documentation: "Your full conversation history is restored" on resume. The conversation history should have been loaded (or compacted into a summary and loaded).
Actual Behavior
Zero conversation history loaded. No summary generated. No error or warning. No compaction notification. Context starts fresh with only system overhead (~32k tokens). The user receives no indication that their conversation was not restored.
Environment
- Claude Code: 2.1.86
- Model: Opus 4.6 (1M context)
- Platform: Linux 6.17.0-14-generic
- Both sessions: long-running (multiple days), large JSONL files (12-17MB), 7000+ log entries, background agents active during sessions
Related Issues
- #3138 — similar symptom but triggered by usage limit hit
- #36751 — resume interfering with auto-compact on Opus 4.6 1M context
- #32861 — context lost after session resume
---
This issue was written by Claude Code.
This issue has 12 comments on GitHub. Read the full discussion on GitHub ↗