Checkpointing
概要
Claude のファイル編集とコンバセーションの状態を自動で記録し、/rewind で以前の状態へ巻き戻す機能。セッション単位の復旧手段であり、バージョン管理の代替ではない。
仕様
チェックポイントの作成と保持
- ユーザーのプロンプトごとに新しいチェックポイントが作られる
- ファイルスナップショットはセッション内の最新 100 チェックポイント分を保持する
- 古いチェックポイントを破棄すると、残るチェックポイントから参照されないスナップショットファイルは削除される。ただし各ファイルの最初のスナップショットは削除されない(VS Code 拡張がセッション差分のベースラインに使うため)
- チェックポイントはコンバセーションとともに保存されるため、セッションを再開したあとでも
/rewindを実行できる - チェックポイントはセッションとともに 30 日後に削除される。期間は
cleanupPeriodDays設定で変更する
rewind メニュー
- 起動方法:
/rewindを実行する、またはプロンプト入力が空の状態でEscを 2 回押す - プロンプト入力にテキストがある場合、
Esc2 回はメニューを開かずに入力をクリアする。クリアしたテキストは入力履歴に保存され、Upで呼び戻せる - メニューにはセッション中に送信した各プロンプトが一覧される
選択できるアクション:
| アクション | 内容 |
|---|---|
| Restore code and conversation | コードとコンバセーションの両方をその時点へ戻す |
| Restore conversation | コードは現在のまま、コンバセーションだけをそのメッセージへ戻す |
| Restore code | コンバセーションは保ったまま、ファイル変更を元に戻す |
| Summarize from here | その時点以降のコンバセーションを要約に圧縮し、コンテキストウィンドウを空ける |
| Summarize up to here | その時点より前を要約に圧縮し、以降のメッセージはそのまま残す |
| Never mind | 何も変更せずメッセージ一覧へ戻る |
- コードを戻す 2 つの選択肢は、選択したチェックポイントに巻き戻す対象のファイル変更が記録されている場合にのみ表示される。記録が無い場合は Restore conversation / 要約 2 種 / Never mind のみ
- Restore conversation または Summarize from here の後、選択したメッセージの元のプロンプトが入力欄に戻される
- Summarize up to here の場合はコンバセーション末尾に留まり、入力欄は空になる
- いずれの要約でも、圧縮されたメッセージの位置に Summarized conversation のマーカーが表示される
/clear より前への巻き戻し
- 同一の Claude Code プロセス内で
/clearを実行済みの場合、rewind メニューの先頭に/resume <session-id> (previous session)という項目が追加される - この項目は Claude Code を終了するか別セッションを resume するまで利用でき、v2.1.191 以降が必要
- それ以前のバージョンでは
/resumeを実行して一覧から前のセッションを選ぶ
要約への指示
- 要約してもディスク上のファイルは変わらず、元のメッセージはセッションのトランスクリプトに残る
- Summarize の行を矢印キーで選択し、add context (optional) と表示された箇所に指示を入力して
Enterを押すと、要約の焦点を指定できる - 数字キーで選択した場合は指示なしで即座に要約される
制約・注意点
- bash コマンドによる変更は追跡されない。
rm/mv/cpなどで変更されたファイルは rewind で戻せない。追跡対象は Claude のファイル編集ツール経由の変更のみ - サブエージェントの編集は通常は復元されない。
- フォアグラウンドで動く
context: forkの skill は自分のターン中に作業ツリーを編集するため、通常どおり rewind で復元される(background: falseを設定するとフォアグラウンドで動く。設定に関わらずフォアグラウンドで動く状況もいくつかあり、facts/claude-code/skills.mdに挙げてある) - それ以外のサブエージェント(既定であるバックグラウンドの forked skill、バックグラウンドの
/code-review --fixを含む)の編集は復元されない。git で戻す
- フォアグラウンドで動く
- 外部の変更は追跡されない。 Claude Code の外で手作業で加えた変更や、並行する別セッションの編集は、同じファイルを触っていた場合を除き記録されない
- symlink / hard link は復元されない。 Restore code 系を選ぶと、追跡対象のうち symlink または hard link のパスはスキップされ
Restored the code, but skipped N filesの警告が出る。スキップされたファイルは現在の内容のまま残る- スキップされたパスを確認するには、復元前に
/debugでデバッグログを有効にする。~/.claude/debug/<session-id>.txtにスキップされたパスが記録される - v2.1.216 より前は、
/rewindは追跡パス上のリンク越しに書き込み・削除を行い、警告も出していなかった
- スキップされたパスを確認するには、復元前に
- バージョン管理の代替ではない。恒久的な履歴や共同作業には Git などを使う
関連
facts/claude-code/interactive-mode.mdfacts/claude-code/commands.mdfacts/claude-code/cli-reference.mdfacts/claude-code/sub-agents.mdfacts/claude-code/skills.mdfacts/claude-code/settings.md