Claude Codeでコードレビューやリファクタリングを進めていると、「昨日の続きから再開したい」「別の方向で試してみたい」という場面が出てきます。Claude Codeはセッションをローカルに自動保存しており、–resume・–continue・–fork-sessionといったフラグで過去の会話を柔軟に再開・分岐できます。
この記事では、セッション管理に関するフラグと実践的な使い方を解説します。Claude Code全般の概要はClaude Code完全ガイドを参照してください。
セッションの保存場所と構造
Claude Codeは会話(セッション)をローカルのファイルに自動保存します。保存先は以下のパスです。
# セッションファイルは以下に保存される ~/.claude/projects/<encoded-cwd>/<session-uuid>.jsonl # 例: /Users/me/proj というディレクトリで作業した場合 ~/.claude/projects/-Users-me-proj/abc12345-xxxx-xxxx-xxxx-xxxxxxxxxxxx.jsonl # <encoded-cwd>: 作業ディレクトリの絶対パスで英数字以外を "-" に置換 # <session-uuid>: セッションごとに発行されるUUID
セッションは作業ディレクトリ(gitリポジトリ)ごとに分けて保存されます。claude --resumeを実行すると、カレントディレクトリに紐づくセッションのみが一覧表示されるため、プロジェクトをまたいで混在することはありません。
–resumeでセッションを再開する
インタラクティブピッカー
claude --resume(または-r)を引数なしで実行すると、インタラクティブなセッション選択UIが表示されます。セッション名・最終活動からの経過時間・メッセージ数・gitブランチが一覧で確認できます。
# ピッカーUIを開く(引数なし) claude --resume claude -r # セッション名を指定して直接再開 claude --resume auth-refactor # セッションID(UUID)を指定して直接再開 claude -r "abc123-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
| キー | ピッカーUI内での操作 |
|---|---|
↑ / ↓ |
セッション間を移動 |
→ / ← |
グループ(フォーク済みセッション)の展開/折りたたみ |
Enter |
選択したセッションを再開 |
P |
セッションの会話内容をプレビュー |
R |
セッション名をリネーム |
/ |
検索フィルター |
A |
全プロジェクトのセッションを表示する(トグル) |
B |
現在のgitブランチに紐づくセッションでフィルター |
Esc |
ピッカーを閉じる |
セッションの命名(–name)
セッションを起動するときに--name(または-n)で名前を付けると、ピッカーUIやターミナルのタイトルバーに表示されて管理しやすくなります。名前を指定したセッションはclaude --resume セッション名で素早く再開できます。
# セッションを名前付きで起動 claude -n auth-refactor # headlessモードでも命名できる claude -p "Start auth refactoring" -n auth-refactor # 起動後にセッション名を変更するスラッシュコマンド /rename new-session-name
–continueで最新セッションを自動継続する
claude --continue(または-c)は、カレントディレクトリで最も直近のセッションを引数なしで自動的に再開します。IDや名前を指定する必要がないため、ターミナルを閉じた後に素早く続きから再開したい場合に便利です。
# 最新セッションを自動継続 claude --continue claude -c # headlessモードでの継続(会話の流れを保ちながら追加プロンプトを送る) claude -p "Review the codebase for performance issues" claude -p "Focus on database queries" --continue claude -p "Summarize all issues found" --continue
–continue: 直近のセッションにすぐ戻りたいとき(IDや名前の確認不要)
–resume: 特定のセッションを選んで再開したいとき(ピッカーUIまたは名前/ID指定)
–fork-sessionでセッションを分岐させる
--fork-sessionは--resumeまたは--continueと組み合わせて使います。元のセッションのIDを使い回さず新しいセッションIDを発行するため、元セッションの履歴を保持したまま独立した別の会話として分岐できます。gitのブランチを切るような感覚です。
# 最新セッションをfork claude --continue --fork-session # 特定のセッションをfork claude --resume auth-refactor --fork-session claude -r "abc123-xxxx-xxxx-xxxx-xxxxxxxxxxxx" --fork-session
フォークされたセッションは、ピッカーUI内で元セッションの子として表示されます。→/← キーでグループを展開/折りたたんで確認できます。
- 「Aパターンで実装してみたが、Bパターンも試してみたい」という分岐実験
- 同じ起点から2人の開発者が別々のアプローチを試す
- VSCodeのチェックポイントFork機能とは別に、CLI上でforkしたいとき
–from-prでPRに紐づいたセッションを再開する
Claude Codeがgh pr createでPRを作成するとき、そのPRのIDにセッションIDが自動的に紐づけられます。後からそのPRのレビュー対応や追加修正をするとき、--from-prでそのPRを書いたセッションの状態をそのまま復元できます。
# PR番号で再開 claude --from-pr 123 # PR URLで再開 claude --from-pr https://github.com/org/repo/pull/123 # ピッカーUIで選択(引数なし) claude --from-pr
- レビュアーからの指摘を受けて修正するとき(コンテキストがそのまま残っている)
- PRをマージした後に関連タスクを同じコンテキストで進めるとき
- 「このPRを書いたときのセッション」を他の開発者に引き継ぐとき
headlessモードでのセッション管理
-p(print/headlessモード)でもセッション管理フラグが使えます。複数のタスクを自動化するパイプラインで、セッションを引き継ぎながら処理を連鎖させたいときに役立ちます。headlessモードの詳細はClaude Code headlessモード完全ガイドを参照してください。
# セッションIDを取得して後から再開 session_id=$(claude -p "Start performance review" --output-format json | jq -r ".session_id") # 同じセッションに追加プロンプトを送る claude -p "Focus on database queries" --resume "$session_id" claude -p "Generate a full report" --resume "$session_id" # 最新セッションを継続(--continue) claude -p "First task: analyze the codebase" claude -p "Second task: suggest optimizations" --continue claude -p "Third task: write a summary" --continue
–no-session-persistenceでファイルを残さない
CI/CDパイプラインなどでClaude Codeを実行するとき、セッションファイルをディスクに保存したくない場合は--no-session-persistenceを使います。このフラグを指定するとセッションが保存されないため、後から--resumeで再開できません。
# セッションファイルを残さずに実行(headlessモード専用) claude -p "Run automated code review" --no-session-persistence # GitHub Actions等のCI/CDで使う場合 claude -p "$PROMPT" --no-session-persistence --output-format json --allowedTools "Read,Bash(git status)"
--no-session-persistenceは-p(print/headlessモード)と組み合わせてのみ有効です。通常のインタラクティブセッションには使えません。GitHub ActionsでのClaude Code活用も参考にしてください。–session-idで新規セッションのIDを固定する
--session-idは、--resumeとは異なり新規セッションのIDを事前に指定するフラグです。有効なUUIDを指定して、特定のIDで会話を開始できます。自動化スクリプトで複数のセッションを管理するときに便利です。
# 特定のUUIDでセッションを開始 claude --session-id "550e8400-e29b-41d4-a716-446655440000" # UUIDの生成(Bashで) uuid=$(python3 -c "import uuid; print(uuid.uuid4())") claude --session-id "$uuid" -p "task 1" claude --session-id "$uuid" -p "task 2" --continue
まとめ:セッション管理フラグ一覧
| フラグ | 短縮形 | 動作 | 主な用途 |
|---|---|---|---|
--resume [name/id] |
-r |
ピッカーUIまたは名前/IDで再開 | 特定のセッションを探して再開 |
--continue |
-c |
最新セッションを自動継続 | すぐに直前の作業を再開 |
--fork-session |
— | 新IDを発行して会話を分岐 | 元の会話を保ちながら別アプローチを試す |
--from-pr [番号/URL] |
— | PRに紐づいたセッションを再開 | PR作成後のレビュー対応・追加修正 |
--name <name> |
-n |
セッションに表示名を付ける | ピッカーUIでの管理・名前指定再開 |
--no-session-persistence |
— | セッションを保存しない | CI/CDパイプラインでのファイル節約 |
--session-id <uuid> |
— | 新規セッションのIDを固定 | 自動化スクリプトでのID事前指定 |
よくある質問
Qセッションはいつ削除されますか?
AClaude Codeは古いセッションを自動削除しません。~/.claude/projects/配下のファイルを手動削除するか、セッションが多くなりすぎた場合はディレクトリをまとめて整理してください。--no-session-persistenceを使うとセッションが最初から保存されないため、ファイルは増えません。
Q–continueと–resumeを同時に使えますか?
A使えません。どちらかを選んでください。「最新のセッションにすぐ戻りたい」なら--continue、「一覧から選んで再開したい・特定の名前で再開したい」なら--resumeです。
Q–fork-sessionとチェックポイントのForkは何が違いますか?
A--fork-sessionはCLIフラグであり、セッション再開時にセッションを分岐させます。VSCode拡張のチェックポイントForkは会話の途中の任意の時点から分岐させる機能です。使う場面は異なりますが、「過去の状態から別のアプローチを試す」という目的は共通しています。
Qセッションを復元すると前回のツール使用権限も復元されますか?
Aセッションを再開すると会話の履歴(テキスト)は復元されます。ただし、ツールの実行許可(Bashコマンドの承認等)はセッションをまたいでは引き継がれません。再開後、新たに実行しようとしたコマンドは改めて許可が求められます(permission modeがdefaultの場合)。
Q–from-prで再開できるPRの条件はありますか?
AClaude Codeがそのリポジトリで作成したPRに限られます。手動で作成したPRや別のツールで作ったPRには紐づきません。また、そのPRのセッションファイルがローカルに残っていることが条件です(削除済みのセッションは再開できません)。

