Claude Codeの/rewind使い方|チェックポイントで巻き戻す手順

clon logo
📅 公開日: 2026年9月23日

Claude Codeで複数の実装方針を試している途中、直前の状態に一瞬で戻したくなったことはないでしょうか。結論から言うと、Claude Codeは会話のターンごとにコードとセッションの状態を自動でチェックポイントとして保存しており、/rewindコマンドひとつでコード・会話・その両方を選んで戻せます。ただし戻せる範囲には明確な線引きがあり、知らずに使うと「戻したつもりが戻っていない」という事故につながります。

この記事では、公式ドキュメントの記載にもとづいて、チェックポイントの自動追跡の仕組み、/rewindメニューの操作、要約(Summarize)による文脈圧縮、そして戻せないケース(Bashコマンド・サブエージェント・シンボリックリンクなど)までを順番に解説します。Claude Code自体の基本操作がまだの方は、先にClaude Codeの使い方ガイドを読んでから戻ると、セッションという言葉の意味がつかみやすくなります。

仮の例として、認証まわりのリファクタリングを8回のプロンプトに分けて進めていたところ、6回目の変更でテストが壊れたとします。この場合、/rewindメニューから5回目の時点を選び「Restore code and conversation」を実行すれば、コードと会話の両方を6回目の直前まで一気に戻せます。以下ではこの仮の例を軸に、メニューの各選択肢と注意点を具体的に見ていきます。

目次

Claude Codeのチェックポイントとは何か|自動追跡の仕組み

【完全無料】AI×SNSで成果を出す100大特典を受け取る

AIの使い方を、SNS運用の実務につなげたい方へ。LINEで特典の案内を受け取れます。

【完全無料】AI×SNSで成果を出す100大特典を受け取る

チェックポイントとは、ターンを開始するプロンプトを送信するたびにClaude Codeが自動で作成する、コードとセッション状態のスナップショットです。手動での保存操作は不要で、/rewindを使う時点まで意識する必要はありません。

公式ドキュメントは、Claude Codeが作業を進めているあいだのClaudeによるファイル編集を自動で追跡し、状況がおかしくなったときにすばやく元に戻したり、以前の状態まで巻き戻したりできると説明しています(Checkpointing)。ターンを開始するプロンプトを送るたびに新しいチェックポイントが作成され、直近100件のチェックポイントぶんのファイルスナップショットがセッション内に保持されます。

古いチェックポイントを破棄する際は、どのチェックポイントからも参照されなくなったスナップショットファイルが削除されますが、VS Code拡張機能がセッション内の差分表示の基準に使う「各ファイルの最初のスナップショット」だけは残ります。チェックポイントは会話そのものと一緒に保存されるため、セッションを再開したあとでも/rewindは機能します。

ただし保存されたスナップショットには保持期間があります。既定では、セッションが最後にスナップショットを保存してからおよそ30日後に、保持期間の掃除処理で削除されます。期限切れのチェックポイントへ戻そうとすると復元に失敗することがあり、保存期間を延ばしたい場合はcleanupPeriodDays設定を使います(設定方法は後述します)。

仮の例として、月曜日に触ったセッションを翌月まで放置し、1か月以上あとに/resumeで開いて/rewindを試みると、ファイルスナップショットがすでに削除されている可能性があります。この場合はメニュー自体は開けても、コードの復元だけ失敗することがあります。

/rewindメニューの開き方と一覧の見え方

/rewindメニューは、コマンド/rewindの実行、またはプロンプト入力欄が空の状態でEscキーを2回押すことで開く、セッション内の全プロンプトの一覧画面です。

入力欄に文字が残っている状態でEscを2回押すと、メニューではなく入力欄のクリアが優先されます。クリアされた文字は入力履歴に保存されるため、メニューを閉じたあとに矢印キーの上を押せば呼び戻せます。

メニューには、そのセッションで送信した各プロンプトが一覧表示されます。ただし、Claudeが処理を進めている最中に受け取ったメッセージ(後述するキュー経由で実行中のターンに合流したメッセージ)は一覧に含まれません。一覧から戻したい時点のプロンプトを選ぶと、実行できる操作の候補が表示されます。

仮の例として、10個のプロンプトを送ったセッションで/rewindを開くと、10行の候補が並びます。3番目の行を選択すると、その時点を基準にした操作メニューへ進みます。

3つの「Restore」オプションを使い分ける

Restore系の選択肢は、コードだけ戻す・会話だけ戻す・両方戻すの3種類で構成されており、選んだ時点以降にファイル変更が記録されている場合だけコードを戻す2つの選択肢が表示されます。

選んだプロンプトの時点までにトラッキング対象のファイル変更が記録されている場合、メニューには次の3つの選択肢が並びます(Checkpointing)。

オプション コードへの影響 会話への影響 向いている場面
Restore code and conversation 選んだ時点までファイルを復元する 選んだ時点まで会話も戻す 試した方針ごと丸ごとやり直したいとき
Restore conversation 現在のコードのまま変更しない 選んだ時点まで会話だけ戻す コードは今のままで、指示だけ出し直したいとき
Restore code 選んだ時点までファイルを復元する 現在の会話のまま変更しない 会話の流れは残しつつ、ファイルだけ失敗前の状態に戻したいとき

選んだチェックポイントにトラッキング対象のファイル変更が記録されていない場合、この2つのコード復元系の選択肢は表示されず、メニューには「Restore conversation」と要約系の選択肢、「Never mind」だけが並びます。「Never mind」を選ぶとメニューを閉じるだけで、何も変更されません。

「Restore conversation」または「Summarize from here」を選んだあとは、選択した時点で送っていた元のプロンプトが入力欄に復元されるため、そのまま再送信するか、内容を書き換えてから送れます。

仮の例として、認証方式をJWT案とセッションCookie案の2パターンで実装してみて、Cookie案のほうが要件に合っていた場合、JWT案を実装し始めた時点まで「Restore code and conversation」で戻せば、Cookie案の検討をやり直す前の状態にきれいに巻き戻せます。

要約(Summarize)でコンテキストを圧縮する2つの方法

要約は、選んだ時点より前または後の会話をまとめて圧縮し、コンテキストウィンドウの消費を抑えるための機能で、ファイルの内容自体は変更しません。

「Summarize from here」は選んだ時点より後の会話を圧縮して文脈の空きを作り、「Summarize up to here」は選んだ時点より前の会話を圧縮して、それより後のメッセージはそのまま残します。どちらを選んでも、元のメッセージはセッションの記録自体には残るため、Claudeは必要に応じて詳細を参照できます。

要約する範囲を指定したい場合は、矢印キーで「Summarize」の行を選び、「add context (optional)」と表示される欄に指示を入力してからEnterを押します。番号キーで直接選ぶと、指示なしですぐに要約が実行されます。

要約の指示文は、目的を一文で明確に書くほど狙った範囲だけを圧縮できます。指示文を短く的確に組み立てるコツはプロンプトのコツで扱っている考え方と共通しています。

公式ドキュメントは、この要約機能を、同じセッションにとどまったまま対象を絞った/compactのように文脈を圧縮するものと説明しています。元のセッションを保ったまま別の方針を試したい場合は、要約ではなく/branchやclaude --continue --fork-sessionを使う、と案内されています(Checkpointing)。

なお、要約時にCLAUDE.mdなどのメモリファイルやSkillの指示がどこまで残るかは、チェックポイントの仕様ではなく/compact側の仕様として別に定義されています。CLAUDE.mdの書き方自体を見直したい場合はCLAUDE.mdの書き方ガイドも参考になります。

仮の例として、原因が分かりにくいバグ調査で30回近いやり取りをした場合、原因を特定できた時点で「Summarize from here」を選び、「特定できたエラー原因と再現条件だけ残して圧縮して」と指示を入力すれば、それ以降のやり取りだけをコンパクトな要約に置き換えられます。

/clear後に前のセッションへ戻る方法(v2.1.191以降)

同じClaude Codeプロセス内で/clearを実行したあとでも、/rewindメニューの先頭に表示される「/resume <session-id> (previous session)」を選べば、クリア前の会話へ戻れます。

/clearはエイリアスとして/resetと/newでも呼び出せる、空の文脈で新しい会話を始めるコマンドです。名前を指定すると、その名前で以前の会話を/resumeの一覧に残せます。

同じClaude Codeプロセスの中で/clearを一度実行したあとに/rewindを開くと、通常のプロンプト一覧の先頭に「/resume <session-id> (previous session)」という行が追加で表示されます。これを選ぶと、/clearを実行する前に動いていた会話へ戻れます。このエントリはClaude Codeを終了するか、別のセッションを再開するまで表示され続けます(Checkpointing)。

この挙動にはClaude Code v2.1.191以降が必要です。それより前のバージョンでは、/resumeコマンドを実行してセッション一覧から以前の会話を選び直します。

仮の例として、雑談的な確認のために/clearで会話をリセットしたあと、直前まで議論していた設計方針の詳細を思い出したくなったとします。この場合、/rewindを開いて先頭の「previous session」の行を選べば、リセット前の会話をそのまま呼び戻せます。

チェックポイントが役立つ4つの典型シーン

公式ドキュメントは、複数案の比較・ミスからの復旧・機能の反復・コンテキストの解放の4つを、チェックポイントが特に役立つ場面として挙げています。

公式ドキュメントが挙げる典型的な場面は次の4つです(Checkpointing)。

  • 複数の実装方針を比較する: 実装を分岐点まで戻して、別のアプローチを最初からやり直せる
  • ミスからの復旧: バグや壊れた挙動を持ち込んだ変更を素早く取り消せる
  • 機能の反復: 動いている状態に戻せる安心感を持ったまま、細かいバリエーションを試せる
  • コンテキストの解放: 長くなったデバッグセッションの途中から要約し、最初の指示は保ったまま文脈の空きを作れる

この4つに共通するのは、いつでも動いている状態に戻れるという安心感を保ったまま試行錯誤できる点です。

仮の例として、UIのレイアウトを3パターン作って見比べたいとき、最初の状態でチェックポイントが残っているため、気兼ねなく1パターンずつ試してから一番良かった案だけを残せます。

Bashコマンドとhooksによる変更は追跡対象外

チェックポイントが追跡するのは、Claudeのファイル編集ツールによる直接の変更だけです。Bashコマンドが行ったファイル操作は追跡対象に含まれません。

公式ドキュメントは、Claudeがrm file.txtやmv old.txt new.txt、cp source.txt dest.txtのようなBashコマンドを実行した場合、それによるファイル変更は/rewindで元に戻せないと明記しています(Checkpointing)。追跡されるのは、あくまでClaude純正の編集ツールで行われた直接の変更だけです。

rm file.txt
mv old.txt new.txt
cp source.txt dest.txt

この3つは、公式ドキュメントに掲載されている、チェックポイントの対象外になる操作の例です。

この原則は、Bashコマンドを実行する仕組みであるhooksにもそのまま当てはまると考えられます。公式ドキュメントはhooks経由のファイル変更を個別には説明していませんが、Claude純正の編集ツール以外による変更は追跡されないという記載に照らすと、hooksがシェルコマンドで直接ファイルを書き換えた場合も、同じくチェックポイントの対象外になると見ておくのが妥当です。hooksの設定方法自体はClaude Codeのフック(hooks)の使い方で解説しています。

仮の例として、ビルド成果物を掃除するためにrm -rf dist/をClaudeに実行してもらったあと、実は必要なファイルが混ざっていたと気づいても、/rewindでは復元できません。この場合はgitの復元コマンドなど、別の手段でファイルを戻す必要があります。

サブエージェントとSkillの編集が戻らないケース

サブエージェントがClaudeの編集ツールで行った変更は、実行のされ方によって/rewindで復元できる場合とできない場合があります。

公式ドキュメントによると、サブエージェントもClaudeの編集ツールを使ってファイルを変更しますが、通常はその変更がセッションのチェックポイントに記録されません。復元できるかどうかは、そのサブエージェントがどう実行されたかで変わります。

context: forkを指定したSkillがbackground: falseでフォアグラウンド実行される場合、そのSkillは自分のターンの中で作業ツリーを直接編集するため、通常のチェックポイントと同じように/rewindで復元できます(Checkpointing)。Skillの実行設定についてはClaude CodeのSkillsの使い方で説明しています。

チームで同じSkillを共有したい場合は、単体のディレクトリとしてではなく、複数のSkillやコマンドをまとめたpluginとして配布する方法もあります。pluginの入れ方や自作の仕方はClaude Codeのプラグインの使い方で解説しています。

それ以外のサブエージェント、既定のバックグラウンドフォークや、バックグラウンドで実行した/code-review --fixを含む、が加えた変更は、/rewindでは復元されません。取り消したい場合は、gitで該当ファイルを個別に戻す必要があります。サブエージェント自体の使い分け方はClaude Codeのサブエージェント使い方にまとめています。

仮の例として、3つのサブエージェントへそれぞれ別モジュールのリファクタリングを並行で任せた場合、そのうち1つの変更だけ気に入らなくても、/rewindでそのサブエージェント分だけを選んで取り消すことはできません。gitで該当ファイルのdiffを確認しながら個別に戻す作業になります。

セッション外の変更とキュー中メッセージの扱い

チェックポイントが追跡するのは現在のセッション内で編集されたファイルだけで、セッションの外で加えた変更や、実行中のターンに合流したメッセージはチェックポイントの対象になりません。

Claude Codeの外で手動編集したファイルや、別の同時進行セッションによる変更は、通常はチェックポイントに記録されません(Checkpointing)。ただし、それらの変更が現在のセッションで編集中のファイルと同じファイルに触れている場合は結果的に影響を受けることがあります。

処理を進めているClaudeへ追加の指示をキューで送った場合、そのメッセージが実行中のターンに間に合って合流すると、新しいターンとしてではなく今のターンの一部として扱われます。この場合、会話には表示されますがチェックポイントは作成されず、/rewindメニューの一覧にも出てきません。合流せずにClaude自身の新しいターンとして送られたキューメッセージには、通常どおりチェックポイントが作成されます(Checkpointing)。

合流してしまったメッセージだけを取り消したい場合、そのメッセージ単体を狙って戻すことはできません。そのターンを開始したプロンプトまで/rewindで戻ると、メッセージが届く前にClaudeが行っていた作業も含めて、ターン全体が巻き戻ります。

仮の例として、Claudeが長い処理をしている最中に「ついでにこのファイルもフォーマットして」とキューで送ったメッセージが同じターンに合流した場合、そのフォーマット指示だけを取り消すことはできず、ターンの最初のプロンプトまで戻ることになります。

シンボリックリンク・ハードリンクは復元されない

/rewindでのコード復元は、シンボリックリンクやハードリンクになっているファイルパスをスキップし、それ以外の追跡対象ファイルだけを元に戻します。

「Restore code」または「Restore code and conversation」を選んだとき、Claude Codeは追跡対象のパスがシンボリックリンクまたはハードリンクだった場合、そのパスの復元をスキップし、「Restored the code, but skipped N files」という警告を表示します。スキップされたファイルは、現在の内容のまま変更されません(Checkpointing)。

この状態に当てはまりやすいのは、dotfileマネージャーがプロジェクトへシンボリックリンクとして配置している設定ファイルや、pnpmがハードリンクで配置しているファイルです。これらのファイルへセッション中に加えた変更を取り消したい場合は、Claudeに変更を元に戻すよう依頼するか、自分で編集し直す必要があります。

どのパスがスキップされたかを確認したい場合は、復元操作の前に/debugでデバッグログを有効にしておくと、~/.claude/debug/<session-id>.txtにスキップされた各パスが記録されます。

仮の例として、dotfilesをシンボリックリンクで管理しているプロジェクトで「Restore code and conversation」を実行すると、「Restored the code, but skipped 2 files」と表示され、リンクになっている設定ファイル2つだけが現在の内容のまま残る、という状況になります。

保存期間とcleanupPeriodDaysの設定方法

チェックポイントのファイルスナップショットは既定でおよそ30日後に自動削除され、cleanupPeriodDays設定でこの保持日数を変更できます。

セッションのファイルスナップショットは、保持期間の掃除処理によって、既定ではセッションが最後にスナップショットを保存してからおよそ30日後に削除されます。スナップショットが削除されたあとのチェックポイントへ復元しようとすると、ファイルの復元だけ失敗することがあります。

保持期間を変更したい場合は、settings.jsonのcleanupPeriodDaysを設定します。公式リファレンスによると、値の範囲は1以上の整数で、既定値は30です。0を指定すると検証エラーになるため、長期間保持したい場合は3650のような大きな値を指定します(Settings reference)。

{
  "cleanupPeriodDays": 20
}
保持したい期間の目安 cleanupPeriodDaysの値 備考
既定のまま(約30日) 設定しない settings.jsonに書かなければ既定値の30が使われる
短くしたい(約20日) 20 ディスク使用量を抑えたいプロジェクト向け
長く残したい(約10年) 3650 0は検証エラーになるため大きな整数を指定する

仮の例として、レビュー期間が3週間続く大型の機能開発では、既定の30日だとレビュー中に古いチェックポイントが消えてしまう恐れがあるため、cleanupPeriodDaysを45に設定して余裕を持たせる、といった使い方ができます。

チェックポイントとGitの役割分担

チェックポイントはセッション単位ですばやく元に戻すための仕組みであり、恒久的な履歴管理や共同作業にはこれまでどおりGitのコミットやブランチを使う役割分担になります。

公式ドキュメントは、チェックポイントをセッション単位のすばやい復旧のための機能と位置づけ、永続的なバージョン履歴や共同作業には引き続きGitのようなバージョン管理システムでコミットやブランチを使うよう案内しています(Checkpointing)。チェックポイントはセッションが終了・整理されると消えていく一時的な仕組みで、チーム全体で共有する履歴の代わりにはなりません。

実務での使い分けとしては、1つのセッション内の細かい試行錯誤は/rewindで管理し、まとまった単位で動くようになったらgit commitで正式な履歴に残す、という運用がシンプルです。Claude Codeの基本的な使い方全般はClaude活用の使い方でも整理しています。

仮の例として、新機能を実装するセッションの中で3回ほど方針を変えながら試作した場合、途中の分岐はすべて/rewindだけで管理し、最終的に動作を確認できた時点で1回だけgit commitする、という進め方がその一例です。

よくある質問(FAQ)

Q1. Claude Codeのチェックポイントは何件くらい保存されますか
セッション内で直近100件のチェックポイントぶんのファイルスナップショットを保持します。古いチェックポイントを破棄する際、他のどのチェックポイントからも参照されなくなったスナップショットは削除されますが、VS Code拡張機能が差分表示の基準に使う各ファイルの最初のスナップショットだけは残ります。
Q2. Bashコマンドやhooksが行った変更も/rewindで戻せますか
いいえ。チェックポイントが追跡するのはClaudeの編集ツールによる直接の変更だけで、rm・mv・cpなどBashコマンドによるファイル操作は対象外です。Bashコマンドを実行する仕組みであるhooksについても、同じ原則が当てはまると考えられます。hooksの設定方法はフック(hooks)の使い方で解説しています。
Q3. サブエージェントやSkillが加えた変更を/rewindで戻せますか
context: forkでフォアグラウンド実行されるSkillの変更は戻せますが、既定のバックグラウンドフォークを含むそれ以外のサブエージェントの変更は/rewindでは戻らず、gitで個別に取り消す必要があります。詳しい実行方式はサブエージェントの使い方とSkillsの使い方で説明しています。
Q4. チェックポイントの保存期間を延ばすにはどうすればいいですか
settings.jsonのcleanupPeriodDaysに、既定の30より大きい任意の日数を指定します。0は検証エラーになる仕様のため、長く残したいときは3650など大きめの整数を選びます。
Q5. /clearで会話をリセットした後、前の会話に戻れますか
同じClaude Codeプロセス内であれば、/rewindメニュー先頭の「/resume session-id (previous session)」を選ぶことで戻れます。この動作にはClaude Code v2.1.191以降が必要で、それより前のバージョンでは/resumeコマンドから以前のセッションを選び直します。
Q6. チェックポイントがあればgitのコミットは不要になりますか
いいえ。チェックポイントはセッション単位のすばやい復旧のための仕組みで、恒久的な履歴管理や共同作業には引き続きgitのコミットやブランチが必要です。Claude Codeの基本操作全体はClaude Codeの使い方ガイドにまとめています。

まとめ|チェックポイントは「戻せる範囲」を理解してから使う

Claude Codeのチェックポイントは、プロンプトを送るたびに自動でコードとセッション状態を保存し、/rewindひとつで巻き戻せる仕組みです。Restore系の3つの選択肢と要約系の2つの選択肢を使い分ければ、複数案の比較やミスからの復旧、長くなったセッションの整理まで、セッション内で完結させられます。

一方で、Bashコマンドやhooksが行った変更、既定実行のサブエージェントやバックグラウンドSkillの編集、セッション外の変更、シンボリックリンク・ハードリンクは/rewindの対象外です。これらはgitなど別の手段で管理する前提を持っておくと、「戻したつもりが戻っていない」という事故を避けられます。

保存期間はcleanupPeriodDaysで調整できますが、チェックポイントそのものはあくまでセッション単位の一時的な仕組みで、恒久的な履歴管理の代わりにはなりません。日々の試行錯誤はチェックポイントで、まとまった単位の記録はgitで、という役割分担を意識して使うのが実務的です。

このサイトは株式会社S.Lineが運営しています。記事内の店舗予約・LINE登録・講座の案内には、当社または当社が集客を担当するサービスの広告(PR)が含まれます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社S.Line 代表取締役。偏差値39から起業し、AIとSNSの活用で「普通の人」が成果を出す方法を発信。

目次