For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション
Theme

サブエージェント

ChatGPT と Codex でサブエージェントを使う方法と、Codex のカスタムエージェントの設定方法

ChatGPT Work と Codex では、専門のエージェントを並列に起動し、それぞれの結果を 1 つの回答にまとめるサブエージェントワークフローを利用できます。コードベースの調査や、複数のステップからなる計画に沿った機能の実装など、並列に進められる作業が多い複雑なタスクで特に役立ちます。

ローカルの Codex クライアントでは、タスクに合わせてモデル設定や指示を変えたカスタムエージェントも定義できます。

利用環境

現在の Codex では、サブエージェントワークフローがデフォルトで有効になっています。サブエージェントの活動は、ChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能で確認できます。

各サブエージェントが個別にモデルやツールを使用するため、サブエージェントワークフローは、同等の作業を 1 つのエージェントで実行する場合よりも多くのトークンを消費します。

アプリのチャットで、独立して進められる部分をサブエージェントに任せるよう Codex に依頼します。現在のローカル版 Codex は、直接依頼された場合、または適用対象の AGENTS.md やスキルの指示で求められている場合に作業を委任します。アプリには各サブエージェントのスレッドが表示され、作業内容とメインチャットに返された要約を確認できます。

サブエージェントワークフローの利点

コンテキストウィンドウが大きくても、モデルの処理能力には限界があります。要件や制約を定め、判断を下すメインチャットに、調査メモ、テストログ、スタックトレース、コマンド出力などの中間出力が大量に流れ込むと、やり取りを重ねるうちに回答の信頼性が低下することがあります。

この問題は、次のように説明されます。

  • コンテキストの汚染:大量の中間出力に有用な情報が埋もれます。
  • コンテキストの劣化:関連性の低い情報がチャットに蓄積するにつれて、モデルの性能が低下します。

背景については、Chroma によるコンテキストの劣化に関する解説を参照してください。

サブエージェントワークフローでは、中間出力の多い作業をメインスレッドから切り離せます。

  • メインエージェントは、要件、判断、最終成果物に集中します。
  • 専門のサブエージェントを並列に実行し、調査、テスト、ログ分析を任せます。
  • サブエージェントは、中間出力をそのまま返す代わりに要約を返します。

独立した作業を並列に進められる場合は、時間も短縮できます。また、大きなタスクを範囲の明確な単位に分割すると、取り組みやすくなります。たとえば Codex は、数百万トークンに及ぶ文書の分析を小さな課題に分け、要点をメインスレッドに返すことができます。

まずは、調査、テスト、トリアージ、要約など、読み取りが中心のタスクでエージェントを並列に使ってみてください。書き込みが多い作業を並列化する場合は、より慎重に進めてください。複数のエージェントが同時にコードを編集すると、変更が競合し、調整の手間が増えることがあります。

基本用語

Codex のサブエージェントワークフローでは、次の用語を使います。

  • サブエージェントワークフロー:Codex が複数のエージェントを並列に実行し、その結果をまとめるワークフローです。
  • サブエージェント:特定のタスクを任せるために Codex が起動するエージェントです。
  • エージェントスレッド:サブエージェントが作業するスレッドです。対応クライアントでは、スレッドを開いて進捗や結果を確認できます。

サブエージェントワークフローの開始方法

サブエージェントの使用や複数のエージェントによる並列作業を直接依頼してください。適用対象のプロジェクトやスキルの指示で委任が求められている場合も、Codex は作業を委任できます。

手動で開始するには、「エージェントを 2 つ起動して」「この作業を分担させて並列に進めて」「項目ごとにエージェントを 1 つ使って」など、具体的に指示します。各サブエージェントが個別にモデルやツールを使用するため、同等の作業を 1 つのエージェントで実行する場合よりも多くのトークンを消費します。

プロンプトには、作業の分け方、Codex が次に進む前にすべてのエージェントの完了を待つかどうか、返してほしい要約や出力を明記してください。

このブランチをサブエージェントで並列にレビューしてください。セキュリティ上のリスク、テストでカバーできていない箇所、保守性の 3 項目にサブエージェントを 1 つずつ割り当てて起動してください。3 つすべてのレビューが終わるのを待ってから、指摘事項を項目別にまとめ、それぞれに該当するファイルを示してください。

モデルと推論強度の選択

適切なモデルと推論設定は、エージェントの役割によって異なります。

サブエージェントのモデルも model_reasoning_effort も設定しない場合、サブエージェントは親エージェントのモデルと推論強度を継承します。起動時の明示的な指定または [agents] のデフォルト設定でモデルを選択し、どちらにも推論強度の指定がない場合は、そのモデルのデフォルトの推論強度を使用します。タスクごとに性能、速度、料金のバランスを取るには、プロンプトでモデルや推論強度を指定するか、[agents] のデフォルト値を config.toml で設定するか、カスタムエージェントファイルで model と model_reasoning_effort を直接設定します。 たとえば、短時間で調査するには gpt-6-luna を使い、高度な推論が必要な場合は gpt-6.1-sol の推論強度を高めに設定します。

Codex の多くのタスクでは、まず gpt-6.1-sol を使ってみてください。サインイン中のアカウントまたはワークスペースにアクセス権があれば利用できます。 それ以外の場合は、利用可能なモデルを選んでください。gpt-6-luna は、サブエージェントに軽い作業を任せて、時間とコストを抑えたい場合に適しています。

モデルの選び方

  • gpt-6.1-sol:難しいタスクを担うエージェントには、まずこのモデルを使ってください。作業の進め方が明確でなく、広いコンテキストを踏まえて計画を立て、ツールの使用や検証を含む複数のステップを最後まで遂行する必要がある場合に適しています。
  • gpt-6-luna:範囲を絞って高速に動作するエージェントに適しています。内容が明確な作業、繰り返しの作業、大量の処理に使ってください。

推論強度(model_reasoning_effort)

GPT-6.1 Sol では、クライアントと選択したモデルの両方が対応している推論強度を使ってください。モデル設定を明示する場合、まずは GPT-6 Luna なら high、GPT-6 Astra なら low を設定してください。その後、選択したモデルが対応するレベルの範囲で、タスクに応じて調整します。

  • ultra:選択したモデルが対応しており、最も深い推論が必要な場合に使います。
  • max と xhigh:選択したモデルがこれらのレベルに対応しており、特に高度な推論が必要な場合に使います。
  • high:複雑なロジックをたどる、前提を検証する、エッジケースを検討するといった作業に使います。たとえば、レビューやセキュリティを担当するエージェントに適しています。
  • medium:速度と推論の深さのバランスを取ります。
  • low:タスクが単純で、速度を最優先する場合に使います。

推論強度を上げると応答時間とトークン使用量が増えますが、複雑な作業では品質が向上することがあります。詳しくは、モデル、設定の基本、設定リファレンスを参照してください。

エージェント間の調整とスレッドの制御

ChatGPT または Codex が、新しいサブエージェントの起動、追加指示の振り分け、結果の待機、エージェントスレッドの終了など、エージェント間の調整を行います。

多数のエージェントが実行中の場合、Codex は依頼した結果がすべてそろうまで待ち、まとめて回答します。

現在のローカル版 Codex は、直接依頼された場合、または適用対象のプロジェクトやスキルの指示で求められている場合にエージェントを起動します。

実際の動作を確認するには、自分のプロジェクトで次のプロンプトを試してください。

現在の PR(このブランチと main の差分)を、次の観点からレビューしてください。項目ごとにエージェントを 1 つ起動し、すべてのエージェントの作業が終わるのを待ってから、結果を項目別にまとめてください。
1. セキュリティ上の問題
2. コードの品質
3. バグ
4. 競合状態
5. テスト結果の不安定さ
6. コードの保守性

サブエージェントの管理

  • メインスレッドの活動表示からサブエージェントのスレッドを開くと、作業内容を確認できます。
  • 実行中のサブエージェントへの追加指示や停止、完了したサブエージェントのスレッドの終了は、Codex に直接依頼してください。

承認とサンドボックスの設定

サブエージェントは現在のサンドボックスポリシーを継承します。

サブエージェントは、コンポーザーの下で選択した権限モードを継承します。作業の委任を Codex に依頼する前に、親ターンの権限モードを選択してください。

サンドボックスと承認は親セッションで設定してください。カスタムエージェントの指示で編集を控えるよう求めることはできますが、その指示によって読み取り専用のサンドボックスが別途作成されるわけではありません。

カスタムエージェント

Codex には次のエージェントが組み込まれています。

  • default:ほかに適したエージェントがない場合に使う汎用エージェント
  • worker:実装や修正を担当する実行重視のエージェント
  • explorer:読み取りを中心にコードベースを調査するエージェント

独自のカスタムエージェントを定義するには、個人用なら ~/.codex/agents/、プロジェクト専用なら .codex/agents/ に個別の TOML ファイルを追加します。

各ファイルで 1 つのカスタムエージェントを定義します。カスタムエージェントでは、モデル設定や指示を変更したり、対応する機能を無効にしたりできます。権限、プロバイダー、MCP サーバーは親から継承され、カスタムエージェントファイルでは上書きできません。

個々のカスタムエージェントファイルには、次のフィールドが必須です。

  • name
  • description
  • developer_instructions

カスタムエージェントファイルに model または model_reasoning_effort を設定した場合は、その値が優先されます。ファイルを適用する前に、Codex は各設定値を、起動時の明示的な指定、対応する [agents] のデフォルト値、親の値の順に決定します。起動時の明示的な指定または [agents] のデフォルト設定でモデルを選択し、どちらにも推論強度の指定がない場合、Codex はそのモデルのデフォルトの推論強度を使用します。カスタムエージェントファイルで model だけを設定すると、先に決定した推論強度が維持されます。選択したモデルがその強度に対応していない場合や、別の強度を使いたい場合は、ファイルに model_reasoning_effort も設定してください。スキルは親から継承されますが、カスタムエージェントでは skills.config で個々のスキルを無効にできます。

グローバル設定

サブエージェントのグローバル設定は、引き続き [agents] セクションに記述します。詳しくは設定の優先順位を参照してください。

フィールド 型 必須 用途
agents.enabled boolean いいえ マルチエージェントツールを有効または無効にします。
agents.max_concurrent_threads_per_session number いいえ 起動したエージェントのスレッドのうち、同時に開いておける数の上限を設定します。メインスレッドは数えません。
agents.default_subagent_model string いいえ 起動するエージェントのデフォルトのモデルを設定します。
agents.default_subagent_reasoning_effort string いいえ 起動するエージェントのデフォルトの推論強度を設定します。
agents.interrupt_message boolean いいえ エージェントのターンが中断されたとき、モデルが参照できるメッセージを記録します。

補足

  • agents.enabled のデフォルトは true です。マルチエージェントツールを無効にするには false に設定してください。
  • agents.max_concurrent_threads_per_session を設定しない場合、Codex がデフォルト値を選びます。既存の設定では、従来の別名 agents.max_threads を引き続き使用できます。
  • 起動時に明示的に指定した値は、agents.default_subagent_model と agents.default_subagent_reasoning_effort よりも優先されます。
  • agents.interrupt_message のデフォルトは true です。false に設定すると、モデルに中断を伝えるメッセージがエージェントのコンテキストに含まれなくなります。
  • カスタムエージェントの名前が explorer などの組み込みエージェントと一致する場合は、カスタムエージェントが優先されます。

カスタムエージェントファイルのスキーマ

フィールド 型 必須 用途
name string はい Codex がこのエージェントを起動または参照するときに使用する名前です。
description string はい Codex がこのエージェントをどのような場合に使うべきかを利用者に説明します。
developer_instructions string はい エージェントの動作を定める基本指示です。

model、model_reasoning_effort、model_reasoning_summary、model_verbosity を使うと、モデルの動作をカスタマイズできます。指定可能な値は設定リファレンスを参照してください。

カスタムエージェントの機能を制限するには、対応する機能のキーを false に設定します。対象のキーは features.shell_tool、features.apps、features.plugins、features.memories、features.request_permissions_tool です。個々のスキルを無効にするには skills.config を、同梱のスキルを無効にするには skills.bundled.enabled = false を使います。skills.include_instructions = false を設定すると、自動で追加されるスキルの指示ブロックを省略できます。管理者が定めた要件は引き続き適用されます。

sandbox_mode、approval_policy、model_provider、mcp_servers など、ほかのセッション設定をカスタムエージェントファイルに記述しても、親の設定は上書きされません。サービスティアもルートセッションの設定に従います。エージェントが MCP サーバーを使えるようにするには、親セッションで設定してください。

Codex は name フィールドでカスタムエージェントを識別します。ファイル名をエージェント名に合わせるとわかりやすくなりますが、実際に識別に使われるのは name フィールドの値です。

カスタムエージェントの例

カスタムエージェントは、担当範囲を絞り、作業方針を明確にすると効果的です。それぞれに明確な役割を 1 つ与え、その役割に合ったツールを用意し、担当外の作業に踏み込まないよう指示してください。

以下の例では、サインイン中のアカウントまたはワークスペースにアクセス権がある場合に GPT-6.1 Sol を使います。利用できない場合は、使えるモデルを選んでください。

例 1:PR レビュー

この構成では、レビューを 3 つの専門カスタムエージェントで分担します。

  • pr_explorer はコードベースの構造を把握し、判断の根拠となる情報を集めます。
  • reviewer は、コードの正しさ、セキュリティ、テストに関するリスクを調べます。
  • docs_researcher は、専用の MCP サーバーを通じてフレームワークや API のドキュメントを確認します。

プロジェクト設定(.codex/config.toml)

[agents]
max_concurrent_threads_per_session = 8

[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp"

.codex/agents/pr-explorer.toml:

name = "pr_explorer"
description = "Read-only codebase explorer for gathering evidence before changes are proposed."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Stay in exploration mode.
Do not edit files.
Trace the real execution path, cite files and symbols, and avoid proposing fixes unless the parent agent asks for them.
Prefer fast search and targeted file reads over broad scans.
"""

.codex/agents/reviewer.toml:

name = "reviewer"
description = "PR reviewer focused on correctness, security, and missing tests."
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
developer_instructions = """
Review code like an owner.
Do not edit files.
Prioritize correctness, security, behavior regressions, and missing test coverage.
Lead with concrete findings, include reproduction steps when possible, and avoid style-only comments unless they hide a real bug.
"""

.codex/agents/docs-researcher.toml:

name = "docs_researcher"
description = "Documentation specialist that uses the docs MCP server to verify APIs and framework behavior."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Use the docs MCP server to confirm APIs, options, and version-specific behavior.
Return concise answers with links or exact references when available.
Do not make code changes.
"""

この構成は、次のようなプロンプトに適しています。

このブランチと main の差分をレビューしてください。pr_explorer には変更の影響を受けるコードの実行経路を特定させ、reviewer には具体的なリスクを洗い出させてください。docs_researcher には、このパッチが依存するフレームワークの API を検証させてください。

例 2:フロントエンド連携のデバッグ

この構成は、UI のリグレッション、ブラウザでの一連の操作が不安定になる問題、アプリケーションコードと実際に動作している製品の両方を調べる必要がある連携上の不具合の調査に役立ちます。

プロジェクト設定(.codex/config.toml)

[agents]
max_concurrent_threads_per_session = 6

[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
startup_timeout_sec = 20

.codex/agents/code-mapper.toml:

name = "code_mapper"
description = "Read-only codebase explorer for locating the relevant frontend and backend code paths."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Map the code that owns the failing UI flow.
Do not edit files.
Identify entry points, state transitions, and likely files before the worker starts editing.
"""

.codex/agents/browser-debugger.toml:

name = "browser_debugger"
description = "UI debugger that uses browser tooling to reproduce issues and capture evidence."
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
developer_instructions = """
Reproduce the issue in the browser, capture exact steps, and report what the UI actually does.
Use browser tooling for screenshots, console output, and network evidence.
Do not edit application code.
"""

.codex/agents/ui-fixer.toml:

name = "ui_fixer"
description = "Implementation-focused agent for small, targeted fixes after the issue is understood."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Own the fix once the issue is reproduced.
Make the smallest defensible change, keep unrelated files untouched, and validate only the behavior you changed.
"""

[[skills.config]]
path = "/Users/me/.agents/skills/docs-editor/SKILL.md"
enabled = false

この構成は、次のようなプロンプトに適しています。

設定モーダルで変更を保存できない理由を調べてください。browser_debugger には問題を再現させ、code_mapper には不具合に関わるコードの実行経路をたどらせてください。保存処理がどのように失敗するかが明らかになったら、ui_fixer に必要最小限の修正を実装させてください。