Claude Code は Esc を 2 回押すと巻き戻しメニューが開きます。コード復元から部分要約まで 5 つの選択肢があり、選んだ項目で消えるものが変わります。判断軸と落とし穴を整理しました。
Esc Esc が開く5択メニューの中身
5つのアクションと1つのキャンセル
公式ドキュメントの “巻き戻しと要約” セクションには、選択肢が 6 項目並びます。残すものと捨てるものの組み合わせが違います。
| アクション | コード | 会話 | コンテキスト圧縮 |
|---|---|---|---|
| コードと会話を復元 | 戻す | 戻す | なし |
| 会話を復元 | 現状維持 | 戻す | なし |
| コードを復元 | 戻す | 現状維持 | なし |
| ここから要約 | 現状維持 | 選択以降を要約 | あり |
| ここまで要約 | 現状維持 | 選択より前を要約 | あり |
/rewind でも同じメニューが開きます。キーバインドが効かない環境ではコマンドの方が安定します。
チェックポイントが切られるタイミング
チェックポイントは ユーザープロンプトごと に作成されます。Esc Esc で並ぶリストは、自分が何を頼んだかのログそのもの。巻き戻したい 1 手前を探すときは、Claude の応答ではなく自分のプロンプトを基準にします。
セッションをまたいで残る
チェックポイントはセッションをまたいで保持されます。claude --continue や claude --resume で再開した会話からも、以前のチェックポイントにアクセス可能。閉じてしまった後でも戻れる設計です。会話履歴の保存と同じく ~/.claude 配下に file-history として置かれ、保持期間内なら数日後の再開でもメニューに並びます。
「ここから要約」と「ここまで要約」を分ける判断軸
サイドディスカッションを切るなら「ここから要約」
“ここから要約” は選んだメッセージとそれ以降を圧縮し、それより前を完全な詳細で残します。初期に書いた CLAUDE.md の読み込み結果、設計判断のやり取り、ライブラリ調査のメモ。記事の前半に当たる「初期コンテキスト」を守りたい場合に使います。途中の試行錯誤で文脈が膨らんだ会話を圧縮しつつ、最初の方針合わせは詳細のまま残せます。
初期セットアップを圧縮するなら「ここまで要約」
“ここまで要約” は選んだメッセージより前を要約に置き換え、それ以降をそのまま残す動作。最近の実装作業に集中したい場合に効きます。Week 20 (v2.1.139–v2.1.142, 2026 年 5 月) で追加されました。リファクタリング作業の中盤以降、序盤のファイル一覧読み込みやスキャン結果を圧縮する用途に向いています。
/compactとの違い
/compact は会話全体を一括で要約します。rewind の要約系は 選んだ地点を境に片側だけ 圧縮できる点が違う。要約が焦点を当てるべき内容を入力フィールドに書いて指示することもでき、対象を絞った /compact として動きます。元のメッセージは要約後もセッショントランスクリプトに保持されるため、後から Claude が詳細を参照することも可能。
Bashで変更したファイルは巻き戻しの対象外
追跡されるのは Edit/Write 経由だけ
制限事項のうち、知らないと困るのが Bash 経由の変更を追跡しない点です。次のような操作はチェックポイントの監視外です。
rm log.txt
mv old.go new.go
cp template.yml service.yml
sed -i 's/old/new/' main.py
cat > config.yml << EOF
key: value
EOF
実行結果: ファイルは削除/移動/コピー/書き換えされる。
巻き戻しメニューから「コードを復元」を選んでも、これらの変更は元に戻らない。
ファイル生成スクリプトを Claude に走らせてから rewind したとき、Edit/Write で書いたコードは戻ったのに、bash の cp template.yml service.yml で生成された service.yml だけが残ったままになりました。テストを動かして「読み込まれているファイルが古い」と気づくまでに 5 分。Edit/Write の差分にしか目が向かないので、bash 生成物の存在を忘れます。
Edit/Write に揃えるか、git commit を挟む
巻き戻し対象に入れたい変更は、できるだけ Claude の Edit/Write ツール経由に揃える。書き換える前提のスクリプトを走らせる場合は、直前で git add -A && git commit -m "snapshot" を入れた方が安全です。Git のコミットで巻き戻し対象外の変更を回収し、必要なら git reset --hard で戻せます。
# 巻き戻し対象外のスクリプトを走らせる前に
git add -A && git commit -m "before scaffold"
# Claude にスクリプト実行を任せる
# 失敗したら
git reset --hard HEAD
実行結果: rewind ではなく git reset で生成物まで含めて戻る。
外部エディタの編集も追跡されない
VS Code や Vim で手動編集したファイルも、現在のセッションで Claude が同じファイルを編集していない限りチェックポイントに乗りません。同じファイルを Claude 側でも編集していれば取り込まれます。手作業の修正と並行作業させる場合は要注意です。
rewindと/compactと/clear、どれを使うか
4つの守備範囲を表で並べる
類似機能との分担を整理します。
| 機能 | 会話 | コード | コンテキスト | セッション ID |
|---|---|---|---|---|
| /rewind | 選択地点に戻す or 部分要約 | 選択次第で復元 | 圧縮可 | 同じ |
| /compact | 全体を要約 | 触らない | 圧縮 | 同じ |
| /clear | 破棄 | 触らない | リセット | 新規 |
| claude –continue –fork-session | 分岐 | 触らない | そのまま | 新しい分岐 |
使い分けの基準
同じ流れで続けたいが文脈だけ軽くしたい場合は /compact か rewind の要約系。試行錯誤に入る前の段階に戻したい場合は rewind の復元系。会話を完全に切り離したい場合は /clear。元の作業を残したまま並行で別案を試したい場合は --fork-session。コード側を戻すかどうかで、4 つの選択肢のうちどれに当たるかが先に決まります。
判断の流れ
運用上は次の順で考えると迷いません。コード差分を捨ててよいか確認 → 会話だけ残したいか両方戻したいか → コンテキストを圧縮する必要があるか。最初の問いに「いいえ」と答えた時点で、選択肢は要約系か fork-session に絞られます。
–fork-sessionと巻き戻しの分担
巻き戻しは上書き、forkは分岐
公式は巻き戻しメニューの注意書きで次のように案内しています。
要約はセッションを同じ状態に保ち、コンテキストを圧縮します。元のセッションを保持したまま異なるアプローチを試したい場合は、代わりに fork (claude –continue –fork-session) を使用してください。
巻き戻しは現在のセッションそのものを書き換えます。後で「戻し過ぎた」と思っても、戻したものを戻すのは難しい。複数案を並行で比較したい段階では、最初から fork を選ぶ。後から rewind してしまうと比較対象が消えます。
forkすべきケース、rewindでよいケース
失敗が確定していて巻き戻すだけなら rewind。アプローチを2つ試したくて両方を比較したいなら fork。1つの設計判断について「もし別の選択肢を取っていたら」を試すときも fork が向きます。fork は新しいセッション ID として記録されるため、ログ追跡もしやすくなります。
cleanupPeriodDaysとチェックポイント保持期間
デフォルトは30日
チェックポイントは セッション終了後 30 日 で自動的にクリーンアップされます。延ばしたい場合は settings.json で指定します。
{
"cleanupPeriodDays": 90
}
実行結果: ~/.claude 配下のセッション履歴・タスク・shell-snapshot・file-history が90日保持される。
v2.1.117 以降、この設定は単一キーで 4 つのオンディスクキャッシュ (transcripts, tasks, shell-snapshots, backups) を同じ日数で統一的に管理する仕様。チェックポイント単体ではなく、関連キャッシュ全体に効きます。グローバル設定にしたい場合は ~/.claude/settings.json、プロジェクト単位なら .claude/settings.json に書きます。
0を指定する落とし穴
cleanupPeriodDays: 0 は「クリーンアップを無効化する」と読めるところ、実際にはバリデーションエラーで弾かれます。長期保持したい場合は明示的に大きな数値 (60 や 90) を指定します。短くしてディスクを節約したい場合は 7 など小さな整数も指定できますが、その期間を過ぎた rewind は使えなくなる点に注意。
rewindメニューが出ないときの切り分け
キーバインドを取られていないか
ターミナル側やエディタ側で Esc 1 回が別の動作に割り当てられている場合があります。出ないときは /rewind を直接打つ。コマンドの方は確実に動きます。tmux の prefix や IME 確定キーと衝突しているケースが多めです。
チェックポイントの保持期間切れ
30 日経過したセッションは file-history が剪定されます。--continue で復帰してもメニューに過去ポイントが並ばない場合、保持期間切れの可能性が高い。cleanupPeriodDays を大きめに設定しておくと、しばらく放置したプロジェクトでも巻き戻し可能な状態が残ります。
セッション内で1度もエディットしていない
Edit/Write ツールが 1 度も呼ばれていないセッションでは、コード側の復元ポイントがありません。読むだけのセッションを巻き戻したくても、メニューに並ぶのは会話側の操作のみです。
まとめ
- Esc Esc または
/rewindで 5 択メニュー。コード / 会話 / 両方 / 前要約 / 後要約から選ぶ - “ここまで要約” は v2.1.139–v2.1.142 (2026 年 5 月) で追加。最近の作業を残したい場面で使う
- 追跡対象は Edit/Write ツール経由のファイル変更のみ。Bash と外部エディタの変更は戻らない
- 多案比較なら巻き戻しより
claude --continue --fork-session - 保持期間は
cleanupPeriodDaysで変更可。0 は不可、デフォルト 30 日

