Claude Codeで長時間の作業中にAIが想定外のコード変更をした、ターミナルを閉じて前のセッションが見つからない、数日前に試した実装パターンを確認したい――こうした「過去の状態に戻りたい」という場面は日常的に発生します。
Claude Codeには、チェックポイント(コード状態の巻き戻し)、セッション管理(会話の再開・フォーク)、会話ログ(履歴の検索・出力)という3つの仕組みが組み込まれています。それぞれの役割と使いどころを把握しておけば、状態復元で手間取ることはほぼなくなります。
米国のエンジニアコミュニティでは、チェックポイントを活用した「恐れない実験(Fearless Experimentation)」というワークフローが広まっています。これは「いつでも戻せるなら、大胆にコードを変えてみよう」という考え方です。本記事では日本の開発現場でもすぐ使える形で、この考え方と具体的な操作手順を整理します。
チェックポイントでコードと会話を任意の時点まで巻き戻す
チェックポイント(Checkpointing)は、Claude Codeがファイルを編集するたびに自動でスナップショットを記録する仕組みです。ユーザーがプロンプトを送信するたびに新しいチェックポイントが作成され、30日間保持されます(保持期間は設定で変更可能)。手動での保存操作は不要で、セッションを再開(resume)した場合でも過去のチェックポイントにアクセスできます。
チェックポイントの呼び出し方
巻き戻しメニューを開くには、次の2つの方法があります。
Escキーを2回押す(Esc+Esc)/rewindコマンドを入力する
どちらの操作でも同じメニューが表示され、チェックポイントの一覧から復元先を選択できます。
5つの操作アクションと使い分け
メニューで選択できるアクションは以下の5種類です。
| アクション | 効果 | 代表的な利用場面 |
|---|---|---|
| Restore code and conversation | コードファイルと会話の両方を選択した時点に復元する | AIが誤った変更を加え、会話の文脈も乱れた場合 |
| Restore conversation | 会話だけを巻き戻し、コードは現在の状態を維持する | コードは正しいがAIの認識がずれている場合 |
| Restore code | コードだけを復元し、会話はそのまま維持する | 手動で追加修正した後にコードだけ戻したい場合 |
| Summarize from here | 選択した地点以降の会話を要約に圧縮する | コンテキストウィンドウを節約したい場合 |
| Never mind | 何もせずメニューを閉じる | 誤って開いた場合 |
Summarize from hereは/compactコマンドとは異なり、会話全体ではなく特定の地点以降だけを要約に置き換えます。元のメッセージはトランスクリプト(ログ)に残るため、後から/exportで確認することも可能です。
どの復元モードを選ぶべきかの判断手順
チェックポイントメニューを開いたとき、3つの復元モードの選択で迷うことがあります。以下のフローに沿って判断すると、適切なモードをすばやく選択できます。

判断に迷う場合は Restore code and conversation を選ぶのが安全です。会話とコードを同時に復元すれば、Claudeの認識とファイルの実態が一致した状態からやり直せます。
コンテキスト汚染の見分け方
米国のClaude Codeコミュニティでは、Claudeの会話コンテキストが誤った方向の議論で埋まった状態を「コンテキスト汚染(Poisoned Context)」と呼んでいます。以下の兆候が出たら、Restore conversationまたはRestore code and conversationで文脈をリセットすることを検討してください。
- Claudeが存在しないコードやファイルに言及し始める
- 以前の会話で決定した方針と矛盾する提案を繰り返す
- 一度却下したアプローチを何度も提示する
- 20メッセージ以上やり取りしても進捗がない
こうした状態に陥ったままプロンプトを重ねても改善しにくいため、早めにチェックポイントで巻き戻すほうが結果的に時間を節約できます。
チェックポイントとGitはどう使い分けるか
チェックポイントはGitの代替ではなく、補完的な位置付けです。公式ドキュメントでも「Checkpointをローカルアンドゥ、Gitを永続履歴と考えてください」と明記されています(出典: Claude Code公式ドキュメント)。
| 観点 | チェックポイント | Git |
|---|---|---|
| 記録タイミング | プロンプト送信ごとに自動 | git commitで手動 |
| 対象範囲 | Claude Codeのファイル編集ツールによる変更のみ | リポジトリ全体 |
| 保持期間 | 30日(設定変更可) | 永続 |
| 共有 | 個人のセッション内のみ | リモートリポジトリで共有可能 |
| bashコマンドの変更 | 追跡不可 | git checkout等で復元可能 |
| 用途 | セッション中の実験・素早い取り消し | 長期的な履歴管理・チーム開発 |
実践的なワークフローとしては、次のような流れが効率的です。
- 作業開始前にGitでブランチを切る(
git checkout -b feature/xxx) - Claude Codeでコード生成・修正を行う(チェックポイントが自動記録される)
- 意図しない変更があればチェックポイントで巻き戻す(
Esc+Esc) - 納得できる状態になったらGitでコミットする(
git commit)
チェックポイントはあくまで「セッション内の実験用セーフティネット」であり、永続的な記録にはGitを使うという使い分けがポイントです。
中断したセッションを続きから再開する方法
ターミナルを閉じてしまった、PCを再起動した、といった場合でも、Claude Codeのセッションは自動的に保存されています。再開方法は状況に応じて4つあります。
claude --continue(claude -c)で直前のセッションを即再開
最も使用頻度が高い方法です。現在のディレクトリで最後に使ったセッションを即座に読み込みます。
claude --continue
# 短縮形
claude -c
前回のセッションの会話内容とコンテキストがそのまま復元されるため、中断した作業の続きからすぐに再開できます。
claude --resume(claude -r)で過去のセッション一覧から選択
直前ではなく、数日前のセッションに戻りたい場合に使います。セッション名やIDを指定するか、引数なしで実行するとインタラクティブな選択画面が表示されます。
# セッション名を指定して再開
claude --resume "auth-refactor"
# 選択画面を表示
claude --resume
/resumeコマンドでセッション内から切り替え
既にClaude Codeを起動している状態で別のセッションに移りたい場合は、/resumeスラッシュコマンドが便利です。セッション一覧が表示され、そこから選択して再開できます。
Ctrl+Z → fgで一時停止と復帰
Claude Codeを終了せずにシェルへ一時的に戻りたい場合は、Ctrl+Zでプロセスを一時停止し、fgで復帰できます。
# Claude Code実行中にCtrl+Zで一時停止
# シェルで必要な作業を実施
fg # Claude Codeに復帰
この方法ではセッションが途切れないため、会話の文脈やチェックポイントがすべて維持されます。
過去の会話を検索・参照・エクスポートする
過去のセッションの内容を確認したい場合、Claude Codeには複数の手段が用意されています。
/exportで会話をファイルに書き出す
現在のセッションの会話内容をプレーンテキストとして出力します。
/export conversation.txt
ファイル名を省略するとクリップボードにコピーされます。後から読み返したい重要なセッションは、この方法で保存しておくと便利です。
Ctrl+Rで過去のプロンプト入力を検索する
Ctrl+Rを押すと、過去に入力したプロンプトの逆順検索(リバースサーチ)が起動します。bashのヒストリ検索と同様の操作感で、キーワードを入力すると該当するプロンプトが表示されます。
Ctrl+Rを押して検索モードに入る- 検索したいキーワードを入力する
Ctrl+Rを繰り返し押すと古い候補に移動するTabまたはEscで選択を確定、Enterでそのまま実行
「前回うまくいったプロンプトをもう一度使いたい」という場面で特に役立ちます。
セッションデータの保存場所
Claude Codeのセッションデータは ~/.claude/projects/ ディレクトリ配下にJSONL形式で保存されています。プロジェクトディレクトリごとにサブフォルダが作成され、その中にセッションファイルが格納されます。
直接このファイルを参照することもできますが、通常はclaude --resumeや/resumeコマンドを使ったほうが効率的です。
/contextでコンテキスト消費量を確認する
長い会話を続けていると、コンテキストウィンドウの上限に近づくことがあります。/contextコマンドを実行すると、現在のコンテキスト使用量がカラーグリッドで視覚的に表示されます。上限に近い場合は後述する圧縮手法で対処します。
コンテキストを効率よく管理するテクニック
長時間のセッションではコンテキストウィンドウが埋まり、Claudeの応答品質が低下することがあります。以下の手法で効率的に管理できます。
Summarize from hereと/compactの違い
どちらもコンテキストを圧縮する機能ですが、対象範囲が異なります。
| 機能 | 操作 | 圧縮範囲 | 元メッセージ |
|---|---|---|---|
| Summarize from here | Esc + Esc → チェックポイント選択 | 選択地点以降の会話のみ | トランスクリプトに保持 |
| /compact | /compact [指示] | 会話全体 | 要約に置換 |
「序盤の議論は残しつつ、途中の試行錯誤だけ圧縮したい」場合はSummarize from hereが適しています。「会話全体をリフレッシュしたい」場合は/compactを使います。/compactにはオプションで指示文を渡せるため、「型定義に関する議論を重点的に残して」のように圧縮のフォーカスを指定することも可能です。
/forkで会話を分岐させる
現在の会話を分岐(フォーク)して、別のアプローチを試すことができます。
/fork experimental-approach
元の会話は変更されないため、実験的な変更を試した後に元のセッションに--resumeで戻ることも可能です。CLIからフォークする場合は--fork-sessionフラグを使います。
claude --continue --fork-session
CLAUDE.mdにプロジェクト情報を記録して次のセッションに引き継ぐ
セッション間で永続的に共有したい情報は、プロジェクトルートのCLAUDE.mdファイルに記録するのがClaude Codeのベストプラクティスです。新しいセッションを開始するたびにClaude Codeはこのファイルを自動的に読み込むため、プロジェクトの規約・アーキテクチャ方針・よく使うコマンドなどを書いておくと、毎回説明し直す手間が省けます。
/memoryコマンドで直接編集することもできます。
チェックポイントが機能しない場面とその対策
チェックポイントは万能ではありません。以下の場面では別の手段で対処する必要があります。
| 追跡できない変更 | 具体例 | 対処方法 |
|---|---|---|
| bashコマンドによるファイル操作 | rm file.txt、mv old.txt new.txt、cp src.txt dst.txt | Gitから復元する(git checkout -- file.txt) |
| 手動でのファイル編集 | エディタで直接ファイルを変更した場合 | Gitから復元する、またはgit stashを活用する |
| 外部プロセスによる変更 | 別のターミナルや別のClaude Codeセッションからの編集 | Gitで差分を確認して対処する |
| 本番環境へのデプロイ済み変更 | デプロイパイプラインで適用された変更 | デプロイ手順のロールバック機能を使用する |
特にrmコマンドでファイルを削除された場合、チェックポイントでは復元できません。重要な作業の前にはgit addとgit commitでスナップショットを取っておくことが、最も確実なセーフティネットになります。
認証情報や環境変数に関する注意
Claude Codeがbashコマンドで環境変数を変更したり、設定ファイルを書き換えたりした場合、その変更はチェックポイントに記録されません。.envファイルや認証トークンなど、機密性の高い情報を含むファイルの変更は事前にバックアップを取っておくことを推奨します。
状態復元の全体像 – 場面別リファレンス
最後に、よくある場面ごとに最適な復元手段をまとめます。
| 困っている状況 | 最適な手段 | コマンド・操作 |
|---|---|---|
| AIが壊したコードを元に戻したい | チェックポイント | Esc + Esc → Restore code and conversation |
| コードは良いがAIの認識がおかしい | チェックポイント | Esc + Esc → Restore conversation |
| ターミナルを閉じてしまった | セッション再開 | claude --continue |
| 数日前のセッションに戻りたい | セッション再開 | claude --resume |
| 過去のプロンプトを再利用したい | プロンプト検索 | Ctrl+R |
| 会話内容を保存しておきたい | 会話エクスポート | /export filename.txt |
| コンテキストが一杯になった | コンテキスト圧縮 | /compact または Summarize from here |
| bashで消されたファイルを復元したい | Git | git checkout -- filename |
| 別のアプローチを試したい | フォーク | /fork または --fork-session |
まとめ
Claude Codeで過去の状態に戻すための仕組みは、大きく3つに分類できます。
- チェックポイント: プロンプト送信ごとに自動記録、
Esc×2 または/rewindで呼び出し、コード・会話・両方の3モード+要約から選択して復元 - セッション管理:
claude --continueで直前のセッションを即再開、claude --resumeで過去のセッション一覧から選択、/forkで会話を分岐 - 会話ログ:
/exportでテキスト出力、Ctrl+Rでプロンプト履歴検索、~/.claude/projects/配下にJSONL形式で自動保存
bashコマンドによるファイル操作や手動編集はチェックポイントの追跡対象外のため、作業の区切りでGitコミットを挟むワークフローを組み合わせることが重要です。
チェックポイントがあることで「失敗しても戻せる」という安心感が生まれ、大胆なリファクタリングや実験的な実装にも踏み込みやすくなります。状況に応じた復元手段の選択に慣れれば、Claude Codeを使った開発の生産性は大きく変わります。
