Claude Code rewindコマンドで/clear前まで戻る
/rewindでコードと会話をどこまで巻き戻せるか、/clear前の会話に戻る手順、bash変更やサブエージェント編集が復元されない限界を実例で扱います。
Claude Code rewindは何を元に戻せるコマンドか
Claude Codeはユーザーのプロンプトごとにチェックポイントを自動で作り、ファイル編集前の状態を記録しています。/rewindはそのチェックポイントを使って、コードと会話の両方、あるいは片方だけを、過去の任意の時点まで巻き戻すコマンドです。実装を試して失敗した、デバッグセッションが長くなりすぎてコンテキストを圧迫している、そもそも別のアプローチを試したい — こうした場面で、手動でのgit操作やコンテキストの手動整理なしに戻せます。
チェックポイントは会話とともに保存されるため、セッションを一度終了して--resumeで再開した後でも/rewindは使えます。直近100件のチェックポイントがセッションごとに保持され、それより古いものはどのチェックポイントからも参照されなくなった時点で破棄されます(各ファイルの最初のスナップショットだけはVS Code拡張機能がセッション差分の基準として使うため例外的に残ります)。セッションそのものは30日間のクリーンアップサイクルで削除され、それに伴いチェックポイントも消えます。保持期間はcleanupPeriodDays設定で変更できます。
コマンド一覧上では/rewindは「何かがおかしいときに使うコマンド」の1つに分類されていて、/checkpointと/undoという2つのエイリアスを持ちます。gitに慣れていて/undoと打ってしまっても、同じ挙動で動く仕組みです。
Claude Code rewindはどう使うか
/rewindを実行するか、プロンプト入力欄が空の状態でEscを2回押すと、rewindメニューが開きます。入力欄に文字が残っている状態でEscを2回押すと、メニューではなく入力のクリアが優先されます(クリアした文字は入力履歴に残るので、Upキーで呼び戻せます)。
メニューにはセッション中に送った各プロンプトが一覧表示され、戻したい時点を選んでからアクションを選びます。
| アクション | 何が起きるか |
|---|---|
| Restore code and conversation | 何が起きるかコードと会話の両方をその時点まで戻す |
| Restore conversation | 何が起きるかコードはそのまま、会話だけをその時点まで戻す |
| Restore code | 何が起きるか会話はそのまま、ファイルの変更だけを元に戻す |
| Summarize from here | 何が起きるか選んだ時点以降の会話を要約に圧縮し、コンテキストウィンドウの空きを作る |
| Summarize up to here | 何が起きるか選んだ時点より前の会話を要約に圧縮し、それ以降のメッセージはそのまま残す |
| Never mind | 何が起きるか何もせずメッセージ一覧に戻る |
実装を試して失敗したときはRestore code and conversationで両方を巻き戻し、別のアプローチを最初からやり直すのが早道です。ファイルは今の状態を保ちたいが会話の脱線だけ整理したいときはRestore conversation、逆にコードだけ元に戻して会話の流れは残したいときはRestore codeを選びます。デバッグセッションが長引いてコンテキストを圧迫してきたら、コードには触れずに要約2種で会話量だけを削れます。
コードの復元を含む2つの選択肢は、選んだチェックポイントに追跡済みのファイル変更があるときだけ表示されます。ファイル編集が記録されていない時点では、Restore conversationと要約系、Never mindだけが並びます。会話を復元するか、Summarize from hereを選ぶと、その時点で送った元のプロンプトが入力欄に復元されるので、そのまま再送するか編集できます。Summarize up to hereは会話の末尾にとどまったまま入力欄が空になり、圧縮された箇所には「Summarized conversation」のマーカーが表示されます。
要約オプションは矢印キーでハイライトした状態で「add context(optional)」の行に指示を打ち込み、Enterを押すと、その指示に沿って要約の焦点を絞れます。数字キーでオプションを選ぶと、指示なしでその場ですぐに要約が実行されます。要約はディスク上のファイルを変更せず、元のメッセージもセッションのトランスクリプトに残ったままなので、Claudeは圧縮後も細部を参照できます。
/clear前の会話にもrewindで戻れるのはなぜか
同じClaude Codeプロセス内で/clearを実行済みの場合、rewindメニューの先頭に/resume <session-id> (previous session)という特別な項目が追加されます。これを選ぶと、/clearで消したはずの直前の会話を再開できます。この項目はClaude Codeを終了するか、別のセッションを再開するまで表示され続けます。
この機能にはバージョン要件があります。Claude Code v2.1.191以降が対象で、それより古いバージョンでは/rewindのメニューにこの項目は出ません。代わりに/resumeを実行し、一覧から直前のセッションを手動で選ぶ必要があります。「/clearしたら会話が完全に消えた」という誤解は、このバージョン要件を知らないまま古い環境で試したことが原因であるケースが少なくありません。
そもそも/clearはコンテキストを空にするだけのコマンドで、Claude Codeは消したはずの直前の会話を裏側で保存し続けています。--nameや/renameで付けた名前は新しい会話にも引き継がれますが、AIが自動生成したセッションタイトルは引き継がれません。同じセッションを別々の端末から同時に--resumeすると、両方からのメッセージが1つのトランスクリプトに割り込んで混ざる点も、/rewindで過去に戻すときに紛らわしくなる要因なので覚えておいてください。
Claude Code rewindが元に戻せないものは何か
チェックポイントが記録しているのは「Claudeのファイル編集ツールによる変更」だけです。それ以外の変更は/rewindの対象外になります。
- bashコマンドによる変更:
rm・mv・cpのようなシェルコマンドでの変更は追跡されません。ファイル編集ツールを経由しない操作は巻き戻せないので、破壊的なbashコマンドの実行前にはgitのコミットを挟むのが安全です - サブエージェントの編集: サブエージェントによる通常の編集はチェックポイントに含まれません。例外は
context: forkのスキルをフォアグラウンド(background: false)で走らせた場合で、このときは自分のターン中に作業ツリーを直接編集するため通常どおり復元対象になります。それ以外(バックグラウンドで走るフォークスキルや、バックグラウンドの/code-review --fixを含む)はgitで手動revertするしかありません - セッション外の変更: Claude Code外で手動編集したファイルや、別の同時実行セッションによる変更は、たまたま同じファイルを現在のセッションが編集していない限り記録されません
- シンボリックリンク・ハードリンク:
/rewindはシンボリックリンクやハードリンクされたファイルを復元しません。Restore codeを選んでも該当パスはスキップされ、Restored the code, but skipped N filesという警告が出ます。ドットファイルマネージャーがシンボリックリンクで配置する設定ファイルや、pnpmがハードリンクで配置するファイルがこれに当たります。スキップされたパスは/debugで事前にデバッグログを有効にしておくと、復元後に~/.claude/debug/<session-id>.txtで確認できます
これらの限界から、/rewindはバージョン管理の代替ではなく、セッション内の即応的な巻き戻し手段という位置付けになります。恒久的な変更履歴や複数人での共同作業には、引き続きgitのコミット・ブランチを使う運用が前提です。
Claude Code rewindと/clear・/compact・/branchはどう使い分けるか
会話やコンテキストを整理する手段はいくつかあり、目的によって選ぶべきコマンドが変わります。
| 操作 | 何をするか | 使いどころ |
|---|---|---|
/rewind | 何をするか指定した過去の時点までコード/会話を巻き戻す、または要約する | 使いどころ実装を試して失敗した・別アプローチを試したい・コンテキストが膨らみすぎた |
/clear | 何をするか会話履歴を空にする(ファイルは変更しない) | 使いどころ新しいタスクに切り替えて過去の文脈を持ち込みたくないとき |
/compact | 何をするか現在の会話をその場で圧縮する | 使いどころセッションを続けたまま文脈量だけ減らしたいとき |
/branch | 何をするか元のセッションを保ったまま別セッションに分岐する | 使いどころ元の状態を壊さずに別のアプローチを並行で試したいとき |
/rewindの要約オプション(Summarize from here / up to here)は/compactに近い働きをしますが、「今の会話をその場で圧縮する」のではなく「過去の特定の時点を起点に圧縮する」という違いがあります。コンテキストウィンドウをどう節約するかの全体設計はClaude Codeのコンテキスト管理で扱っているので、/compactとの使い分けに迷ったらあわせて読んでください。元のセッションをそのまま保ちながら別の実装方針を試したいなら、/rewindで戻すのではなく/branchかclaude --continue --fork-sessionで分岐する方が、元の作業を失わずに済みます。
よくある質問
rewindメニューを開いたのにRestore codeの選択肢が出ません
選んだチェックポイントの時点でファイル編集が記録されていないと、コードの復元オプションは表示されません。会話だけが進んでファイル変更が無かった時点を選んでいる可能性が高く、Restore conversationか要約オプションだけが並びます。
bashで削除したファイルはrewindで復元できますか
できません。チェックポイントが追跡するのはClaudeのファイル編集ツールによる変更だけで、rmのようなbashコマンドでの削除・移動・コピーは対象外です。復元したい場合はgitの履歴から戻す必要があります。
rewind後にサブエージェントの編集は元に戻りますか
原則戻りません。フォアグラウンドで走るcontext: forkスキル(background: false)による編集だけが例外で、通常どおり復元対象になります。それ以外のサブエージェントやバックグラウンドで走るフォークスキル、バックグラウンドの/code-review --fixはgitで手動revertが必要です。
Restored the code, but skipped N filesと出たらどう調べますか
復元する前に/debugでデバッグログを有効にしておくと、~/.claude/debug/<session-id>.txtにスキップされたパスが個別に記録されます。復元後に警告だけを見てもどのファイルが対象か分からないので、シンボリックリンクやハードリンクを扱っているプロジェクトでは復元前にログを有効化する癖をつけておくと調査が早くなります。
/undoや/checkpointと打っても動きますか
動きます。/checkpointと/undoは/rewindのエイリアスで、どちらを打っても同じrewindメニューが開きます。gitのコマンド感覚で/undoと打ってしまっても迷わず使えるよう用意された別名です。
まとめ
/rewindはプロンプトごとの自動チェックポイントを起点に、コードと会話を個別または同時に巻き戻せるコマンドです。v2.1.191以降なら/clear前の会話にも/resume <session-id> (previous session)から戻れます。bashコマンドによる変更・大半のサブエージェント編集・シンボリックリンクは対象外なので、破壊的な操作の前にはgitのコミットを挟む、という前提を崩さないのが安全な使い方です。