Where Claude Code stores session history
Claude Code writes local session transcripts under ~/.claude/projects/. Project directories contain session JSONL files; a custom configuration directory can change the base path. Each line is a separate JSON record, not one large JSON document. A transcript can contain messages, tool calls, results and administrative records.
# List transcript files without printing their contents
find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/projects" -type f -name '*.jsonl'Use the file timestamps and session identifiers to find the relevant run. Do not assume that alphabetical file order is conversation order or that every JSONL file is a main-agent session. See Anthropic’s session storage and continuity documentation.
Resume a conversation or inspect a completed run
# Continue the most recent session in the current directory
claude --continue
# Choose an earlier session
claude --resumeResume when you want Claude to keep working. To review evidence without generating another response, open the transcript in the Claude Code session viewer. Choosing a file in that viewer parses it in your browser; it does not upload the transcript.
- Open the viewer and choose the relevant
.jsonlfile. - Search for the request, a tool name or an error string.
- Read the tool input together with its result and the following assistant response.
- Use the timeline to locate the surrounding work; export the parsed JSON if you need a portable copy.
What history can and cannot recover
A final answer does not describe all failed commands or retries. A transcript provides those records when they were saved. It cannot recover files that were deleted, unrecorded tool output or a separate subagent transcript you have not loaded.
Compaction changes the context available to later model turns. A transcript and the model’s current context are therefore not interchangeable. Preserve the original file before applying cleanup or retention changes.
If a session appears incomplete, check that you selected the right project, that the process finished flushing records, and whether child-agent files exist alongside the main session. The subagent debugging guide explains why a parent’s returned summary is not the full child conversation.
Connect history to cost and ongoing monitoring
Use the Claude Code cost and usage tracker to inspect recorded token usage. Its list-price estimate is not a subscription invoice, and missing usage fields are not proof of zero cost.
For sessions you want collected automatically, set up Claude Code monitoring. Review redaction and sharing settings before syncing: local files can contain code, prompts, command output and secrets. Existing token-bearing share links are unlisted, not permission to publish the transcript to search engines.