【Claude Code 連載 第69回】チェックポイント — /rewind で戻れるもの、戻れないもの

スポンサーリンク
【Claude Code 連載 第69回】チェックポイント — /rewind で戻れるもの、戻れないもの 用語解説
【Claude Code 連載 第69回】チェックポイント — /rewind で戻れるもの、戻れないもの
この記事は約11分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

スポンサーリンク

背景

この連載では、Claude Codeの公式ドキュメントを1ページずつ読み解いていきます。公式ドキュメントは情報が網羅されている分、「結局どの機能を、どんな場面で使えばいいのか」は自分で考える必要があり、読むのに意外と時間がかかります。そこで、私が実務で使うために読み込んだ内容を「使う場面→実例コード」の順に整理して残していくことにしました。専門家の解説というより、一次情報を読んだ記録です。推測や動作を確認していない部分には、その都度そう書きます。

1. 一言でいうと何か

このページは、Claude が行ったファイル編集を自動で記録し、/rewind で以前の状態に戻す——チェックポイント機能の解説です。

前回(第68回)の /branch が「今の会話をコピーして別の道を試す」だったのに対し、こちらは「時間を巻き戻す」。公式ドキュメントも両者を明示的に区別しており、その線引きが本ページの読みどころです。

仕組みの核は1行です。チェックポイント機能は各ユーザープロンプト前のコード状態を自動的にキャプチャします。

つまりあなたがプロンプトを送るたびに、その直前の状態が1つ記録される。手動でスナップショットを取る操作はありません。原文はこれをセーフティネットと呼び、狙いを説明しています。野心的で大規模なタスクを実行する際に、いつでも以前のコード状態に戻ることができるという安心感を持って作業できます。

そして本ページで最も重要なのは、実は制限事項のほうです。結論を先に書きます。

チェックポイント機能は、bash コマンドで変更されたファイルを追跡しません。

**戻せるのはファイル編集ツールが触ったものだけ。**この境界を知らずに使うと、「巻き戻したのに直っていない」という事態になります。詳しくは構成3で扱います。

2. どういう場面で役立つか

原文が挙げるユースケースは4つです。

シーン1:代替案を試す

開始点を失わずに異なる実装アプローチを試します。

ただしここは前回の /branch と用途が重なります。原文自身が注記で使い分けを示しているので、後述します。

シーン2:ミスから回復する

バグを導入したり機能を破損させた変更をすばやく取り消します。

Claude に大きめの変更を任せたとき、コミット前の状態に戻す手段としてはこれが最短です。

シーン3:機能を反復する

動作状態に戻すことができるという確信を持って変更を試験します。

シーン4:コンテキストを空ける

これは巻き戻しとは別系統の機能です。冗長なデバッグセッションを中間地点から要約し、初期指示を保持します。

チェックポイントのメニューには「復元」だけでなく「要約」も入っており、コンテキストウィンドウの管理ツールとしても使えます。

不要・向かないケース

  • bash で消したファイルを戻したい。前述のとおり追跡されません。
  • エディタで手作業した変更を戻したい。****Claude Code の外部で手動で行ったファイルの変更や、他の同時セッションからのエディットは、通常キャプチャされません。(例外は後述)
  • **長期の履歴管理や共同作業に使いたい。**原文が明確に否定しています。チェックポイントは適切なバージョン管理を補完しますが、置き換えるものではありません。
  • 元のセッションを残したまま別案を試したい。それは巻き戻しではなく分岐の仕事です。要約はセッションを同じ状態に保ち、コンテキストを圧縮します。元のセッションを保持したまま異なるアプローチを試したい場合は、代わりに fork(claude --continue --fork-session)を使用してください。
  • **100個より前のチェックポイントに戻りたい。**Claude Code はセッション内の最新100個のチェックポイントのファイルスナップショットを保持します。
  • 30日以上前のセッションから戻りたい。****セッション終了後30日後に自動的にクリーンアップされます(設定可能)。——第68回で見た cleanupPeriodDays と同じ既定値です。

3. 操作と挙動の解説

このページに含まれるコードブロックは1つだけです。しかもそれは「これは追跡されない」という反例として置かれた bash コマンドの並びです。実行を勧めるコードではありません。以下では、メニューの選択肢と挙動を整理します。

前提:クリア済み会話を越えて戻る機能は Claude Code v2.1.191 以降が必要です。スナップショットの掃除挙動は v2.1.208 で変わっています(後述)。

何が記録されるか

**Claude Code は、ファイル編集ツールで行われたすべての変更を追跡します。**記録の性質は4点にまとめられています。

  • ユーザープロンプトごとに新しいチェックポイントが作成されます
  • Claude Code はセッション内の最新100個のチェックポイントのファイルスナップショットを保持します。
  • チェックポイントはセッションと共に保存されるため、再開したセッションでも /rewind で戻ることができます
  • セッション終了後30日後に自動的にクリーンアップされます(設定可能)

3つ目が実務上ありがたい点です。セッションを閉じても、再開すればチェックポイントは生きています。

掃除の挙動には例外が1つあり、これがバージョンで変わりました。古いチェックポイントを破棄すると、残りのチェックポイントが参照しないスナップショットファイルが削除されます。ただし、各ファイルの最初のスナップショットは除外されます。これは VS Code 拡張機能がセッション diff のベースラインとして使用します。そしてv2.1.208 より前では、これらの置き換えられたスナップショットファイルはセッションがクリーンアップされるまでディスク上に残っていました。

「各ファイルの最初のスナップショット」だけは消さずに残す——第42回で扱った VS Code 拡張のセッション diff が、これに依存しています。

メニューを開く

/rewind を実行するか、プロンプト入力が空の状態で Esc キーを2回押して、巻き戻しメニューを開きます。

ここに小さいが実用的な注記があります。**プロンプト入力にテキストが含まれている場合、ダブル Esc はメニューを開く代わりにテキストをクリアします。**ただし消えっぱなしではありません。クリアされたテキストは入力履歴に保存されるため、巻き戻しメニューを終了した後に Up キーを押して呼び出すことができます。

**書きかけを消してしまっても Up で戻る。**知らないと焦る挙動です。

6つの選択肢

巻き戻しメニューには、セッション中に送信した各プロンプトが表示されます。操作したいポイントを選択してから、アクションを選択します。

アクション効果
コードと会話を復元コードと会話の両方をそのポイントに戻します
会話を復元現在のコードを保持しながら、そのメッセージに巻き戻します
コードを復元会話を保持しながら、ファイルの変更を戻します
ここから要約このポイント以降の会話を圧縮して要約し、コンテキストウィンドウスペースを解放します
ここまで要約このポイント前の会話を要約に圧縮し、後のメッセージはそのまま保持します
キャンセル変更を加えずにメッセージリストに戻ります

コードと会話を独立に戻せるのがこの機能の設計上の要点です。「会話は残したいがコードだけ戻したい」「コードはこのままで会話だけ戻したい」の両方が選べます。

操作後の入力欄の状態も定義されています。会話を復元または「ここから要約」を選択した後、選択したメッセージからの元のプロンプトが入力フィールドに復元されるため、再送信または編集できます。一方「ここまで要約」を選択すると、会話の最後に留まり、入力フィールドは空になります。

**戻ったら、そのときのプロンプトが入力欄に用意されている。**言い直して再送信する導線がそのまま作られています。

復元と要約は別物

混同されやすいので、原文は独立した節を立てています。

復元オプションは状態を戻します。コード変更、会話履歴、またはその両方を取り消します。要約オプションは、ディスク上のファイルを変更せずに、会話の一部を AI 生成の要約に圧縮します。

**要約はファイルに一切触りません。**コンテキストを縮めるだけです。

2つの要約の向きの違いは、こう整理されています。

ここから要約——選択したメッセージより前のメッセージはそのまま保持されます。選択したメッセージとそれ以降のすべてのメッセージは、要約に置き換えられます。用途はサイドディスカッションを破棄しながら、初期コンテキストを完全な詳細で保持する場合。

ここまで要約——選択したメッセージより前のメッセージは、要約に置き換えられます。選択したメッセージとそれ以降のすべてのメッセージはそのまま保持され、会話の最後に留まります。用途は初期セットアップディスカッションを圧縮しながら、最近の作業を完全な詳細で保持する場合。

「どちらを残したいか」で選ぶわけです。設計の意図を初期側に置きたいなら「ここから要約」、直近の作業を守りたいなら「ここまで要約」。

そして安心材料が1つ。どちらの場合も、元のメッセージはセッショントランスクリプトに保持されるため、Claude は必要に応じて詳細を参照できます。要約はコンテキストウィンドウから外すだけで、記録そのものは消えません。

**要約が焦点を当てるべき内容をガイドするためのオプション指示を入力できます。**その位置づけも明快です。これは /compact に似ていますが、対象を絞ったものです。会話全体を要約する代わりに、選択したメッセージのどちらの側を圧縮するかを選択します。

第68回で見た /compact が「全体を潰す」のに対し、こちらは片側だけを潰す。使い分けの軸はそこです。

/clear を越えて戻る

第68回で「/clear は破壊的ではない」と書きましたが、その復帰経路の1つがここに定義されています。

同じ Claude Code プロセスの前の段階で /clear を実行した場合、巻き戻しメニューはリストの最上部に /resume <session-id>(前のセッション) というラベルの追加エントリを表示します。これを選択して、/clear が実行される前にアクティブだった会話を再開します。

有効期間に制限があります。このエントリは Claude Code を終了するか別のセッションを再開するまで利用可能であり、Claude Code v2.1.191 以降が必要です。それ以前のバージョンや、条件を外れた場合は/resume を実行してリストから前のセッションを選択します。

**クリア直後なら Esc Esc から1手で戻れる。**プロセスを閉じると、この近道は消えます。

追跡されないもの(1)— bash

原文が唯一提示するコードブロックが、これです。たとえば、Claude Code が以下を実行する場合:

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

これらのファイル変更は巻き戻しで取り消すことはできません。Claude のファイル編集ツールで行われた直接的なファイルエディットのみが追跡されます。

第62回のツールリファレンスで見たとおり、Claude Code にはファイル編集専用のツール群と、Bash ツールがあります。チェックポイントが見ているのは前者だけです。

実務上の含意ははっきりしています。削除・移動・生成をシェル経由でやらせた作業は、/rewind の守備範囲外です。危険な操作をシェルで走らせる前には、Git 側で退避しておく必要があります。

追跡されないもの(2)— 外部の変更

チェックポイント機能は、現在のセッション内で編集されたファイルのみを追跡します。Claude Code の外部で手動で行ったファイルの変更や、他の同時セッションからのエディットは、通常キャプチャされません。

ただし例外が1つ付いています。ただし、現在のセッションと同じファイルを変更する場合は除きます。

つまりそのセッションが一度でも触ったファイルなら、外部の変更も巻き添えで戻る可能性があるという読み方になります。第63回の worktree や第65回のバックグラウンドセッションのように、複数セッションが同じチェックアウトを共有していると衝突しうる箇所です。ここは原文の記述が短く、どこまでが保証された挙動なのかはこのページからは判断できません。並列セッションで巻き戻す前は、対象ファイルの状態を自分で確認したほうが安全です。

バージョン管理の代わりではない

原文が節を立てて釘を刺しています。**チェックポイントは、クイックなセッションレベルの復旧用に設計されています。**永続的な履歴とコラボレーションには——

  • バージョン管理(例:Git)を引き続き使用してコミット、ブランチ、長期履歴を管理します
  • チェックポイントは適切なバージョン管理を補完しますが、置き換えるものではありません
  • チェックポイントを「ローカル取り消し」、Git を「永続履歴」と考えてください

3つ目の比喩が的確です。**チェックポイント=Ctrl+Z、Git=履歴。**保持は100件・30日で、bash もシェル外の変更も見ていない以上、これに永続性を期待するのは設計と用途がずれています。

4. まとめ + 次回予告

  • チェックポイントは各ユーザープロンプトの直前のコード状態を自動記録する。手動操作は不要。
  • 開くのは /rewind か、入力欄が空の状態でのダブル Esc。テキストがあるとそちらのクリアが優先され、消えた文は Up で戻せる。
  • メニューの選択肢は6つ。コードと会話は独立して戻せる。
  • 復元はファイルを戻し、要約はファイルに触らない。要約は「ここから」「ここまで」でどちら側を潰すかを選ぶ。元のメッセージはトランスクリプトに残る。
  • 要約は対象を絞った /compact。全体ではなく片側だけを圧縮する。
  • /clear の直後なら、巻き戻しメニュー最上部の /resume <session-id>(前のセッション) から戻れる(v2.1.191 以降、プロセスを閉じるまで)。
  • 保持は最新100チェックポイントセッション終了後30日(設定可能)。各ファイルの最初のスナップショットだけは、VS Code のセッション diff 用に残る。
  • 再開したセッションでも /rewind は使える。
  • 最大の制限は2つ。bash コマンドによる変更は追跡されないrmmvcp は戻らない)。Claude Code 外や他セッションの変更も、原則追跡されない。
  • **チェックポイントは「ローカル取り消し」、Git は「永続履歴」。**役割が違う。
  • 別案を試したいだけなら、巻き戻しではなく**分岐(claude --continue --fork-session)**が正解(第68回)。

次回予告(暫定):今回の「要約」機能と第68回の /compact がともに指していた**コンテキストウィンドウ(context-window)**を取り上げ、何がコンテキストを埋めるのか、圧縮後に何が残るのかを扱う予定です。


よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました