フォークされたサブエージェント(フォーク)とは、新規に始めるのではなく、それまでの会話全体を引き継ぐ Claude Code のサブエージェントである。Anthropic のドキュメントは、これをほかのすべての サブエージェントと対比している。通常のサブエージェントは、自身のシステムプロンプト、Claude が書く委任メッセージ、 読み込まれた少数のファイルだけを含む、新しく隔離されたコンテキストウィンドウから始まる。これに対してフォークは、 メインセッションと同じシステムプロンプト、ツール、モデル、メッセージ履歴を目にする。ドキュメントはこれを、 サブエージェントが本来提供する入力側の隔離を手放すことだと説明している。フォークが保つのはその隔離の出力側 である。フォーク自身のツール呼び出しはメインの会話に現れず、最終結果だけが戻ってくるため、メインの コンテキストウィンドウはきれいなまま保たれる。
用法
ドキュメントが示すフォークの理由は、状況を説明し直すことなく脇道のタスクを任せることである。ほかの
サブエージェントでは役に立つまでに必要な背景説明が多すぎる場合や、同じ出発点から複数のアプローチを並行して
試したい場合にフォークを推奨している。ユーザーは /subtask に続けてタスクを書くことでフォークを開始できる
(以前のバージョンではこのコマンドは /fork だった)。フォークはプロンプトの下のパネルでバックグラウンド実行され、
そこでトランスクリプトを開いたり追加のメッセージを送ったりでき、完了するとその結果がメインの会話にメッセージとして
届く。Claude も Agent ツールを通じて fork サブエージェントタイプを要求することでフォークを開始できる。これは
フォークモードと呼ばれる設定で制御され、対話型セッションではデフォルトで有効、非対話モードと Agent SDK では
デフォルトで無効であり、いずれのデフォルトも環境変数で上書きできる。
ドキュメントに記された、フォークでないサブエージェントとの違いは、フォークが定義ファイルのものではなく メインセッションのシステムプロンプト、ツール、モデルを使うこと、権限の確認プロンプトをターミナルに表示すること、 そしてメインセッションのプロンプトキャッシュを共有することである。フォークのシステムプロンプトとツール定義は 親と同一であるため、最初のリクエストは親のプロンプトキャッシュを再利用する。ドキュメントは、これにより 同じコンテキストを必要とするタスクでは、新しいサブエージェントを起動するよりフォークするほうが安価になると 述べている。フォークは、ほかのサブエージェントが受け取る絞り込まれたツールセットではなく、メインの会話の ツールプールをそのまま受け取り、ファイル編集がユーザーのチェックアウトに及ばないよう専用の git ワークツリーを 与えることができ、さらにフォークを生成することはできない。フォークでないサブエージェントは独自の システムプロンプトを持つため、ユーザーの出力スタイルがその応答に影響しないが、フォークはその影響を受ける。
関連用語
- サブエージェントアーキテクチャ —— クリーンなコンテキストウィンドウを持つサブエージェントに委任する、 より広いパターン。フォークは入力側においてその例外にあたる
- コンテキストエンジニアリング
- トークンキャッシュ
- Git ワークツリー