> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# サブエージェント

> フォアグラウンドまたはバックグラウンドで動作する独立したサブエージェントにタスクを委任

サブエージェントを利用すると、メインのエージェントが独立したワーカーを立ち上げて、サブタスクを処理できます。サブエージェントは親エージェントとツールおよびコードベースの前提情報を共有しますが、独自の会話チェーンで動作し、親の会話履歴は引き継ぎません。これは、コードベースの調査、テストの実行、機能の並行実装など、独立して集中的に進めることで効果が高まるタスクに役立ちます。

エージェントに明示的にサブエージェントを利用するよう依頼することもできます (例: 「サブエージェントで認証の仕組みを調査して」) 。また、独立して進めたほうが効果的だと判断した場合は、エージェント自身が委任することもあります。

私たちの測定では、**サブエージェント**は**全体的なコーディング性能を向上させる**と**同時に**、**コストを削減**します。

***

<div id="how-subagents-work">
  ## サブエージェントの仕組み
</div>

エージェントがサブエージェントを起動すると、利用可能な**サブエージェントプロファイル**のいずれかを選択し、そのサブエージェントをフォアグラウンドとバックグラウンドのどちらで実行するかを決めます。サブエージェントは次の2つのモードで実行できます。

<CardGroup cols={2}>
  <Card title="フォアグラウンド" icon="display">
    セッション内でインライン実行されます。親エージェントは一時停止し、サブエージェントの完了を待ってから処理を続けます。ツール呼び出しが発生した場合は、その都度承認または拒否できます。
  </Card>

  <Card title="バックグラウンド" icon="clock">
    親エージェントが作業を続ける間、並行して実行されます。サブエージェントが完了すると、親エージェントに自動的に通知されます。承認されていないツールは自動的に拒否されます。
  </Card>
</CardGroup>

<Note>
  サブエージェントの生の出力は直接表示されません。サブエージェントが完了すると、親エージェントが結果を読み取り、重要な検出結果とアクションを要約して知らせます。
</Note>

<div id="subagent-cost">
  ### サブエージェントのコスト
</div>

サブエージェントはそれぞれ独立したエージェントセッションとして実行され、各自の前提情報ウィンドウと推論呼び出しを持つため、親とは別にコストが発生します。親の費用に含まれるのは親自身の作業分のみで、親が生成したサブエージェントごとに追加の使用量が加算されます。

<Note>
  プロンプトベースのプランでは、各サブエージェントでもユーザーメッセージと同様に追加のクレジットが消費されます。消費されるクレジット数はサブエージェントが利用するモデルによって異なるため、複数のサブエージェントを生成するタスク (またはそれらを[nest](/ja/cli/subagents#nesting-depth)するタスク) では、より多くのクレジットが消費されます。
</Note>

コストはサブエージェントの数に応じて増えるため、多数のサブエージェントに分岐するタスク (またはそれらを[入れ子に](#nesting-depth)するタスク) ほど高コストになります。並列実行や前提情報を絞り込むことのメリットが追加コストに見合う場合に、サブエージェントを意図的に利用してください。

***

<div id="which-model-does-a-subagent-use">
  ## サブエージェントはどのモデルを使いますか？
</div>

サブエージェントは、モデルピッカーで選択したモデルですべて実行されるわけではありません。どのモデルを使うかは、各プロファイルごとに決まっています。

| Profile            | Model used                                                            | Effect on quota / credits                                        |
| ------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `subagent_explore` | **デフォルトのサブエージェントモデル** — 高速で低コストなモデル (既定では SWE-1.6)                    | 低コスト: SWE-1.6 の使用量は、プライマリモデルの料金ではなく SWE の料金で請求されます               |
| `subagent_general` | **親エージェントと同じモデル** — モデルピッカーで選択したモデル (例: Claude Opus、GPT-5)            | 親と同じ料金: general サブエージェント 1 つで、選択したモデルのフルセッション 1 回分に相当するコストがかかります |
| Custom subagents   | `AGENT.md` の `model` フィールド (設定されている場合) 。未設定の場合は **デフォルトのサブエージェントモデル** | 固定したモデルによって異なります                                                 |

<Warning>
  `subagent_general` は親のモデルを引き継ぎます。プレミアムモデルを使っている場合、general サブエージェントもそれぞれ独自の前提情報ウィンドウと推論呼び出しを持つ同じプレミアムモデルで実行されます。そのため、複数の general サブエージェントに分岐するタスクでは、コストがその分増えていきます。作業内容がコード変更ではなく調査であれば、explore サブエージェント (または、より安価な `model:` を固定した [custom subagent](#custom-subagents)) を依頼してください。
</Warning>

**デフォルトのサブエージェントモデル** は固定のモデル名ではありません。生成時にルーター経由で解決され、管理者が上書きすることもできます (以下を参照) 。既定の **Subagent router** 設定では、SWE-1.6 に解決されます (プランのティアに応じて、高速または低速な SWE-1.6 バリアントが使われます) 。

<Note>
  CLI では現在、実行中のサブエージェントがどのモデルを使っているかはサブエージェントパネルに表示されません。
</Note>

<div id="influencing-the-model">
  ### モデルの選択に影響する要素
</div>

プロンプト内でサブエージェント用のモデル名を指定する方法はありません — `run_subagent` ツールが受け取るのはモデルではなく *profile* です。使える手段は 2 つあります。

1. **自然言語で profile を指定する。** explore サブエージェントを依頼すると (「explore サブエージェントで auth の仕組みを調査して」など) 、処理は低コストなデフォルトのサブエージェントモデルで実行されます。コード変更を依頼すると `subagent_general` が使われ、選択したモデルで実行されます。
2. **[カスタムサブエージェント](#custom-subagents) の profile でモデルを固定する。** `AGENT.md` の `model:` は、*書き込み可能な*サブエージェントを親とは異なるモデルで実行する唯一の方法です。サブエージェント内で実行される [スキル](/ja/cli/extensibility/skills) でも、フロントマター に `model:` を設定して profile のモデルを上書きできます。

<div id="enterprise-controls">
  ### Enterprise Controls
</div>

管理者は、org/enterprise 設定の **デフォルトのサブエージェントモデル** 設定で、サブエージェントが利用するモデルと、サブエージェント自体を実行可能にするかどうかを管理できます。この設定は、`subagent_explore` と、`model:` を固定していないカスタムサブエージェントに使用されるモデルを制御します。`subagent_general` は常に親エージェントのモデルに従うため、変更されません。

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/YTT-8QP8pQgBV4ID/images/cli/default-subagent-model-setting.png?fit=max&auto=format&n=YTT-8QP8pQgBV4ID&q=85&s=56c3be628fbb7cdb0ba1f26b80761dff" alt="デフォルトのサブエージェントモデル設定" width="1024" height="114" data-path="images/cli/default-subagent-model-setting.png" />
</Frame>

選択肢は 3 つあります。

| オプション                         | 動作                                                                                            |
| ----------------------------- | --------------------------------------------------------------------------------------------- |
| **Subagent router (default)** | デフォルトのサブエージェントモデルは、起動時にルーターによって選択されます。現在は SWE-1.6 に解決されます (正確なバリアントはご利用の plan ティアによって異なります) 。 |
| **A specific model**          | 親エージェントのモデルで実行されないすべてのサブエージェントについて、デフォルトのサブエージェントモデルを選択したモデルに固定します。                           |
| **None**                      | サブエージェントを完全に無効化します — Devin はサブエージェントを一切起動しません。                                                |

***

<div id="subagent-profiles">
  ## サブエージェントプロファイル
</div>

各サブエージェントは、その機能を決定する特定のプロファイルで実行されます。組み込みプロファイルは 2 種類あります。

| プロファイル             | 説明                  | ツールアクセス                                                                              | モデル                                 |
| ------------------ | ------------------- | ------------------------------------------------------------------------------------ | ----------------------------------- |
| `subagent_explore` | 読み取り専用でのコードベース探索と調査 | 読み取り専用のコードベース ツールに加えて Web 検索を利用可能。ファイルの編集や任意の URL の取得はできません (フォアグラウンドかバックグラウンドかを問わず) | デフォルトのサブエージェントモデル (デフォルトでは SWE-1.6) |
| `subagent_general` | コード変更を含む汎用タスク       | フォアグラウンドではすべてのツールを利用可能、バックグラウンドでは事前承認済みのツールのみ利用可能                                    | 親エージェントと同じモデル                       |

<Note>
  エージェントは、タスクに応じて適切なプロファイルを自動的に選択します。explore サブエージェントは調査や理解に最適で、general サブエージェントは変更を加えられます。各プロファイルがどのようにモデルを選択するかについては、[サブエージェントはどのモデルを利用しますか？](#which-model-does-a-subagent-use) を参照してください。2 つのプロファイルは**同じ**モデルで実行されるわけではありません。
</Note>

独自のカスタム サブエージェントプロファイルを定義することもできます。詳細は、以下の [カスタムサブエージェント](#custom-subagents) を参照してください。

***

<div id="tool-permissions">
  ## ツールの権限
</div>

ツールの権限の動作は、サブエージェントがフォアグラウンドで実行されているか、バックグラウンドで実行されているかによって異なります。

* **フォアグラウンドのサブエージェント** はメインのエージェントと同様に動作し、通常どおりツール呼び出しを承認または拒否するよう求められます。
* **バックグラウンドのサブエージェント** は、現在のセッション中にすでに付与したツールの権限を引き継ぎます。事前に承認されていないツールは自動的に拒否されます。バックグラウンドのサブエージェントが新しい権限の承認を求めることはできません。

<Tip>
  バックグラウンドのサブエージェントが、必要なツールが拒否されたために失敗した場合は、そのサブエージェントをフォアグラウンドで再開して、必要な権限を承認できます。詳しくは、以下の [Resuming Subagents](#resuming-subagents) を参照してください。
</Tip>

***

<div id="monitoring-subagents">
  ## サブエージェントの監視
</div>

<div id="subagent-indicator">
  ### サブエージェントのインジケーター
</div>

バックグラウンドでサブエージェントが実行されている場合は、入力欄の下にステータスを示すインジケーターが表示されます。入力欄で <kbd>↓</kbd> を押すとインジケーターに移動でき、<kbd>Enter</kbd> を押すとサブエージェントパネルを開けます。

フォアグラウンドでサブエージェントが実行されている場合、スピナーには **「サブエージェント実行中 · Ctrl+B でバックグラウンド実行」** と表示されます。

<div id="subagent-panel">
  ### サブエージェントパネル
</div>

サブエージェントパネルでは、アクティブなサブエージェントと完了済みのサブエージェントをすべて閲覧・管理できます。各サブエージェントのプロファイル、タイトル、ステータス、経過時間、ツール呼び出し回数が表示されます。

***

<div id="foreground-background-switching">
  ## フォアグラウンド / バックグラウンドの切り替え
</div>

サブエージェントの実行中に、フォアグラウンドとバックグラウンドを切り替えられます。

* **フォアグラウンドのサブエージェントをバックグラウンドに切り替える:** フォアグラウンドのサブエージェントの実行中に <kbd>Ctrl</kbd>+<kbd>B</kbd> を押します。サブエージェントはバックグラウンドで処理を続け、親エージェントが再開します。
* **バックグラウンドのサブエージェントをフォアグラウンドに切り替える:** サブエージェントパネルを開き、実行中のバックグラウンド サブエージェントで <kbd>f</kbd> を押します。サブエージェントの出力がインラインで表示されます。

<Note>
  サブエージェントをバックグラウンドに移した時点で、親エージェントのツール呼び出しはすでに完了しているため、親エージェントは独立して処理を続行します。サブエージェントの結果は親エージェントの現在のパイプラインには反映されませんが、完了すると通知されます。
</Note>

***

<div id="cancelling-subagents">
  ## サブエージェントのキャンセル
</div>

実行中のサブエージェントは、次の 2 つの方法でキャンセルできます。

1. **サブエージェントパネルから:** パネルを開き、実行中のサブエージェントで <kbd>x</kbd> を押します。
2. **フォアグラウンドのサブエージェント:** 現在実行中のフォアグラウンドのサブエージェントをキャンセルするには、<kbd>Ctrl</kbd>+<kbd>C</kbd> または <kbd>Esc</kbd> を押します。

***

<div id="resuming-subagents">
  ## サブエージェントの再開
</div>

キャンセルされたサブエージェント、失敗したサブエージェント、または完了したサブエージェントは、新しいプロンプトで再開できます。エージェントにサブエージェントの再開を依頼すると、中断したところから続行します。再開したサブエージェントは常に**フォアグラウンド**で実行されるため、以前に拒否されたツール呼び出しも承認できます。

これは特に次のような場合に便利です。

* バックグラウンドで実行していたサブエージェントが、必要なツールの利用を拒否されたために失敗した場合 -- フォアグラウンドで再開して、必要な権限を付与できます。
* サブエージェントは完了したものの、その結果に基づいて追加のフォローアップ作業を行わせたい場合。
* サブエージェントが途中でキャンセルされてしまい、続きを実行させたい場合。

***

<div id="nesting-depth">
  ## ネストの深さ
</div>

デフォルトでは、サブエージェントは自身のサブエージェントを起動できません。起動できるのはルートエージェントのみです。無制限にネストされるのを防ぐため、サブエージェント内ではサブエージェント ツール (`run_subagent` と `read_subagent`) は無効になっています。

ただし、**カスタム サブエージェントプロファイル**では、フロントマターで `max-nesting` フィールドを設定することで、ネストした起動を有効にできます。この値はデフォルトの最大深度を上書きし、ツリーがその上限内に収まっている限り、サブエージェントが子サブエージェントを起動できるようにします。

たとえば、`max-nesting: 3` を設定すると、次のチェーンが可能です。

```
Root agent (depth 0)
└── Custom subagent (depth 1) — 子エージェントを生成可能
    └── Child subagent (depth 2) — 子エージェントを生成可能
        └── Grandchild subagent (depth 3) — 生成不可（深さの上限に達した）
```

<Warning>
  ネストされたサブエージェントは、コストを大幅に増やす可能性があります。ネストが1段深くなるごとに、それぞれ独自のコンテキストウィンドウと推論呼び出しを持つ追加のエージェントが生成されます。この機能は、必要性をよく検討したうえで利用してください。
</Warning>

***

<div id="custom-subagents">
  ## カスタムサブエージェント
</div>

<Warning>
  カスタムサブエージェントは**実験的な機能**です。形式、動作、設定オプションは今後のリリースで変更される可能性があります。
</Warning>

組み込みの`subagent_explore`および`subagent_general`プロファイルに加えて、独自のカスタムサブエージェントプロファイルを定義できます。カスタムサブエージェントを使用すると、それぞれに固有のシステムプロンプト、ツールの制限、モデルのオーバーライド、権限を持つ、ワークフロー内の特定のタスク向けに最適化された専用ワーカーを作成できます。これは、 (高価になる可能性がある) プライマリモデルでは**実行されない**書き込み可能なサブエージェントを使う方法でもあります。`model:`と必要なツールを指定してください。

<div id="creating-a-custom-subagent">
  ### カスタムサブエージェントの作成
</div>

カスタムサブエージェントは、`agents/` 配下の名前付きディレクトリ内にある `AGENT.md` ファイルとして定義されます。ディレクトリ名がプロファイルの識別子になります。

<Tabs>
  <Tab title="プロジェクト固有">
    ```text theme={null}
    .devin/agents/
    └── reviewer/
        └── AGENT.md
    ```

    以下もサポートされています:

    ```text theme={null}
    .agents/agents/
    └── reviewer/
        └── AGENT.md
    ```
  </Tab>

  <Tab title="グローバル">
    ```text theme={null}
    # Linux/macOS
    ~/.config/devin/agents/
    └── reviewer/
        └── AGENT.md

    # Windows
    %APPDATA%\devin\agents\
    └── reviewer\
        └── AGENT.md
    ```
  </Tab>
</Tabs>

<div id="agentmd-format">
  ### AGENT.md の形式
</div>

`AGENT.md` ファイルは、skills と同じ YAML フロントマター を使用し、その後にサブエージェントのシステムプロンプトが続きます:

```markdown theme={null}
---
name: reviewer
description: Reviews code changes for correctness and style
model: sonnet
allowed-tools:
  - read
  - grep
  - glob
  - exec
permissions:
  allow:
    - Exec(git diff)
    - Exec(git log)
  deny:
    - write
    - edit
---

You are a code review subagent. Your job is to review code changes
thoroughly and report findings back to the parent agent.

Focus on:
1. Correctness — logic errors, edge cases, off-by-one mistakes
2. Security — potential vulnerabilities
3. Style — consistency with the rest of the codebase
4. Performance — obvious inefficiencies

Always cite specific file paths and line numbers in your findings.
```

<div id="frontmatter-fields">
  ### フロントマター のフィールド
</div>

| フィールド           | 型       | デフォルト                                                   | 説明                                                                           |
| --------------- | ------- | ------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `name`          | string  | ディレクトリ名                                                 | プロファイルの識別子 (組み込みプロファイルと重複してはいけません)                                           |
| `description`   | string  | なし                                                      | プロファイル選択時にエージェントに表示されます                                                      |
| `model`         | string  | デフォルトのサブエージェントモデル (デフォルトでは SWE-1.6) — 親のモデル **ではありません** | このサブエージェントが利用するモデルを上書きします                                                    |
| `allowed-tools` | list    | すべてのツール                                                 | サブエージェントが利用できるツールを制限します。`ask_user_question` は付与できません。これは常にサブエージェントには許可されません。 |
| `permissions`   | object  | 継承                                                      | 権限の上書き設定 (`allow`、`deny`、`ask`)                                              |
| `max-nesting`   | integer | なし                                                      | 最大ネスト深度を上書きし、このサブエージェントが自身のサブエージェントを生成できるようにします                              |

<div id="how-custom-subagents-are-used">
  ### カスタムサブエージェント の利用方法
</div>

定義すると、カスタム サブエージェントプロファイルは組み込みプロファイルと並んで表示されます。エージェントは利用可能な各プロファイルの説明を確認し、サブエージェント を起動する際に最も適切なものを選択します。また、プロファイル名を指定して、特定のプロファイルを利用するようエージェントに依頼することもできます (例: 「reviewer サブエージェント を使ってこのコードをレビューして」) 。

組み込みプロファイル名 (例: `subagent_explore`, `subagent_general`) と競合するカスタム サブエージェントプロファイルは、警告が表示されたうえでスキップされます。

<div id="importing-from-other-tools">
  ### 他のツールからのインポート
</div>

カスタムサブエージェントは、Claude Code のエージェント形式からもインポートできます。

| Source                | File Pattern                      |
| --------------------- | --------------------------------- |
| `.claude/agents/*.md` | 各 `.md` ファイルがサブエージェントのプロファイルになります |

<Note>
  Claude Code のエージェントファイルでは、フロントマター に `allowed-tools` ではなく `tools` を使用します。どちらの形式も自動的にサポートされます。
</Note>

<div id="examples">
  ### 使用例
</div>

<div id="read-only-research-agent">
  #### 読み取り専用調査エージェント
</div>

```markdown theme={null}
---
name: researcher
description: Deep codebase research and architecture analysis
model: sonnet
allowed-tools:
  - read
  - grep
  - glob
---

You are a research subagent specializing in codebase exploration.

Your job is to thoroughly investigate a topic and report back with:
- Relevant files and their purposes
- Architecture patterns and dependencies
- Code flow traces with specific line references

Be exhaustive — search broadly and follow references.
```

<div id="test-runner-agent">
  #### テスト実行エージェント
</div>

```markdown theme={null}
---
name: test-runner
description: Runs tests and reports results
allowed-tools:
  - read
  - grep
  - glob
  - exec
permissions:
  allow:
    - Exec(npm run test)
    - Exec(cargo nextest)
    - Exec(pytest)
---

You are a test runner subagent. Run the relevant test suites and report:
- Which tests passed and failed
- Failure messages and stack traces
- Suggestions for fixing failures
```
