Claude Code はファイル編集のたびに自動でチェックポイントを保存する。何かまずいことが起きたとき、あるいは別のアプローチを試したいとき、/rewind でコード・会話・またはその両方をセッション内の任意の時点に戻せる。この記事ではチェックポイントの仕組み、すべてのリストアと要約オプション、追跡できないケース、実用パターンをまとめる。
チェックポイントの仕組み
Claude がファイル編集を行う結果になったユーザープロンプトのたびに、新しいチェックポイントが作成される。編集前の状態を保存するため、常にロールバックポイントがある。
主な特性:
- 自動 — オプトイン不要、常時動作
- セッションをまたいで持続 —
claude --resumeでも利用可能 - 30日保持 — 自動クリーンアップ(設定変更可)
- ファイル編集ツールのみ対象 — bash コマンドによる変更は追跡しない(後述)
Rewind メニューを開く
2通りの方法:
/rewind
または、プロンプト入力が空の状態で Esc を2回押す。
入力欄にテキストがある場合、
Esc2回はメニューを開かず入力をクリアする。クリアされたテキストは入力履歴に保存されるので、rewind 後に↑キーで呼び戻せる。
メニューにはセッション中に送った各プロンプトが一覧表示される。対象の時点を選んで、操作を選択する。
6つのオプション
コードと会話を復元
完全ロールバック。選択したメッセージ時点の状態にファイルと会話履歴の両方が戻る。元のプロンプトが入力欄に復元されるので、再送または修正して送れる。
Claude が完全に間違った方向へ進んでしまい、既知の正常状態から再スタートしたいときに使う。
会話を復元
会話をそのメッセージに巻き戻す。ファイルは現状のまま変更しない。
問題を別のアプローチで再挑戦したいが、ここまでのコード変更は残したいときに使う。
コードを復元
そのチェックポイント時点のファイル状態に戻す。会話履歴はそのまま残る。
Claude に議論の全文脈を見せつつ、不正な編集だけ取り消したいときに使う。
ここから会話を分岐(Fork)
選択したメッセージからの新しい会話ブランチを作成する。コード変更はそのまま残り、元のセッションも保持される。
リストアとは違い、分岐であり巻き戻しではない。今のコードを手放さずに別アプローチを試すときに使う。
コードの巻き戻しと同時にフォークしたい場合は、CLI で
claude --continue --fork-sessionを使う。
ここから要約(Summarize from here)
選択したメッセージ以降の会話を AI 生成の要約に圧縮する。選択より前のメッセージはそのまま残り、選択メッセージ以降が要約に置き換わる。
デバッグの往復で会話が長くなったとき、初期の指示とコンテキストを残しつつ後の冗長な部分を圧縮するのに使う。コンテキストウィンドウを節約できる。
ここまで要約(Summarize up to here)
選択したメッセージより前の会話を要約に置き換える。選択メッセージ以降はそのまま残り、会話の末尾にいる状態が続く。
序盤のセットアップ議論を圧縮しつつ、最近の作業は詳細なまま保ちたいときに使う。/compact に似ているが場所を指定できる点が違う。
どちらの要約オプションも、元のメッセージはセッションのトランスクリプトに保持される。要約の焦点を指定する任意の指示を渡すこともできる。
VS Code 拡張機能での Rewind
VS Code 拡張機能では、会話の任意のメッセージにカーソルを合わせると rewind ボタンが表示される。3つの選択肢:
- ここから会話を分岐 — 新しいブランチ、コードはそのまま
- ここまでコードを巻き戻す — ファイルを戻す、会話は残す
- 会話を分岐してコードを巻き戻す — 両方同時に実行
要約オプションを含む完全な6オプションメニューは、統合ターミナルの CLI で /rewind を実行すると使える。
重要な制限: Bash コマンド
チェックポイントは Claude のファイル編集ツールで変更されたファイルのみを追跡する。bash コマンドによる変更は追跡しない:
# これらはチェックポイントで追跡されない:
rm file.txt
mv old.txt new.txt
cp source.txt dest.txt
echo "data" >> config.json
Claude が bash でファイルを変更した場合、その変更は /rewind では元に戻せない。
破壊的な操作(データベースの削除、ファイルの削除、設定の上書き)については、チェックポイントで保護したい場合はシェルコマンドではなくファイル編集ツールを使うよう Claude に依頼するか、先に git でコミットしておく。
チェックポイントと Git の違い
| チェックポイント | Git | |
|---|---|---|
| スコープ | 現在のセッション | 全履歴 |
| 粒度 | プロンプトごと | コミットごと |
| 速度 | 即座 | ステージングとコミットが必要 |
| Bash 変更 | 追跡しない | 追跡する |
| コラボレーション | ローカルのみ | 共有可能 |
| 保持期間 | 30日 | 永続 |
チェックポイントは「セッション内のローカルアンドゥ」、Git は「保存すべきマイルストーンの永続履歴」として使い分けるのが自然だ。補完的な関係にある。
実用パターン
安全な探索
> auth モジュールを新しいトークン形式に対応させてリファクタリングして
リファクタリング結果がまずかったら /rewind → 「コードと会話を復元」→ 別のアプローチを試す。手動でひとつひとつ元に戻す必要がない。
長いセッション途中でのコンテキスト圧縮
デバッグが長引いてメッセージが数十件になった場合、コンテキストが逼迫する。/rewind を開いてデバッグが始まったメッセージを選択し、Summarize from here を選ぶ。やりとりが要約にまとまり、最初の指示とコードベースのコンテキストはそのまま残る。
リスクのある編集の前に分岐
破壊的な可能性のある操作を依頼する前に:
- 現在のメッセージ番号を確認
- Claude に実行を依頼
- 結果がまずければ
/rewind→ 変更前のメッセージから Fork conversation and rewind code
元の状態に戻りつつ、別のアプローチを試す新しいブランチが手に入る。
並行アプローチ(CLI)
CLI から claude --continue --fork-session を使えば同じセッションの並行ブランチを作れる。どちらを捨てることなく複数の実装を比較できる。
保持期間の設定
チェックポイントはデフォルトで30日後にセッションとともにクリーンアップされる。~/.claude/settings.json で変更できる:
{
"checkpointRetentionDays": 60
}
0 に設定すると保持期間なし(手動でクリアするまで保持)。
関連記事
- VS Code 拡張機能でのチェックポイント操作 — ホバーで使う rewind フロー
- セッション再開と —continue — 前のセッションを引き継ぐ方法
- Claude Code パターンをもっと見る