[BUG] /recap returns "Nothing to recap yet" immediately after resuming a brand-new session (recap state not persisted across resume)
Preflight Checklist
- [x] I have searched existing issues — the closest, #62254, is a different class (legacy sessions predating
/recap); this reproduces on a brand-new current-version session. - [x] Single bug report.
Bug Description
On a session created today on a current version (2.1.173 — not a legacy pre-v2.1.108 session), I closed it, immediately resumed, and ran /recap to get a summary — I'd left the session with a non-descriptive name and wanted a recap to rename it. It returned:
Nothing to recap yet — send a message first.
…despite the session having substantial multi-turn content. Sending any message regenerates the recap, but resume alone yields nothing — so /recap is unavailable for the one thing I resumed to do.
Steps to Reproduce
- Start a new
claudesession and have a real multi-turn conversation. - Exit.
- Resume it (
claude --resume/ picker). - Immediately run
/recapwithout sending a message. - Observe:
Nothing to recap yet — send a message first.
Expected: a recap of the session so far.
Likely Root Cause
Per #61998, the recap / post_turn_summary is render-only and is never persisted to the per-session JSONL (~/.claude/projects/<encoded-cwd>/<uuid>.jsonl). So a resumed process reloads the transcript with no recap state, and /recap has nothing to show until a new turn regenerates it in memory.
Suggested fix (either): persist recap state across resume, or have /recap fall back to generating from the existing transcript on demand when no in-memory recap state exists (this would also fix the legacy-session case in #62254).
Distinct From / Related
- #62254 (closed, not planned) — legacy sessions predating
/recap; different (mine is brand-new/current). - #61998 (closed, not planned) — identifies the exact mechanism (recap not persisted to JSONL), but framed as a feature request; this is the bug manifestation.
- #48084 — docs gap for
/recap+ resumption.
Environment
- Platform: macOS (darwin)
- Version: 2.1.173 (Claude Code)
- Terminal: N/A — data-persistence bug, terminal-independent