カテゴリー / 使い方の基本

Claude Codeの巻き戻し(/rewind)はどこまで戻せる? 戻せない操作とgitに任せる境界

この記事の目次

巻き戻しでは、コードと会話をどこまで戻せる?

戻せるのは、Claudeのファイル編集ツールによる編集と、会話の流れです。ただし、サブエージェントの編集やシンボリックリンクなどには例外があります。Bashコマンドで変更したファイルは追跡されず、Claude Codeの外や並行セッションでの編集も通常は戻りません。長く残したい履歴はgitに任せます。公式ページは、チェックポイントを「素早いセッション単位の復旧」のための仕組みと位置づけています。例外を含む判定は、後の表にまとめます。

巻き戻しメニューは、入力欄が空のときに /rewind を実行するか、Esc を2回押すと開きます。入力欄に文字が入っているときの Esc 2回は、メニューを開かず入力をクリアします。クリアした文は入力履歴に保存されるので、メニューでの操作が終わったあと Up キーで呼び戻せます。

チェックポイント(作業前の状態を記録した保存地点)は、ターンを始める指示を送るたびに1つ作られます。内部の仕組みはClaude Codeの仕組みの解説で扱っているため、この記事では「どこまで戻るか」に絞ります。

復元3種とSummarizeの選び方

コードと会話の両方を戻すなら「Restore code and conversation」、会話だけなら「Restore conversation」、ファイルだけなら「Restore code」です。戻さず文脈を軽くしたいときはSummarizeを選びます。

メニューに並ぶ項目は次のとおりです。表示は公式ページ(英語版)の記載で、日本語UIでの表記は確認していません。

メニュー項目 コード 会話 向いている場面
Restore code and conversation 選んだ時点まで戻る 選んだ時点まで戻る 指示そのものを最初からやり直したい
Restore conversation 現在のまま 選んだメッセージまで戻る 編集結果は残し、会話の流れだけ戻したい
Restore code 変更が戻る 現在のまま 会話の経緯は残し、ファイルだけ元に戻したい
Summarize from here / up to here 変わらない 要約される 戻すのではなく文脈を軽くしたい(次の節)
Never mind 変わらない 変わらない 何もせずメッセージ一覧に戻る

コード復元の2項目は、選んだチェックポイントに追跡済みのファイル変更があるときだけ表示されます。その時点以降にファイル編集が記録されていなければ、メニューには「Restore conversation」、要約の2項目、「Never mind」だけが並びます。

会話を復元した場合や「Summarize from here」を選んだ場合は、選んだメッセージの元のプロンプトが入力欄に戻ります。そのまま再送することも、書き換えて送り直すこともできます。元のセッションを保ったまま別の方法を試したいなら、巻き戻しではなく分岐の機能です。手順は/branchの解説にあります。

要約を選ぶのは、戻さず文脈を軽くしたいとき

会話が長くなって文脈を軽くしたいときに選びます。要約してもディスク上のファイルは変わらないので、コードの状態には影響しません。

Summarizeには範囲の違う2種類があります。

  • Summarize from here: 選んだ地点から後ろを要約に圧縮します。元のプロンプトが入力欄に戻ります。
  • Summarize up to here: 選んだ地点より前を要約に圧縮し、後ろのメッセージはそのまま残します。入力欄は空で、会話の末尾にとどまります。

どちらを選んでも、会話内の圧縮された位置に「Summarized conversation」というマーカーが表示されます。元のメッセージはセッションのトランスクリプト(会話の記録)に残るため、Claudeは詳細を参照できます。

要約の方針を指示したいときは、矢印キーでSummarizeの項目を選び、「add context (optional)」と表示された行に指示を入力して Enter を押します。数字キーで項目を選ぶと、指示なしですぐ実行されます。公式ページはSummarizeを「対象を絞った /compact」に近いものと説明しており、圧縮の仕組みそのものはコンテキストウィンドウの解説にまとまっています。

戻らない操作の一覧

Bashコマンドで変更したファイルは追跡されず、rewindでは元に戻せません。公式ページはその例として rm file.txt、mv old.txt new.txt、cp source.txt dest.txt を挙げ、追跡されるのはClaudeのファイル編集ツールによる直接の編集だけだと明記しています。

状況別の判定を、公式ページの記載範囲で1枚にまとめます。

状況 rewindで戻るか 戻す手段
Bashコマンドで変更したファイル(例: rm / mv / cp) 戻らない gitなど
サブエージェントの編集 原則戻らない gitで戻す
フォアグラウンドで動く context: fork のスキル 戻る(例外) 通常のrewind
手動編集、他の並行セッションの編集 通常は追跡されない(同じファイルを触っていた場合は例外) 手動、またはgit
シンボリックリンク、ハードリンク スキップされる Claudeに逆の編集を頼む、または自分で編集
ターン途中で送ったメッセージ そのメッセージ単独ではコードを戻せない ターンを始めたプロンプトを選ぶ
push、デプロイ、データベース変更など 公式ページに記載なし(未確認) 戻る前提にしない

表の補足です。

  • サブエージェント: 公式ページによると、context: fork のスキルをフォアグラウンドで動かした場合は通常どおり戻ります。フォアグラウンドで動かすには background: false を指定します。いくつかの状況ではこの設定に関わらずフォアグラウンドで動く、とされていますが、その一覧はスキルのページ側にあり、この記事では確認していません。バックグラウンドで動かしたスキル(既定)や /code-review --fix のバックグラウンド実行は戻りません。サブエージェント自体はサブエージェントの解説で扱っています。
  • リンク: スキップが起きると Restored the code, but skipped N files という警告が出ます。スキップされたファイルは現在の内容のままです。どのパスが対象になるかは、復元の前に /debug でデバッグログを有効にしておくと、~/.claude/debug/<session-id>.txt に各パスが記録されます。
  • ターン途中のメッセージ: Claudeの作業中にあなたが入力して送ったメッセージには「No code restore」の印が付くことがあります。そのターンの編集を戻したいときは、ターンを始めたプロンプトを選んで「Restore code」か「Restore code and conversation」を実行します。印の付いたメッセージを選んでも「Restore conversation」は使え、会話だけが戻ってファイルはそのままです。
  • 外部への作用: push、デプロイ、データベース変更が戻るかどうかは、公式ページに書かれていません。戻るものとして扱わないのが安全です。

戻らない操作に気づいたら、まず追加の編集を止めて、git status などで変更の有無を確かめるところから始めるとよいでしょう。これは公式の手順ではなく、この記事の提案です。戻らない操作を最初から起こしにくくする設定は、パーミッションモード、プランモード、サンドボックス設定の各解説で扱っています。

rewindとgitの境界

メインセッションでClaudeのファイル編集ツールが行った編集を取り消したいならrewindです。前節の表にある例外と、長く残したい履歴や共有が必要なものは、gitに任せます。

公式ページの記載は、「チェックポイントは素早いセッション単位の復旧のための仕組みで、恒久的な履歴管理と共同作業にはGitなどのバージョン管理を使い続ける」という趣旨です。ここから先は、この記事での整理になります。判断の目安は次の2点です。

  1. 対象が、現在のセッションでClaudeのファイル編集ツールが行った編集で、前節の表の例外(サブエージェント、リンク、並行セッションなど)に当たらないか。当たらなければrewindが使えます。
  2. 後から参照したい履歴や、他の人と共有する記録が必要か。必要ならgitで残します。

コミットの具体的な手順はgitとの連携の解説にまとめています。

戻れる期間と件数

セッションごとに、直近100件のチェックポイント分のファイルスナップショットが保持されます。既定では、セッションが最後にスナップショットを保存してから約30日で削除されます。

保持の条件は次のとおりです。

  • チェックポイントは会話とともに保存されるので、セッションを再開したあとでも /rewind を実行できます。
  • 古いチェックポイントを破棄すると、残りのチェックポイントから参照されなくなったスナップショットが削除されます。ただし、各ファイルの最初のスナップショットは残ります(公式ページによると、VS Code拡張がセッション差分の基準に使うため)。ここでは単純化して書いています。
  • 約30日の期限は設定項目 cleanupPeriodDays で変更できます。設定できる値の範囲は、確認できていません。
  • スナップショットが消えたチェックポイントへ戻そうとすると、No files were restored で失敗することがあります。

/clear で会話を消した後も、同じClaude Codeのプロセス内であれば戻れます。巻き戻しメニューの先頭に /resume <session-id> (previous session) という項目が加わり、これを選ぶと /clear の前に進めていた会話を再開できます。この項目は、Claude Codeを終了するか別のセッションを再開するまで使えます。対応するバージョンは公式ページに記載がないため、数字は挙げません。再開そのものの手順は作業が途中で止まったときの再開ガイドで説明しています。

まとめ

rewindが頼れるのは、Claudeのファイル編集ツールによる編集と会話までです。Bashで変更したファイルやサブエージェント、外部の編集はgitで守り、文脈を軽くしたいだけならSummarizeを選びます。

境界は読むだけでなく、手を動かして確かめると定着します。使い捨てのフォルダで、次の順に試してください。画面の表示は環境によって異なる可能性があるため、自分の画面で確認してください。

  1. 空のフォルダにテキストファイルをいくつか用意し、Claudeにその中身を編集させる。この編集を頼んだプロンプトを「プロンプトA」とする。
  2. /rewind を開き、プロンプトAを選んで「Restore code」を実行する。期待される状態は、プロンプトAの編集がファイルから取り消され、会話はそのまま残ることです。
  3. 手順2のあと、ファイルが編集前の状態に戻っていることを確かめてから、別のプロンプトで、Claudeにそのうちの1つをBashで削除または移動させる。このプロンプトを「プロンプトB」とし、ファイル編集ツールによる編集は頼まない。続けて /rewind を開き、プロンプトBを選ぶ。期待される状態は次のどちらかです。プロンプトBにはBash以外の追跡済み変更がないため、「Restore code」と「Restore code and conversation」が表示されないことがあります。表示されて実行した場合でも、Bashで削除や移動したファイルは戻りません。どちらの場合も「Restore conversation」は使えますが、戻るのは会話だけでファイルは変わりません。

手順2と3の結果を並べると、表の「戻る」と「戻らない」の差を自分の画面で確認できます。

こうした練習を続ける場として、月額1,980円からの学習コミュニティ「AI駆動ラボ」があります。Claude Codeを自分の手で使えるようになるために、仲間と学び合う場として運営されています。

確認日 2026-10-13 時点の公式ページ(Checkpointing)の記載にもとづきます。ページ内に更新日の表示はなく、後日変更される可能性があります。メニューの表示は英語版の記載で、日本語UIの表記は確認していません。