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.