Claude Codeで最も活用されていない機能のひとつがセッション管理だ。多くの開発者は毎回新しいセッションを開いてしまう。その結果、コードベースの説明、コンテキストの再提示、セットアップ作業を毎回繰り返すことになる。
Claude Codeはすべてのセッションを保存している。適切なフラグを使えば、接続が切れたとき、マシンを変えたとき、複雑なリファクタリングの途中で別の作業を挟んだときでも、まったく同じ状態から再開できる。
このガイドでは、2026年6月時点のすべてのセッション管理機能を解説する。
セッションコンテキストが重要な理由
新しいセッションでClaude Codeに「作業を続けて」と頼んでも、それは再開ではなく再構築だ。Claudeはファイルを読み直し、コードベースの構造を再把握し、何をやろうとしていたかのメンタルモデルを作り直す必要がある。
再開されたセッションが持つもの:
- 完全な会話履歴
- 前のセッションで行ったすべてのファイル読み取りと差分
- 前の判断の背景にある推論の流れ
- 試みて失敗したことへの認識
長いリファクタリング、アーキテクチャの議論、数百のツール呼び出しにまたがるデバッグセッションでは、このコンテキストに実質的な価値がある。失うと最初からやり直しになる。
セッションの保存場所
Claude Codeはセッションを以下に保存する:
~/.claude/projects/<プロジェクトパス>/<session-id>.jsonl
各セッションはJSONL形式(改行区切りJSON)で、1行1イベント。デフォルトでは30日間保持される。保持期間を変更するには:
// ~/.claude/settings.json
{
"cleanupPeriodDays": 90
}
0に設定するとセッションを無期限に保持する(ディスク容量の許す限り)。
主要フラグ
--continue / -c:最新セッションを再開
# 現在のプロジェクトで最も新しいセッションを再開
claude --continue
claude -c # 省略形
最も手早く前回の続きに戻れる方法。ピッカーも検索も不要。現在の作業ディレクトリの最新セッションを見つけて開く。
ヘッドレス用途でも使える:
claude -c -p "中断したデータベースマイグレーションの続きを進めて"
--resume / -r:インタラクティブセッションピッカー
# インタラクティブセッションピッカーを開く
claude --resume
claude -r # 省略形
# セッション名またはUUIDで特定のセッションを再開
claude --resume auth-refactor
claude --resume 7f3a9c2b-...
ピッカーは直近順にセッションをグループ表示し、タイムスタンプと各セッションの最後のメッセージのプレビューを表示する。
ピッカーのキーボードショートカット:
| ショートカット | 動作 |
|---|---|
Ctrl+A | このマシン上のすべてのプロジェクトのセッションを表示 |
Ctrl+W | 現在のリポジトリのすべてのWorktreeにわたるセッションを表示 |
Ctrl+B | 現在のgitブランチのセッションだけに絞り込む |
/ | 検索モード — 入力してセッションを絞り込む |
GitHubのPR URLをピッカーに直接貼り付けると、そのPRに関連するセッションを見つけられる。
--from-pr:PRに紐付いたセッションを再開
claude --from-pr 482
claude --from-pr https://github.com/org/repo/pull/482
PRの作業中にClaude Codeセッションを開始し、そのセッションがPRに関連付けられていた場合に使う。数日後にPRレビューに戻るときに便利。
セッションの命名
名前なしのセッションは自動生成された名前がつく。名前付きセッションは検索可能で意味を持つ:
# 名前付きで新しいセッションを開始
claude -n "payment-gateway-refactor"
claude --session-name "fix-race-condition-auth"
会話中にセッション名を変更する:
/rename payment-v2-migration
セッション名はアクティブなときにプロンプトバーに表示される。複数のセッションが動いているときに、今どのコンテキストにいるかがわかりやすくなる。
セッションのフォーク
元のセッションに影響を与えずに分岐したいとき——たとえば同じ問題への別アプローチを試すときなど——は:
# セッションを再開しつつフォーク(再開したポイントから分岐した新しいセッションを作成)
claude --continue --fork-session
claude --resume auth-refactor --fork-session
元のセッションはそのまま保持される。フォークは同じコンテキストから始まるが、その後は独立したセッションとして扱われる。フォーク側の変更は元のセッションに影響しない。
特に以下のケースに有用:
- どちらも失わずに2つの実装アプローチをテストしたいとき
- リスクのある変更を試しながら、きれいな回復ポイントを保持したいとき
- チームメンバーにセッションを引き渡しつつ、自分のコピーも残したいとき
セッション内の /resume コマンド
終了せずにセッションを切り替えるには:
/resume
アクティブなセッション内から同じインタラクティブピッカーを開く。現在のセッションは自動的に保存される。
セッションのエクスポート
ドキュメント化、引き継ぎ、アーカイブのためにセッション全体を保存するには:
/export
セッションのトランスクリプトをクリップボードにコピーする。ファイル名を引数に指定するとディスクに書き込む:
/export session-auth-refactor-2026-06-17.md
エクスポートには、すべての会話のやりとり、ツール呼び出し、ファイル操作が読みやすい形式で含まれる。
チェックポイント:作業を失わずに巻き戻す
セッションの再開とは別に、Claude Codeはユーザーの各プロンプト時点でチェックポイントを自動作成する。このチェックポイントにより、セッションをまたいで再開するだけでなく、セッション内でも巻き戻しができる。
チェックポイントへのアクセス:
- 入力欄が空の状態で
Escを2回押す /rewindと入力する
チェックポイントピッカーは現在のセッション内のすべてのユーザーターンを表示する。各チェックポイントに対して5つのアクションが使える:
| アクション | 動作 |
|---|---|
| Restore code and conversation | 会話とすべてのファイル変更をこの時点に戻す |
| Restore conversation | 会話のみ戻す(ファイル変更はそのまま) |
| Restore code | ファイル変更のみ戻す(会話はそのまま) |
| Summarize from here | この時点以降のメッセージをサマリーに圧縮(/compactの部分版) |
| Summarize up to here | この時点以前のメッセージをサマリーに圧縮 |
重要な制限: チェックポイントはClaude Codeのファイル編集ツールで変更されたファイルのみ追跡する。Bashコマンド(sed、mv、git checkoutなど)で変更されたファイルは追跡されず、元に戻らない。
これは --fork-session とは別物。フォークは再開したポイントから別のセッションを作成する。チェックポイントは現在のセッション内で巻き戻す。
実用パターン
パターン1:毎日のセッション継続
毎朝、作業中の機能について昨日のセッションを継続して始める:
# 昨日のコンテキストで開始
claude -c
# もしくはどのタスクか明示する
claude --resume feature-user-auth
「ユーザー認証フローを実装中で、JWTの実装はsrc/auth/に、リフレッシュトークンのローテーションを途中まで実装していて…」という説明を毎回するより速い。
パターン2:フォークで安全な実験
リスクのある構造的変更を行う前に:
# 現在の状態を保存して分岐する
claude --continue --fork-session -n "try-new-db-schema"
実験がうまくいかなければ、元のセッションはそのまま残っている。--resumeで戻れる。
パターン3:複数機能の並行作業
# 機能Aのセッション
claude -n "feature-analytics-v2" --bg "アナリティクスダッシュボードを実装して、データモデルから始めて"
# 別のターミナルで機能Bのセッション
claude -n "feature-notifications" --bg "通知システムを構築して、メール+プッシュ通知"
# 全実行中セッションを確認
claude agents
# どちらか先に終わったものにアタッチ
claude attach feature-analytics-v2
パターン4:引き継ぎドキュメント
複雑なセッションをチームメートに引き渡したり、アーカイブしたりする前に:
/export handoff-feature-payments-2026-06-17.md
このエクスポートにより、下された判断、試みたアプローチ、現在の作業状況の完全な記録が得られる。
ヘッドレスでのセッション再開
自動化のために、--session-idでセッションコンテキストを渡せる:
# 最後のセッションのIDを取得
LAST_SESSION=$(claude -p "" --output-format json 2>/dev/null | jq -r '.session_id' | head -1)
# 後のジョブでそのセッションを再開
claude -p "タスクを続けて" --session-id "$LAST_SESSION" --output-format json
または開始時にセッションIDをキャプチャする:
SESSION_DATA=$(claude -p "APIのレート制限の問題を分析し始めて" --output-format json)
SESSION_ID=$(echo "$SESSION_DATA" | jq -r '.session_id')
# 後で使うために保存
echo "$SESSION_ID" > .claude-session-id
# 次のCIステップで再開
claude -p "発見事項を報告して修正を提案して" \
--session-id "$(cat .claude-session-id)" \
--output-format json
トラブルシューティング
--continue が再開の代わりに新しいセッションを開く
最も一般的な原因:前のセッションが別の作業ディレクトリにある。セッションの検索はプロジェクトパスをベースにしている。前回が ~/projects/myapp/src からで、今回が ~/projects/myapp からなら、別のプロジェクトとして扱われる。
解決策:あるプロジェクトに対して常に一定のルートディレクトリからClaude Codeを起動するか、--resumeに明示的なセッション名を指定する。
ピッカーに最近のセッションが表示されない
cleanupPeriodDays(デフォルト30日)より古いセッションは削除される。プロジェクトのパスが変わった(名前変更、移動)場合、新しいパスではセッションが表示されない。
チェックポイントの巻き戻しでファイルが元に戻らない
Bashコマンドで変更されたファイルはチェックポイント対象外。Claudeが git checkout -- src/auth.ts を実行したり sed -i でファイルを変更した場合、その変更はチェックポイントの範囲外。Claude Codeの組み込みファイルツールによる編集のみが追跡される。
まとめ
| 目標 | コマンド |
|---|---|
| 最新のセッションを継続 | claude --continue または claude -c |
| インタラクティブにセッションを選ぶ | claude --resume または claude -r |
| 名前で再開 | claude --resume セッション名 |
| PRからセッションを再開 | claude --from-pr 482 |
| 名前付きで開始 | claude -n "名前" |
| リスクのある作業の前にフォーク | claude --continue --fork-session |
| 会話内でセッション切り替え | /resume |
| セッションのトランスクリプトをエクスポート | /export |
| セッション内で巻き戻し | /rewind またはEsc2回 |
| 全実行中セッションの一覧 | claude agents |
Claude Codeのセッションシステムは、複数日にわたるワークフロー、並行トラック、安全な実験、引き継ぎをサポートするのに十分洗練されている。毎回新しいセッションを始めることで、多くの開発者は生産性を大きく無駄にしている。
関連記事
- Claude Code チェックポイントと /rewind 完全ガイド 2026 — セッション内で任意の時点にコード・会話を巻き戻す方法