
Claude Code セッション保存と再開|--resume と /export 活用
「ターミナルを閉じたら Claude Code との会話が消えてしまうのでは」「数時間かけた作業のコンテキストを明日も引き継ぎたい」——そんな不安や疑問を持つ方に向けて、本記事では Claude Code のセッション保存の仕組み、再開コマンドの使い分け、書き出し方法、保存期間の設定までを公式ドキュメントに基づいて整理します。
Claude Code のセッションは自動保存され手動保存は不要。直前の会話は claude --continue、過去の一覧からは claude --resume で再開できる。/export で書き出しもでき、30 日の保存期間は cleanupPeriodDays で延長できるとわかる。
目次 (8)
セッションは自動保存されている — 仕組みと保存場所
まず押さえておきたいのは、Claude Code のセッションは作業中に継続的へ自動保存されているという点です。「保存し忘れて会話が消えた」という事態は、基本的には起きません。ターミナルを閉じても、/clear で画面を初期化しても、過去の会話は残っていて後から再開できます。
保存先は既定で以下のパスです(出典: Claude Code 公式ドキュメント「Manage sessions」)。
~/.claude/projects/<プロジェクト>/<セッションID>.jsonl
<プロジェクト> は作業ディレクトリのパスから英数字以外を - に置き換えたフォルダ名です。1 行が 1 つのメッセージやツール実行に対応する JSONL(JSON Lines)形式で記録されています。
ただし注意点として、このファイルの内部フォーマットは Claude Code のバージョン間で変わる可能性があり、直接パースするスクリプトはアップデートで壊れることがあります。会話内容を活用したい場合は、後述の /export や構造化出力のインターフェースを使うのが公式推奨です。
直前の作業を再開する — --continue と --resume
セッション再開の入り口は主に 4 つあります。
| コマンド | 動作 |
|---|---|
claude --continue |
現在のディレクトリで最も新しいセッションを再開 |
claude --resume |
セッションピッカー(一覧画面)を開いて選択 |
claude --resume <名前> |
名前を付けたセッションを直接再開 |
/resume |
セッション中に別の会話へ切り替え |
一番よく使うのは claude --continue です。昨日の作業ディレクトリで打つだけで、メッセージ・ツールの実行結果を含むコンテキストがまるごと復元されます。
複数の作業を並行している場合は claude --resume で一覧から選びます。ピッカーでは矢印キーで移動、Space で内容プレビュー、Ctrl+R でリネーム、文字入力で検索ができます。Ctrl+W で同一リポジトリの全 worktree、Ctrl+A でマシン上の全プロジェクトまで表示範囲を広げられます。
なお、claude -p(非対話モード)や Agent SDK で作ったセッションはピッカーに表示されませんが、セッション ID を控えておけば claude --resume <セッションID> で再開できます。セッション ID の検索は「そのセッションを開始したディレクトリ」が基準になるため、別の場所から実行すると「No conversation found」エラーになる点に注意してください。
セッションに名前を付けて探しやすくする
後から確実に見つけるには、セッションへの命名が効果的です。名前を付ける方法は 3 つあります。
- 起動時に
claude -n auth-refactorのように-nオプションで指定する - セッション中に
/rename auth-refactorを実行する - セッションピッカーで対象を選び
Ctrl+Rを押す
名前を付けておけば claude --resume auth-refactor の一発で戻れます。プランモードで計画を承認した際に、計画内容から自動命名される仕組みもあります。並行タスクが多い人ほど、着手時の命名を習慣にすると迷子になりません。
会話をファイルに書き出す — /export の使い方
「セッションを保存したい」というニーズには、会話をテキストとして手元に残したいという意図も含まれます。それには /export コマンドを使います。
- セッション中に
/exportを実行するとメニューが開く - クリップボードへのコピー、またはプレーンテキストファイルへの保存を選ぶ
/export mylog.txtのようにファイル名を渡せばメニューを飛ばして直接書き出せる
書き出されるのは、メッセージとツール出力を人間が読みやすい形に整形したトランスクリプトです。作業ログとしてチームに共有したり、ドキュメントの素材にしたりする用途に向いています。書き出し手順の実例は How to export, save, and share a Claude Code conversation でも紹介されています。
セッションを分岐して別アプローチを試す
「今の会話を保存したまま、別の方針も試したい」場合はセッションの分岐(ブランチ)が使えます。
- セッション中に
/branch try-streaming-approachのように実行する(名前は省略可) - 会話のコピーが作られ、自動的に新しい方へ切り替わる
- 元のセッションは無傷で残り、ピッカーからいつでも戻れる
コマンドラインからは claude --continue --fork-session のように --fork-session を組み合わせます。逆に、同じセッションをフォークせず 2 つのターミナルで同時に再開すると、両方のメッセージが 1 つのトランスクリプトに混ざってしまうため避けましょう。1 セッション内で少し前の状態に戻したいだけなら、チェックポイント機能の /rewind が適しています。
保存期間は既定 30 日 — 延長と保存先の変更
自動保存されるとはいえ、トランスクリプトの保持期間は既定で 30 日です。長期プロジェクトで古いセッションに戻る可能性があるなら、設定変更を検討してください。
| 目的 | 設定 | 設定場所 |
|---|---|---|
| 保存期間を変更する | cleanupPeriodDays |
settings.json |
保存先を ~/.claude 以外へ移す |
CLAUDE_CONFIG_DIR |
環境変数 |
| トランスクリプト書き込みを抑止する | CLAUDE_CODE_SKIP_PROMPT_HISTORY |
環境変数 |
たとえば ~/.claude/settings.json に "cleanupPeriodDays": 365 と書けば 1 年間保持されます。実際に「4 時間分のセッションを失った」という失敗談とその対策は DEV Community の記事 でも共有されており、長時間の作業をする人は早めに延長しておくと安心です。
スクリプトからセッションデータを扱う
自動化の文脈でセッションを「保存・活用」したい場合は、JSONL を直接読むのではなく公式のインターフェースを使います。
claude -p --output-format jsonで 1 回の実行結果・セッション ID・コストを構造化 JSON として取得するclaude -p --resume <セッションID> "summarize what we changed"で既存セッションに追加の質問を投げ、応答をjqなどでパースする- hooks が受け取る
transcript_pathフィールドを使い、SessionEndフックでセッション終了時にトランスクリプトを自動アーカイブする
とくに 3 番目の方法は「会話を絶対に失いたくない」人向けの堅牢な選択肢で、セッションが終わるたびに任意の場所へバックアップを取れます。
まとめ — 保存は自動、鍵は「再開手段」と「保持期間」
Claude Code においてセッション保存のために特別な操作は不要で、本当に重要なのは再開手段の使い分けと保持期間の管理です。最後に要点を整理します。
- セッションは
~/.claude/projects/へ JSONL 形式で自動保存される - 直前の作業は
claude --continue、過去の一覧からはclaude --resumeで再開する claude -nや/renameで名前を付けると後から探しやすい- 会話の書き出しは
/export、別アプローチの試行は/branchを使う - 保持期間は既定 30 日なので、長期案件では
cleanupPeriodDaysを延長する
この 5 点を押さえれば、ターミナルを閉じることを恐れずに Claude Code での作業を積み上げられます。詳細な仕様は公式ドキュメント「Manage sessions」を参照してください。