Session Loss Checker

Opened a Claude Code session and the history is blank? A transcript can exist on disk yet hold no conversation β€” the .jsonl file is left as a metadata-only stub with your user/assistant turns gone. This reads your real session logs and tells you which sessions kept their content and which lost it.

πŸ”’ 100% in your browser. Your logs are parsed locally with JavaScript and never uploaded β€” there is no server. Disconnect from the network and it still works.

1. Pick your session logs

They live in ~/.claude/projects/ (each project is a folder of .jsonl files; the file name is the session id). Select that folder, or drag in any .jsonl files.

or drag & drop .jsonl files here

2. How many sessions lost content

session (file id)linescontent turnsversionstatus

"content turns" = lines that are a real user, assistant, or queue-operation record. A file with lines but 0 content turns is a metadata-only stub: the sidebar shows it empty.

3. What this means

4. Stop losing work β€” regardless of the cause

Mirror your transcripts. Copy ~/.claude/projects/**/*.jsonl somewhere safe on a schedule, and skip the copy when the source is smaller than your backup β€” so an emptied stub never overwrites a good backup. If the originals are saved before they are emptied, the cause does not matter: you keep your work.
If you are being hit right now, fully relaunch β€” don't just upgrade. In the reported native-installer window (2.1.168–2.1.170, see #66486 / #66734) interactive sessions stub out while spawned/headless sessions persist fine, and the break can outlive an on-disk binary upgrade because it lives in a long-running process. Quitting all Claude Code instances and relaunching has restored persistence per those reports.
Check before you exit, not after. Once a session is a stub, the content is gone. The cheap habit is to glance at the history (or run this check) before you close a long session.
Honest caveat: this detects a symptom β€” a transcript with no user/assistant records β€” not a specific bug. The same empty-stub shape has been reported under more than one cause (an older writer regression in 2.1.144/2.1.145, #60984; and the native-installer window above), and the root cause of the recent one is still being investigated upstream. The value here is catching the loss and having a backup, which holds no matter which cause it is.

Catch the next silent loss automatically

cc-safe-setup is a free set of Claude Code safety hooks β€” one of them (session-persistence-verifier) runs this exact check every session and warns you the moment a turn finishes with zero persisted records, before you lose the thread. npx cc-safe-setup