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つの復元モードの選択で迷うことがあります。以下のフローに沿って判断すると、適切なモードをすばやく選択できます。

復元モード選択フロー:ファイル変更の問題有無とClaudeの会話文脈のずれに応じた4つの復元モードの判断手順

判断に迷う場合は 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等で復元可能
用途セッション中の実験・素早い取り消し長期的な履歴管理・チーム開発

実践的なワークフローとしては、次のような流れが効率的です。

  1. 作業開始前にGitでブランチを切るgit checkout -b feature/xxx
  2. Claude Codeでコード生成・修正を行う(チェックポイントが自動記録される)
  3. 意図しない変更があればチェックポイントで巻き戻すEsc + Esc
  4. 納得できる状態になったらGitでコミットするgit commit

チェックポイントはあくまで「セッション内の実験用セーフティネット」であり、永続的な記録にはGitを使うという使い分けがポイントです。

中断したセッションを続きから再開する方法

ターミナルを閉じてしまった、PCを再起動した、といった場合でも、Claude Codeのセッションは自動的に保存されています。再開方法は状況に応じて4つあります。

claude --continueclaude -c)で直前のセッションを即再開

最も使用頻度が高い方法です。現在のディレクトリで最後に使ったセッションを即座に読み込みます。

claude --continue
# 短縮形
claude -c

前回のセッションの会話内容とコンテキストがそのまま復元されるため、中断した作業の続きからすぐに再開できます。

claude --resumeclaude -r)で過去のセッション一覧から選択

直前ではなく、数日前のセッションに戻りたい場合に使います。セッション名やIDを指定するか、引数なしで実行するとインタラクティブな選択画面が表示されます。

# セッション名を指定して再開
claude --resume "auth-refactor"

# 選択画面を表示
claude --resume

/resumeコマンドでセッション内から切り替え

既にClaude Codeを起動している状態で別のセッションに移りたい場合は、/resumeスラッシュコマンドが便利です。セッション一覧が表示され、そこから選択して再開できます。

Ctrl+Zfgで一時停止と復帰

Claude Codeを終了せずにシェルへ一時的に戻りたい場合は、Ctrl+Zでプロセスを一時停止し、fgで復帰できます。

# Claude Code実行中にCtrl+Zで一時停止
# シェルで必要な作業を実施
fg  # Claude Codeに復帰

この方法ではセッションが途切れないため、会話の文脈やチェックポイントがすべて維持されます。

過去の会話を検索・参照・エクスポートする

過去のセッションの内容を確認したい場合、Claude Codeには複数の手段が用意されています。

/exportで会話をファイルに書き出す

現在のセッションの会話内容をプレーンテキストとして出力します。

/export conversation.txt

ファイル名を省略するとクリップボードにコピーされます。後から読み返したい重要なセッションは、この方法で保存しておくと便利です。

Ctrl+Rで過去のプロンプト入力を検索する

Ctrl+Rを押すと、過去に入力したプロンプトの逆順検索(リバースサーチ)が起動します。bashのヒストリ検索と同様の操作感で、キーワードを入力すると該当するプロンプトが表示されます。

  1. Ctrl+Rを押して検索モードに入る
  2. 検索したいキーワードを入力する
  3. Ctrl+Rを繰り返し押すと古い候補に移動する
  4. TabまたはEscで選択を確定、Enterでそのまま実行

「前回うまくいったプロンプトをもう一度使いたい」という場面で特に役立ちます。

セッションデータの保存場所

Claude Codeのセッションデータは ~/.claude/projects/ ディレクトリ配下にJSONL形式で保存されています。プロジェクトディレクトリごとにサブフォルダが作成され、その中にセッションファイルが格納されます。

直接このファイルを参照することもできますが、通常はclaude --resume/resumeコマンドを使ったほうが効率的です。

/contextでコンテキスト消費量を確認する

長い会話を続けていると、コンテキストウィンドウの上限に近づくことがあります。/contextコマンドを実行すると、現在のコンテキスト使用量がカラーグリッドで視覚的に表示されます。上限に近い場合は後述する圧縮手法で対処します。

コンテキストを効率よく管理するテクニック

長時間のセッションではコンテキストウィンドウが埋まり、Claudeの応答品質が低下することがあります。以下の手法で効率的に管理できます。

Summarize from hereと/compactの違い

どちらもコンテキストを圧縮する機能ですが、対象範囲が異なります。

機能操作圧縮範囲元メッセージ
Summarize from hereEsc + 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.txtmv old.txt new.txtcp src.txt dst.txtGitから復元する(git checkout -- file.txt
手動でのファイル編集エディタで直接ファイルを変更した場合Gitから復元する、またはgit stashを活用する
外部プロセスによる変更別のターミナルや別のClaude Codeセッションからの編集Gitで差分を確認して対処する
本番環境へのデプロイ済み変更デプロイパイプラインで適用された変更デプロイ手順のロールバック機能を使用する

特にrmコマンドでファイルを削除された場合、チェックポイントでは復元できません。重要な作業の前にはgit addgit 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で消されたファイルを復元したいGitgit 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を使った開発の生産性は大きく変わります。