Claude Codeのセッション復元は、クラッシュや再起動で途切れた会話を、continueやresumeというコマンドで呼び戻す標準機能です。ただし自動で戻る状態と、手動で渡し直す設定は公式ドキュメントで明確に分かれています。本記事は、この境界を踏まえた4段の手順で、中断した作業に戻る方法を整理します。検証環境は2026-07-28時点の公式ドキュメントです。

01Claude Codeのセッション復元でできること|3つの入口

Claude Codeのセッション復元がやっているのは、直前の会話をディスクから読み込み、新しいプロセスへ差し戻すことです。出典はClaude Code公式ドキュメント「Manage sessions」です。入口は3つあります。

コマンド対象探索範囲使う場面
claude --continue-c直前のセッション1件現在のディレクトリと/add-dirで追加した範囲同じ作業を毎朝続けるとき
claude --resume-rセッション選択ピッカー現在のワークツリー。Ctrl+Wで全ワークツリー、Ctrl+Aで全プロジェクトへ広げられるどのセッションか名前を思い出せないとき
claude --resume <名前>名前を付けたセッション1件同一リポジトリと配下のワークツリー名前で確実に呼び出したいとき

名前を付ける方法は3つあります。起動時に-nを渡す、セッション中に/renameを打つ、ピッカー内でCtrl+Rを押す、のいずれかです(出典: 同ドキュメント)。

Claude Codeのセッション復元の全体像:3つの入口から復元・再設定までの流れ Claude Codeでセッションを復元する流れを表す図。作業の中断(クラッシュ・再起動・/clearなど)から、continue・resumeの一覧・resumeの名前指定という3つの入口に分岐し、いずれもディレクトリまたは名前が一致するかを確認する。一致すれば「見つかる」となり復元へ進み、一致しなければ「見つからない」となり前の状態のまま留まる。復元後はさらに、会話履歴やアクティブなゴールなど自動で復元される状態と、権限モードや起動フラグなど渡し直しが必要な設定の2つに分かれ、後者は再設定してから作業を再開する。中断・入口の選択・復元・再設定という時間の流れを横方向に示す。 Claude Codeのセッション復元|中断から再設定までの流れ 中断 入口の選択 復元 再設定 作業の中断 クラッシュ・再起動・/clear ① continue claude -c ② resumeの一覧 claude --resume ③ resumeの名前指定 claude --resume <名前> ディレクトリ/名前が 一致するか? 見つかる → 復元へ進む 見つからない → 前の状態のまま 自動で復元される状態 ・会話履歴/モデル/エージェント ・アクティブなゴール/タスク 渡し直しが必要な設定 ・権限モード/--mcp-config ・/add-dir等の起動フラグ → 再設定してステップ4へ進む 見つからない場合は入口を選び直すだけ。渡し直しが必要な設定だけ、起動フラグで再度渡す。
Claude Codeのセッション復元の全体像を示すフロー図

復元の実体は、~/.claude/projects/以下に置かれたJSONL形式のトランスクリプトファイルです。プロジェクトごとのディレクトリの配下に、セッションIDをファイル名にして1行1メッセージで保存されます(出典: 同ドキュメント)。セッションIDはUUID形式で、550e8400-e29b-41d4-a716-446655440000のような文字列です。会話は終了を待たず、操作のたびに逐次書き込まれます。

02Claude Codeで会話を復元する前に確認する3つの前提

検証環境は、claude-opus-5・Claude Code v2.1.x・macOS 15・2026-07-28検証です。バージョンで挙動が変わる機能が多いため、先に確認します。

  • ディレクトリ:セッションIDでの検索は、起動したディレクトリとそのgit worktreeに限定されます(出典: 同ドキュメント)。別のディレクトリで探すと見つかりません。
  • バージョン:機能追加はバージョンで区切られます。バックグラウンドセッション表示はv2.1.144以降、/clear後に前の会話へ戻る行の表示はv2.1.191以降です
  • 権限モード:planモードとbypassPermissionsモードは、復元時に自動では引き継がれません(出典: 同ドキュメント)。使っていた場合は起動フラグか設定で再度有効化します

03会話を復元する手順4段|transcriptから呼び戻すまで

ステップ1|セッションを特定する

  • 入力:元の作業ディレクトリへcdし、claude --resumeを実行する
  • 確認:ピッカーに、探している会話の名前かタイトルが表示されるか
cd ~/projects/my-app
claude --resume

見つからない場合は、Ctrl+Wで同じリポジトリの全ワークツリーへ、Ctrl+Aで同じマシン上の全プロジェクトへ検索範囲を広げます(出典: 同ドキュメント)。

ステップ2|呼び戻す

  • 入力:ピッカーで選んでEnterを押す、または名前が分かっているなら直接コマンドへ渡す
  • 確認:会話履歴の最後のやり取りが、中断した内容と一致しているか
claude --resume auth-refactor

ステップ3|復元された状態を確認する

  • 入力:なし。起動直後の画面をそのまま読む
  • 確認:モデル・エージェント・権限モードが想定どおりか。/contextコマンドでも確認できる
状態復元されるか条件・注意
会話履歴(ツール呼び出し含む)される全文が復元される
モデル原則される廃止済みモデルや--model指定時は上書きされる
エージェント原則される元のディレクトリで見つからないと警告つきで既定に戻る
権限モード条件付きplanbypassPermissionsは毎回引き継がれない
アクティブなゴールされるターン数・タイマー・トークン基準はリセットされる
スケジュール済みタスクされる期限切れは対象外。バックグラウンドのBash・監視タスクは対象外
--mcp-config--settings--plugin-dir--fallback-modelされない復元のたびに渡し直す
/add-dirで追加したディレクトリされない起動フラグで渡し直す

(出典: Claude Code公式ドキュメント「Manage sessions」)

ステップ4|復元されなかった設定を渡し直す

  • 入力:元のセッションが使っていた--mcp-config--add-dirなどを、復元コマンドへ再度付ける
  • 確認:意図したMCPツールや、追加したディレクトリのファイルへアクセスできるか

settings.jsonsettings.local.jsonは起動のたびに再読み込みされます。この2つに書いた設定は、渡し直す必要がありません(出典: 同ドキュメント)。

04SessionStartフックと組み合わせて復元後に文脈を渡す設計

復元そのものはClaude Code本体の機能です。復元した直後に何を思い出させるかは、SessionStartフックで補えます(出典: Claude Code公式ドキュメント「Hooks」)。このフックは新規起動でも復元でも発火し、sourceフィールドで区別できます。

sourceの値発火するとき
startup新規セッション
resume--resume--continue/resume
clear/clear
compact自動または手動の要約
fork--fork-session/fork/branch

(出典: 同ドキュメント)

フックへの入力にもtranscript_pathが渡されるので、そのセッション自身の記録を読み返せます。

{
  "session_id": "abc123",
  "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "hook_event_name": "SessionStart",
  "source": "resume"
}

WEBMARKSは.claude/settings.jsonSessionStartのフックを3本登録しています(同ファイル実測・2026-07-28)。1本目は起動時に読む資料を読み込み、2本目はタスク台帳を読んで中断の疑いを提示し、3本目は定期実行の健全性を確認します。matcherを指定していないため、3本ともstartupresumeの両方で発火します。

{
  "hooks": {
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "python3 .claude/hooks/check-unfinished-tasks.py" }] }
    ]
  }
}

フックが読みにいく台帳そのものの項目設計や更新粒度は、この記事の範囲外です。粒度・更新タイミング・完了時の扱いは、別の記事で扱います。

05セッションの再開でつまずく3つの落とし穴

実際に運用すると、3つの誤解でつまずきます。

別ディレクトリで探してしまう誤りが最初です。あるディレクトリでセッションIDをコピーし、別のディレクトリへ移動してからclaude --resume <ID>を実行すると失敗します。エラー文は「No conversation found with session ID」です(出典: 同ドキュメント)。

原因は、IDでの検索が起動ディレクトリとそのgit worktreeに限定される仕様だからです。気づく手がかりは、エラー文にセッションIDがそのまま出る点です。

/rewindとの混同も起きます。/rewindは同じプロセス内でコードと会話を過去の一点まで巻き戻す機能です。プロセスをまたいだ復元とは別物です(出典: Claude Code公式ドキュメント「Checkpointing」)。checkpointは直近100件のスナップショットしか保持しません。

bashコマンドで書き換えたファイルは対象外なので、rmmvで消したファイルは/rewindでは戻せません。セッションを再開したあとに「rewindすれば直る」と考えて手を止めるのが典型的な失敗です。

「復元」「SessionStartフック」「/rewind」が届く範囲はどこまで違うか Claude Codeの復元・SessionStartフック・/rewindが対象とする範囲を、プロセス・セッション・チェックポイントの入れ子の枠で示す図。チェックポイントが最も狭くプロセスが最も広いという、本文にはない横軸を上部に添える。復元はプロセスをまたいでセッション層全体を呼び戻す矢印として、SessionStartフックは層の境界をまたぐたびに発火する点として、/rewindはチェックポイント層の内側だけで完結する短い矢印として描く。bashコマンドで書き換えたファイルはどの層の対象にもならないため、3つの枠の外側に対象外として置く。 LAYER 復元・SessionStartフック・/rewind、それぞれ届く範囲はどこか 本文にはない軸:対象が及ぶ範囲 狭い → 広い チェックポイント セッション プロセス プロセス(claude起動〜終了) セッション(トランスクリプト1本) clear等でも発火 チェックポイント (直近100件) /rewind 新しいプロセス起動 claude --resume 復元 セッションごと呼び戻す SessionStartフック 境界をまたぐたびに発火 対象外(3層のどれにも属さない) bashで書き換えたファイル (/rewindでも戻せない) 復元が戻すのはセッション層まで、/rewindはチェックポイント層の中だけ bashで書き換えたファイルは、その外側で対象外のまま
「復元」「SessionStartフック」「/rewind」の対象範囲を、プロセス>セッション>チェックポイントの入れ子の枠で描く境界図

/loopで始めたセッションが一覧に出ない件もつまずきどころです。/loopコマンドを最初のプロンプトにしたセッションは、v2.1.211以降ではピッカーの一覧から外れます(出典: 同ドキュメント)。定期実行用に作ったセッションをあとから手動で呼び戻そうとして見つからず、消えたと誤解する例があります。

06動作確認の方法|セッション復元が成功したと判定する基準

復元が成功したかどうかは、次の4点で判定します。

  1. 会話履歴の最後のやり取りが、中断した内容と一致しているか
  2. モデル名とエージェント名が、警告なしで元の設定と一致しているか。不一致なら警告が表示されます(出典: 同ドキュメント)
  3. bypassPermissionsなど復元されないモードを使っていた場合、起動フラグで再度有効化したか
  4. --mcp-config--add-dirなど、元のセッションが依存していた起動フラグを渡し直したか

この4点を満たしていれば、Claude Code本体の復元は完了です。

07FAQ

Claude Codeのセッション復元に、追加の設定は必要ですか

標準機能なので追加インストールは不要です。settings.jsonsettings.local.jsonは起動のたびに再読み込みされます。書いた設定を渡し直す必要はありません(出典: Claude Code公式ドキュメント「Manage sessions」)。

セッション復元とcheckpointの/rewindは何が違いますか

復元はプロセスをまたいで会話全体を呼び戻す機能です。/rewindは同じセッション内で、コードと会話を過去の一点まで戻す機能で、対象も保存件数も別です(出典: 同ドキュメント「Checkpointing」)。

復元したセッションの保存期間はどれくらいですか

既定は30日で、cleanupPeriodDaysという設定で変更できます(出典: 同ドキュメント)。保存場所自体もCLAUDE_CONFIG_DIRという環境変数で移動できます。

セッション復元を無効にすることはできますか

非対話実行では--no-session-persistenceフラグで1回分の記録を止められます。全体を止めたい場合はCLAUDE_CODE_SKIP_PROMPT_HISTORYという環境変数を使います(出典: 同ドキュメント)。