2026-09-09
Claude Codeの/branchと/forkは何が違うのか
/branchと/forkは、どちらも「今の会話を分岐させる」コマンドという説明だけを見ると同じに見えます。
/branchは自分がいる場所が切り替わる。/forkは自分はそのまま、複製が裏で動き出す。
この違いによって、戻り方・繋ぎ方も別物になります。
/branch — その場で分岐する
/branch [name]と打つと、今の会話を複製した新しいセッションにそのまま切り替わる。
元の会話は動いてはおらず、保存された状態で残るだけ。
Branched conversation. You are now in the new branch (session 43ab2b96-...).
Use /resume 7e0fac73-... to return to the original, or run
`claude -r 7e0fac73-...` in a new terminal.
元に戻るには/resume <元のID>か、別ターミナルでclaude -r <元のID>。
どちらも止まっている会話を新しいプロセスとして再開する操作。
/fork — 裏で分岐させる
/fork [prompt]と打つと、今の会話はそのまま続き、複製がバックグラウンドセッションとして裏で動き出す。
promptを渡せばその指示に沿って自律的に作業が進む。
session running · [name] フォークのテスト · c48b8198
状況は/list-agentsで確認できる。
Other Claude sessions (n):
[busy] · [name] フォークのテスト · /path/to/project · started 17s ago
[offline] · [name] 過去のセッションA · Remote Control
...
[busy]は稼働中、[offline]は完了・非接続。
一覧できても中には入れないので、繋ぐにはclaude agentsを叩く。
claude agents
Agent Viewというセッション一覧画面が開く。
| キー | 動作 |
|---|---|
↑ / ↓ | セッション間を移動 |
Enter または → | 選択したセッションに接続 |
Space | 接続せず最新の出力だけ確認(Peekパネル) |
←(空プロンプトで) | 接続を切ってAgent Viewに戻る |
セッションIDが分かればclaude attach <id>で直接接続もできる。
claude attach c48b8198
接続を切ってもセッションは動き続けるが、約1時間アイドルが続くと停止する。
Ctrl+Tでピン留めすれば防げる。
結局何が違うのか — 接続(attach)か再開(resume)か
/branchの元セッションは動いていないので、claude attachで繋ぐ対象にならない。戻るなら/resume一択になる。
/forkの複製は生きたプロセスなので、逆にresumeで開こうとすると、本来のプロセスとは別の空セッションが立ち上がる不整合が起きうる1。
動いているものにはattach、止まっているものにはresume。
この対応を覚えておけば、/branchと/forkのどちらを使ったかに関わらず、迷わず正しい方法で分岐先に行き来できる。
Footnotes
-
resumeはディスクに保存された会話の記録から新しいプロセスを起動する操作、attachはメモリ上ですでに動いているプロセスに端末をつなぐ操作で、扱う対象がそもそも違う。動いているプロセスの状態は常に変化するが、ディスク上のスナップショットはその時点のものでしかないため、resumeすると本来のプロセスとは繋がらない別の新しいプロセスが起動してしまう。cmuxのIssue #6622も同じ構造の不具合。 ↩