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/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指定時は上書きされる |
| エージェント | 原則される | 元のディレクトリで見つからないと警告つきで既定に戻る |
| 権限モード | 条件付き | plan・bypassPermissionsは毎回引き継がれない |
| アクティブなゴール | される | ターン数・タイマー・トークン基準はリセットされる |
| スケジュール済みタスク | される | 期限切れは対象外。バックグラウンドのBash・監視タスクは対象外 |
--mcp-config・--settings・--plugin-dir・--fallback-model | されない | 復元のたびに渡し直す |
/add-dirで追加したディレクトリ | されない | 起動フラグで渡し直す |
(出典: Claude Code公式ドキュメント「Manage sessions」)
ステップ4|復元されなかった設定を渡し直す
- 入力:元のセッションが使っていた
--mcp-configや--add-dirなどを、復元コマンドへ再度付ける - 確認:意図したMCPツールや、追加したディレクトリのファイルへアクセスできるか
settings.jsonとsettings.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.jsonにSessionStartのフックを3本登録しています(同ファイル実測・2026-07-28)。1本目は起動時に読む資料を読み込み、2本目はタスク台帳を読んで中断の疑いを提示し、3本目は定期実行の健全性を確認します。matcherを指定していないため、3本ともstartupとresumeの両方で発火します。
{
"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コマンドで書き換えたファイルは対象外なので、rmやmvで消したファイルは/rewindでは戻せません。セッションを再開したあとに「rewindすれば直る」と考えて手を止めるのが典型的な失敗です。
/loopで始めたセッションが一覧に出ない件もつまずきどころです。/loopコマンドを最初のプロンプトにしたセッションは、v2.1.211以降ではピッカーの一覧から外れます(出典: 同ドキュメント)。定期実行用に作ったセッションをあとから手動で呼び戻そうとして見つからず、消えたと誤解する例があります。
06動作確認の方法|セッション復元が成功したと判定する基準
復元が成功したかどうかは、次の4点で判定します。
- 会話履歴の最後のやり取りが、中断した内容と一致しているか
- モデル名とエージェント名が、警告なしで元の設定と一致しているか。不一致なら警告が表示されます(出典: 同ドキュメント)
bypassPermissionsなど復元されないモードを使っていた場合、起動フラグで再度有効化したか--mcp-config・--add-dirなど、元のセッションが依存していた起動フラグを渡し直したか
この4点を満たしていれば、Claude Code本体の復元は完了です。
07FAQ
Claude Codeのセッション復元に、追加の設定は必要ですか
標準機能なので追加インストールは不要です。settings.jsonとsettings.local.jsonは起動のたびに再読み込みされます。書いた設定を渡し直す必要はありません(出典: Claude Code公式ドキュメント「Manage sessions」)。
セッション復元とcheckpointの/rewindは何が違いますか
復元はプロセスをまたいで会話全体を呼び戻す機能です。/rewindは同じセッション内で、コードと会話を過去の一点まで戻す機能で、対象も保存件数も別です(出典: 同ドキュメント「Checkpointing」)。
復元したセッションの保存期間はどれくらいですか
既定は30日で、cleanupPeriodDaysという設定で変更できます(出典: 同ドキュメント)。保存場所自体もCLAUDE_CONFIG_DIRという環境変数で移動できます。
セッション復元を無効にすることはできますか
非対話実行では--no-session-persistenceフラグで1回分の記録を止められます。全体を止めたい場合はCLAUDE_CODE_SKIP_PROMPT_HISTORYという環境変数を使います(出典: 同ドキュメント)。