結論:説明し直す量が多い時だけforkを選ぶ

Claude Codeのforkは、親sessionの会話履歴、system prompt、tool、modelをそのまま必要とする横道作業に使います。調査logを主会話へ入れたくないだけなら通常subagent、同じ前提から複数案を試すならfork、file編集が衝突するならforkにworktree isolationを加えます。文脈を多く渡せることを、権限やfileの安全な分離と混同しません。

読者の具体的な困りごとは、通常subagentへ背景を短く要約すると前提が抜け、反対にすべてをforkすると機密文脈とtool権限まで広がり、並列編集が衝突することです。この記事を読むと、fork、通常subagent、独立session、worktreeを6軸で選び、停止と統合まで判断できます。

次の行動:並列化したい一作業について、必要な過去文脈、必要tool、書込file、完了証拠、最大turn、統合責任者を一行へ書いてください。

正式なversion・既定動作・費用条件を確認する

公式changelogでは、Claude Code 2.1.232からinteractive sessionのsubagent forkingが既定で有効です。Claudeがfork typeを選んだsubagentは親のconversationとprompt cacheを引き継ぎ、interactiveでspawnされるnon-teammate agentは原則backgroundで動きます。自分で開始する/subtaskは2.1.212以降が必要で、古いversionでは/forkという名称でした。

forkは親のfull conversation、system prompt、tool definitions、model、prompt cacheを継承します。通常subagentは独立contextで、自身のsystem promptと委任messageから始まります。forkの最初のrequestは親のprompt cacheを再利用できるため、同じ長い文脈が必要な仕事ではfresh subagentより効率的になり得ます。ただし実行turnと出力のmodel利用量は発生し、無料のcopyではありません。

interactiveではfork modeが既定onですが、非対話の-pとAgent SDKでは既定offです。CLAUDE_CODE_FORK_SUBAGENT=1または0で環境別に上書きできます。組織で再現性が必要なら、個人端末の既定値に任せずversionと設定を起動台帳へ残します。

forkはbackgroundで動き、permission promptはmain terminalへ表示されます。親と同じtool poolを持つため、通常background subagentよりtoolが広い場合があります。またforkはさらにforkをspawnできません。file editを分けるにはAgent callでisolation: "worktree"を指定します。contextの分岐とrepositoryの分岐は別設定です。

fork・通常subagent・独立sessionを6軸で比較する

  1. 文脈:親履歴が不可欠ならfork、要約だけで足りるなら通常subagent、長期継続は独立sessionを選びます。
  2. tool:親と同じtoolが必要なforkより、read-onlyなどtoolを絞れるcustom subagentを先に検討します。
  3. 費用:同一prompt cacheを活かすfork、安価なmodelを指定できるsubagent、別budgetのsessionを比較します。
  4. 編集:同じcheckoutを読むだけなら並列化し、書込が重なるならworktreeか順次実行へ切り替えます。
  5. 承認:background permissionが誰の作業か分かる名前を付け、危険操作はmain側で一件ずつ確認します。
  6. 統合:最終reportだけで足りるfork、再開が必要なnamed subagent、成果物をcommitで渡すworktreeを分けます。

「同じ会話を知っているからfork」は広すぎます。親履歴にcustomer data、credential、別projectの会話が含まれるなら、fresh subagentへ必要事項だけ要約する方が安全です。forkは入力隔離を失う設計です。逆に設計判断や既読fileが多く、要約すると判断根拠が落ちる場合はforkの価値があります。

subagent forkを安全に使う8手順

  1. claude --versionで2.1.232以降を確認し、interactive、-p、Agent SDKのどれかを記録します。
  2. side taskの完了条件、必要な親文脈、不要な機密情報、返してほしい証拠を一文で固定します。
  3. fresh promptで説明できるなら通常subagentを選び、full historyが必要な理由がある時だけforkにします。
  4. 読むfile、書くfile、network、MCP、commit、pushを分類し、不要toolを使わせないtask境界を置きます。
  5. 同じfileへ書く可能性があればisolation: "worktree"を使い、base branchとcleanup責任者を決めます。
  6. /subtaskまたはClaudeのfork spawnで開始し、panelの名前、background状態、permission promptを確認します。
  7. 中間結果が必要ならfork transcriptへfollow-upを送り、失敗、usage limit、停止をmainの成功と混同しません。
  8. 最終report、diff、test、未追跡fileをreadbackし、採用・修正・破棄を人が決めてからworktreeを片付けます。

二つ以上のforkへ同じ変更を競わせる場合、評価軸も先に固定します。test passだけでなく、変更量、security、保守性、依存追加、rollbackを比べます。先に終わった案を自動採用せず、各forkの前提と未確認点を同じ形式で返させてください。

運用チェックリストとHOLD条件

  • 2.1.232以降を確認した
  • 実行surfaceを記録した
  • forkが必要な理由を書いた
  • 不要な親文脈を確認した
  • 完了条件を固定した
  • 必要toolを限定した
  • permission担当者を決めた
  • 書込fileを分けた
  • worktree baseを確認した
  • 最大並列数を決めた
  • usage上限を決めた
  • testを固定した
  • 結果の統合担当者がいる
  • cleanup前にdiffを読んだ

HOLDするのは、親会話に渡してはいけない情報がある、完了条件が「良い案を作る」だけ、同じproduction fileを複数forkが直接編集する、permission promptを無人承認する、worktreeのbaseが不明、結果を比較する人がいない、利用上限なしでforkを増やす場合です。parallel表示や完了通知だけを品質証明にしません。

よくある質問と次の行動

/subtaskと通常のAgent依頼は同じですか?

/subtaskは会話をforkする明示操作です。通常Agentはfresh subagentになることがあり、fork mode中はClaudeがfork typeを選ぶ場合があります。

forkを止めると親の変更も消えますか?

親conversationは残りますが、同じcheckoutへ加えたfile変更は別です。worktreeなしの編集は停止だけで元に戻るとは限りません。

forkは何個まで起動できますか?

subagentには同時実行limitがあり、versionや設定で変わります。総数より先にreview可能な並列数、費用上限、file衝突を決めます。

forkの継承内容、/subtask、既定動作、worktreeはClaude Code公式subagents guide、2.1.232の変更は公式changelog、並列方式の全体比較は公式agents guideで公開直前にも確認してください。

複数sessionの連携はsession間messaging、file分離はworktree運用、完了条件は/goal設計へつなげます。Miraigentの無料診断では、文脈、tool、権限、並列数、費用、統合を一枚の運用表へ整理します。