Claude Code –continue/–resumeの違いと使い分け

Claude Code --continue/--resumeの違いと使い分け | mohablog

claude --continueclaude --resume を取り違えると、片方は直近セッションへ即座に戻り、片方は session picker が立ち上がって会話の選択画面に入ります。公式ドキュメントの “Resume a session” には2つの挙動が一行ずつで書かれているだけで、初見だと違いが見えにくい。Claude Code v2.1.143 時点で増えた --name--from-pr--fork-session まで含めて使い分けを整理します。

目次

continueとresumeの違いを一行で

--continue は「最後に触ったセッションをそのまま開く」、--resume は「過去のセッション一覧から選び直す」動きをします。

コマンド挙動短縮形
claude --continueカレントディレクトリの直近セッションを即時再開-c
claude --resumesession picker を開いて選択-r
claude --resume <name>名前で直接再開
claude --from-pr <number>PRに紐づくセッションを再開
/resumeセッション中に他の会話へ切り替え

直近を即時再開する –continue

--continue の “直近” はカレント worktree 単位です。別ディレクトリで起動した場合は、そちらの直近が返ってくる。プロジェクトの worktree を行き来している場合、想定外のセッションが開いて慌てるパターンが起きやすい。

worktree とセッションの関係は Claude Code worktreeの使い方 でもう少し踏み込んでいます。

resume が picker を開く理由

公式ドキュメントの “Resume a session” には次のように書かれています。

Sessions are saved continuously to local transcript files as you work, so you can return to one after exiting or running /clear.

連続保存される前提で、過去にさかのぼって会話を選べるようにするのが picker の役割です。残しておきたい会話があるなら、後述の名前付けと併用するのが基本。

コマンドを取り違えたときの動き

-c 前提で書いたシェル alias に -r を渡すと、対話的なピッカーが立ち上がって入力待ちで止まります。スクリプトから呼ぶときに混入させるとプロセスが応答しないので注意。

ピッカーの操作: Ctrl+A/W/Bで範囲を切り替える

claude --resume を引数なしで実行すると session picker が立ち上がります。デフォルトではカレント worktree のセッションだけが見えるが、Ctrlキーで範囲を広げられる。

キー表示範囲
初期状態カレント worktree のセッション
Ctrl+W同リポジトリの全 worktree
Ctrl+Aこのマシン上の全プロジェクト
Ctrl+Bカレント git branch のセッションのみ

検索でPR URLを直貼りできる

/ キーで検索モードに入った後、GitHub・GitLab・Bitbucket の PR/MR URL を貼り付けると、そのPRから作ったセッションを直接探せます。レビューコメントが来て該当セッションに戻りたいとき、URLコピペで即座にたどれる。

業務での運用は、最初に Ctrl+W で同リポジトリ全 worktree を見渡し、見つからなければ Ctrl+A でマシン全体に広げる流れに落ち着きました。

プレビューと改名

矢印で会話を選んで Space を押すと、その場で中身をプレビューできる。ターミナルが Space を paste として消費する場合は Ctrl+V でも代用できます。Ctrl+R で選択中のセッションを改名できるので、起動時に名前を付け忘れていても後付けが可能。

セッションに名前を付けて呼び戻す

claude -n auth-refactor
$ claude -n auth-refactor
✻ Session "auth-refactor" started
> 

このフラグは Claude Code v2.1.76 で導入されました。起動時に auth-refactor という名前でセッションが作られ、後で claude --resume auth-refactor 一発で開けます。

走らせている途中で改名する

セッション中に名前を変えたい場合は /rename を使います。

> /rename pd-auth-cleanup
Session renamed to "pd-auth-cleanup"

プロンプトバー上にも名前が表示されるので、複数並走しているときの取り違えが減る。

Plan modeでaccept時に自動命名される

Plan mode で plan を accept すると、plan の内容から自動でセッション名が決まります。既に -n/rename で名前が付いていれば、そちらが優先される仕様。

名前で resume するときの曖昧マッチ挙動

コマンド完全一致あり曖昧な名前
claude --resume <name>そのまま再開name をプリフィルしたピッカーが開く
/resume <name>そのまま再開エラー。引数なしの /resume をやり直す必要あり

--resume の方が曖昧入力に寛容です。

ブランチで別アプローチを安全に試す

会話の途中で別の実装方針も試したいとき、/clear で消すと履歴ごと失うが、/branch ならコピーを作って枝分かれできます。

/branchで枝を作る

> /branch try-streaming-approach
Branched session: try-streaming-approach
Original session ID: 8f3c-9b1a-...
New session ID:     a2d1-4f7c-...

新しい branch に切り替わった状態で、これまでの会話履歴を引き継いだまま別の指示を試せます。元のセッションはそのまま残るので、ピッカーから戻れる。

コマンドラインからforkする

claude --continue --fork-session
✻ Forked session from latest in current directory
  Original: 8f3c-9b1a-...
  New:      c5e0-2f88-...
> 

--continue--resume--fork-session を付けると、開いたセッションをその場で枝に分けて入ります。CI からスクリプト的に試させたい場面で使う形。

アンチパターンとしての /clear

方針を変えたくなったときに /clear でやり直すと、過去の文脈が完全に失われます。

> /clear
  (履歴がリセットされる)
> (元の方針に戻りたいけど内容が残っていない)

代わりに /branch で枝分かれしておくと、安全に試行錯誤できる。

> /branch try-streaming-approach
  (別方針を試す)
> /resume auth-refactor
  (元の路線に戻れる)

業務で /clear の癖がついていた頃、Plan mode で固めた会話を消しかけたことがあります。Plan accept したセッションは自動命名されているので、ピッカーから当時の plan 名で探せば戻れた、と数分迷って気づきました。

同じセッションを2端末で開くと混ざる

公式ドキュメントの “Branch a session” には次のように書かれています。

If you resume the same session in two terminals without forking, messages from both interleave into one transcript.

並列で別の作業をしたいなら、/branch--fork-session で枝を切ってから開きます。

-pで作ったセッションをIDで再開する

claude -p や Agent SDK 経由で作ったセッションは session picker に出てきません。picker が対話セッションのみを対象にしているためです。session ID を控えておけば、claude --resume <session-id> で開けます。

headless 起動の詳細は Claude Code -p フラグの使い方 – スクリプトから呼ぶJSON出力と再開 側に書いています。

セッションファイルの保存場所と削除タイミング

公式ドキュメントの “Export and locate session data” によると、セッションは次の場所に保存されます。

~/.claude/projects/<project>/<session-id>.jsonl

各行が JSON オブジェクトで、メッセージ・ツール使用・メタデータが順に記録される形式。

項目
形式JSONL(1行 = 1 JSON)
場所~/.claude/projects/<project>/
デフォルト保持期間30日
保持期間の設定cleanupPeriodDays
保存先変更CLAUDE_CONFIG_DIR 環境変数
記録を無効化CLAUDE_CODE_SKIP_PROMPT_HISTORY / 非対話時は --no-session-persistence
ls -lt ~/.claude/projects/*/*.jsonl | head -5
-rw-r--r-- 1 moha staff 524288 May 16 14:21 /Users/moha/.claude/projects/Users-moha-work/a2d1xxxx.jsonl
-rw-r--r-- 1 moha staff 185344 May 16 12:08 /Users/moha/.claude/projects/Users-moha-work/8f3cxxxx.jsonl
-rw-r--r-- 1 moha staff  98304 May 15 22:55 /Users/moha/.claude/projects/Users-moha-work/c5e0xxxx.jsonl

/exportで人間可読な形に出す

JSONLは機械可読の形なので、レビューや共有には扱いにくい。/export を実行するとクリップボードに整形済みの会話が入ります。引数にファイル名を渡せば直接書き出しも可能。

> /export session-log.txt
Exported to session-log.txt (1832 lines)

30日を超えて残したいときは設定値で延ばす

{
  "cleanupPeriodDays": 90
}

~/.claude/settings.json にこの設定を入れると保持期間が 3か月 に伸びます。プロジェクトをまたいで長期に振り返りたい会話があるなら値を上げておくほうが安全。/compact 側の挙動は Claude Code auto-compactの仕組みと/compactの使い方 で書きました。

まとめ

  • --continue は最後の1件をそのまま開く。直近の作業に戻るための最短ルート
  • --resume は引数なしで session picker、引数ありで名前または session ID 直開き
  • -n/rename で名前を付けておくとピッカーで識別しやすい
  • 別アプローチを試すときは /clear ではなく /branch--fork-session
  • セッションは ~/.claude/projects/ 配下に JSONL で残り、デフォルト30日で消える
  • -p 起動分は picker に出ないが、session ID 渡しで --resume から開ける
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次