Keeping every Claude transcript

By default, Claude Code throws away your conversation history after thirty days. Not the account, not the code — the transcripts: the full record of every session, every message, every tool call and its result, sitting on your disk as JSONL under ~/.claude/projects/. A background sweep runs shortly after a session starts and deletes anything older than the cutoff. Nothing announces it. The sessions simply stop appearing in the /resume picker, and you find out the next time you go looking for one.

The cutoff is a setting, and it takes one line in ~/.claude/settings.json:

{
  "cleanupPeriodDays": 99999
}

The documented default is 30, the type is a whole number of days, and the minimum is 1 — 0 fails validation rather than meaning forever, which is why the number has to be absurd instead of zero.