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.
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
| session (file id) | lines | content turns | version | status |
|---|
"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.
~/.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.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.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