Checkpointing / Rewind(チェックポインティング・リワインド)

仕組み・概念
Checkpointing / Rewind
チェックポインティング・リワインド
Claudeがファイルを書き換える直前の状態を自動で記録しておき、後からその地点まで巻き戻せるセッション内の仕組み。Claudeのファイル編集ツール経由の変更だけが記録対象で、黒い画面の文字コマンドで変えたファイルは対象外

Claudeにコードを何度も直してもらう中で「さっきの状態に戻したい」と思ったことがある人向け

Claudeにトップページやフォームを直してもらって関係ない場所まで崩れた、別案を試したいが出発点は残したい、長いデバッグ会話でClaudeの記憶を空けたい、といった場面で <code>/rewind</code> を叩いて崩れる直前の地点へ巻き戻す

Claude Codeにコードを直してもらっていると、頼んでないところまで一緒に書き換わって「あれ、おかしくなった」となる瞬間があります。そういうとき、さっきまでの状態にサッと戻すための仕組みがCheckpointingとRewindです。公式は「Claude Code automatically tracks Claude's file edits as you work」、つまり作業中のClaudeのファイル編集を自動で記録する、と説明しています。つまり、こちらが何もしなくても、編集の手前の状態が裏で記録され続けます。

戻したくなったら、巻き戻しメニューを開いて「あの地点」を選ぶだけ。これがRewind(巻き戻し)です。

噛み砕くと、編集のたびに自動で押される「セーブポイント」のこと

ゲームで進む途中にオートセーブが入って、ミスしても直前から再開できるのと同じ感覚です。Claudeがファイルをいじる前の状態が、その都度スナップ写真として残っていく。公式の言い方では「checkpointing automatically captures the state of your code before each edit」、各編集の前にコードの状態を自動でとらえる、です。

このセーブポイント1個1個がチェックポイントで、後から好きな地点を選んで戻れます。ここでひとつ大事な注意。これはあくまで今の作業中だけの巻き戻しで、Gitのような永久保存とは別物です。そこは後半の落とし穴でしっかり書きます。

大事な前提:記録されるのは「Claudeのファイル編集」だけ

勘違いしやすいのですが、これは画面で起きたこと全部を記録しているわけではありません。記録の対象は、Claudeがファイルを直接書き換えたときだけ。公式も「Only direct file edits made through Claude's file editing tools are tracked(Claudeのファイル編集ツール経由の直接編集だけが記録される)」と明言しています。

だから、後から「黒い画面の文字コマンド」でファイルを消したり動かしたりした分は記録されず、巻き戻せません。ここを最初に頭に入れておくと、後で「戻したのに戻ってない」と慌てずにすみます。

記録のルールは3つだけ覚えればいい

自動記録の挙動は、公式が箇条書きで3点に整理しています。難しくありません。

  • プロンプトを送るたびに1個できる。公式は「Every user prompt creates a new checkpoint」。つまりこちらが指示を1回送るごとに、新しいセーブポイントが1個積まれます。
  • セッションをまたいでも残る。「Checkpoints persist across sessions」とあり、一度会話を閉じて後から再開した会話でも、前のチェックポイントにアクセスできます。
  • 30日でセッションごと自動で消える。「Automatically cleaned up along with sessions after 30 days (configurable)」。永久保存ではなく、設定で日数は変えられます。

送るたびに増えて、30日で片付く。シンプルです。

「ブログのトップページ修正」を例に、実際の巻き戻しを見る

具体的な場面で追います。自分のブログのトップページをClaude Codeに直してもらっている最中、頼んでないナビメニュー(画面上部のリンク一覧)まで変わって表示が崩れた、というよくあるやつです。

ステップ1: トップページの修正を何度か頼んでいる

「見出しの文字を大きく」「余白をもう少し」と、何回かやり取りしながらClaudeに直してもらっています。送った指示の数だけ、裏でチェックポイントが積まれている状態です。

ステップ2: 関係ないナビメニューまで変わったと気づく

確認すると、頼んでもいないのに上のメニューのリンク並びが変わって、レイアウトがおかしい。どの指示で崩れたのかは、正直その場では分かりにくいものです。

ここで初心者がやりがちなのが、慌ててClaudeに「元に戻して」と日本語でお願いすること。これでも直る場合はありますが、確実なのは記録から巻き戻す方です。

ステップ3: 入力欄が空の状態でEscを2回押す

巻き戻しメニューを開きます。開き方は2つ。/rewind と打って送るか、入力欄に何も書いていない状態で Esc を2回押すかです。公式は「Run /rewind, or press Esc twice when the prompt input is empty」と書いています。

/rewind

ここで1個落とし穴。入力欄に文字が残っていると、Esc 2回はメニューを開かず「入力を消す」動作になります。打ちかけの文章があるなら、先に送るか消してから押すのが安全です。

ステップ4: メニューから「崩れる直前のプロンプト」を選ぶ

メニューには、このセッション中に自分が送った指示が時系列で並びます。公式いわく「The rewind menu lists each prompt you sent during the session」。この中から、ナビメニューが崩れる前に送った指示を選びます。

ステップ5: アクションを選ぶ(ここで6つから選べる)

地点を選ぶと、その地点に対して何をするか聞かれます。選択肢は6つ。

  • Restore code and conversation(コードと会話の両方を戻す): その地点までファイルも会話の記憶も巻き戻す
  • Restore conversation(会話だけ戻す): 会話をその地点に戻し、今のコードはそのまま残す
  • Restore code(コードだけ戻す): ファイルの変更だけ戻し、会話の記憶は残す
  • Summarize from here(ここから後ろを要約): 選んだ地点から後ろの会話を要約に圧縮して、Claudeの記憶の空きを増やす。手前は残る
  • Summarize up to here(ここまでを要約): 選んだ地点より前を要約に圧縮し、後ろのメッセージはそのまま残す
  • Never mind(やめる): 何も変えずにメッセージ一覧へ戻る。キャンセル用

ステップ6: 今回は「Restore code」を選ぶ

今回直したいのはファイルの中身だけで、これまでの会話の流れは活かしたい。なので「Restore code(コードだけ戻す)」を選びます。これでトップページのファイルが崩れる前の状態に戻り、Claudeとの会話はそのまま続けられます。

「会話も一緒に巻き戻したい」なら Restore code and conversation、「コードは今のまま会話だけ戻したい」なら Restore conversation。場面で選び分けられます。

つまりCheckpointing / Rewind は何をしてくれるのか

  • やってくれる: Claudeがファイルを直す前の状態を自動で記録し、後から好きな地点へ巻き戻す。コードだけ・会話だけ・両方、と戻し方も選べる
  • やってくれない: 黒い画面の文字コマンドで消した・動かしたファイルの復元、自分が手で直した分の復元、永久保存。これらは対象外
  • 意味が薄い場面: そもそもClaudeにファイルを編集させていない、ただ質問しているだけの会話。戻すべきファイル変更がないので出番がない

使いどころ3シナリオ

シナリオ1: 別のやり方を試したいけど、今の出発点は残したいとき

料理ブログのトップページのデザインで、A案とB案を両方試したい。まずA案を作ってもらい、気に入らなければチェックポイントで出発点に戻ってB案を試す。公式の使いどころ「Exploring alternatives(別案を試す)」がこれです。出発点を失わずに何度でも実験できます。

シナリオ2: バグを入れた・機能を壊した変更をサッと消したいとき

家計簿アプリの入力フォームを直してもらったら、保存ボタンが反応しなくなった。原因を探すより先に、壊れる前のチェックポイントへ戻すのが速い。公式の「Recovering from mistakes(ミスからの復帰)」です。直し方を考える前に、まず動いていた状態に戻せる安心感が大きいです。

シナリオ3: 長いデバッグ会話で、Claudeの記憶を空けたいとき

不具合の原因探しで会話が延々と続き、Claudeの覚えていられる量が苦しくなってきた。そんなときは途中の地点を選んで「Summarize from here(ここから後ろを要約)」。後半のやり取りを要約に圧縮して空きを作り、最初の指示はそのまま残せます。公式の「Freeing context space(記憶の空きを作る)」がこれです。

初心者が踏みやすい落とし穴

  • 黒い画面の文字コマンドで変えたファイルは戻らないrm file.txt でファイルを消したり、mv old.txt new.txt で名前を変えたり、cp source.txt dest.txt で上書きした分は記録されません。戻るのはClaudeのファイル編集ツール経由の変更だけ。「全部巻き戻せる」と思い込むと事故ります。
  • Gitの代わりにはならない。公式は「Think of checkpoints as local undo and Git as permanent history」、チェックポイントはローカルなundo、Gitは永久の履歴と考えよ、と言い切っています。長期の保存・履歴管理・チームでの共有はGit側の仕事です。
  • 入力欄に文字があると Esc 2回でメニューが開かない。文字が残っていると「入力クリア」動作になります。ただ消えた文字は履歴に残るので、巻き戻しを終えた後に Up キーで呼び戻せます。
  • restore と summarize は別物。restore系は状態を巻き戻し、summarize系は会話を要約に圧縮するだけでファイルは一切戻しません。Summarizeを選んでファイルが直ると思い込まないこと。
  • 自分の手動編集や別の会話での編集は基本追跡されない。今のセッションで編集したファイルが対象で、外で手で直した分や別の会話での変更は、同じファイルを巻き込んだとき以外は記録されません。
  • 30日で消える。チェックポイントはセッションと一緒に30日で自動削除されます(設定で日数変更可)。永久保存ではないので、残したい節目はGit側に記録しておくのが安全です。
  • /compact とは圧縮範囲が違う/compact は会話全体をまとめて要約しますが、Summarize from here / up to here は選んだ地点で片側だけを圧縮できます。残したい部分を細かく選べるのが違いです。

巻き戻しの本体である /rewind、その別名にあたる /checkpoint /undo の単独の使い方は /dictionary/rewind/ に、メニューを開く Esc 2回の操作そのものは /dictionary/esc-esc/ にまとめています。Summarizeで空けられる会話の量の話は /dictionary/context-window/ も合わせてどうぞ。

書き方

<code>/rewind</code>(または入力欄が空のとき <code>Esc</code> を2回)で巻き戻しメニューを開く

やってみるとこうなる

入力

/rewind

出力例

巻き戻しメニューが開き、このセッション中に送ったプロンプトが時系列で並ぶ。崩れる直前の地点を選ぶと、Restore code and conversation(コードと会話を戻す)/Restore conversation(会話だけ戻す)/Restore code(コードだけ戻す)/Summarize from here(ここから後ろを要約)/Summarize up to here(ここまでを要約)/Never mind(やめる)の6つから選ぶ

このページに出てきた言葉

チェックポイント
Claudeがファイルを書き換える直前の状態を記録したセーブポイント。後からその地点に戻れる
Rewind
記録しておいたチェックポイントの中から好きな地点を選んで、そこまで巻き戻すこと
セッション
Claude Codeを起動してから閉じるまでの、ひとまとまりの会話のこと
bashコマンド
黒い画面で打ち込む文字のコマンド。ファイルを消したり動かしたりもこれで行えるが、その分は巻き戻しの対象外
undo
直前の操作を取り消して元の状態に戻すこと。文章ソフトの「元に戻す」と同じ
バージョン管理
変更の履歴を記録・保存しておく仕組み。Gitが代表例で、節目ごとの保存やチームでの共有に使う

関連項目

公式ドキュメント

https://code.claude.com/docs/en/checkpointing

-

← 戻る