Skip to main content

The question

Concretely — what does “separate state” look like in a real build?

The answer

Seven stores, each holding one kind of state — reassembled per turn.

Conversation history

JSONL · ~/.claude/projects/ Lets a session resume exactly where it left off

Task state

JSON · ~/.claude/tasks/ What’s actually checked each step, not the full history

Persistent memory

Markdown · project's memory/ Lessons carry into future sessions, not just this one

Subagent history

JSONL · nested under parent session Full exploration trail kept, without re-entering the parent’s context

File recovery

Snapshots · ~/.claude/file-history/ Undo an edit even if it was never committed to git

Configuration

settings.json Model/permissions persist without entering the reasoning context

Code

Stays in the repo — never copied into permanent model memory It’s the actual deliverable; a memory of it would go stale

Source

Observed in Claude Code’s local ~/.claude directory — The JSONL session logs are independently confirmed by community tooling; treat exact paths as the observed layout of a specific version, not a documented stable API.

Continue the walkthrough

Why not one blob

Continue to topic 5 of 14.