1.0.64
Checkpoints no longer snapshot your whole working directory. Every prompt ran git add -A against the current directory, so a checkpoint was sized by the directory rather than by what Claude edited. Started in a project that meant committing the tree each turn; started in $HOME it meant committing caches and application data, with no .gitignore to bound it. The shadow repo is keyed to the session file and separate shadow repos share no objects, so every new session wrote a further complete copy from scratch, which is how a day's sessions reached tens of gigabytes.
Checkpoints now cover only the files the session's edit tools touched, matching Claude Code's own rule that checkpointing tracks files edited within the session. On an 801-file directory with one file edited, a checkpoint captures one file instead of 502 and occupies 28 KB instead of 2.1 MB.
Two failures that silently ended checkpointing are fixed with it. An edit to an ignored file, a .env or a build artifact, left a pathspec git rejects in every later snapshot, and one rejected entry fails the whole staging step, so no further checkpoint was recorded for the rest of the session. A tracked file deleted between prompts did the same. Ignored files still stay out of the store even when edited.
Files changed by bash commands are no longer restorable through /rewind. That matches the documented limitation upstream, and is a change from the previous whole-directory snapshot: use git to revert those.
Also in this release: a connect race, Windows cancellation, hook validation and an OAuth crash; pi's agent directory resolved consistently; duplicated env, regex, model and settings helpers consolidated; and twenty-six test oracles strengthened or added, each against a named mutant.