ChatGPT Work と Codex では、専門のエージェントを並列に起動し、それぞれの結果を 1 つの回答にまとめるサブエージェントワークフローを利用できます。コードベースの調査や、複数のステップからなる計画に沿った機能の実装など、並列に進められる作業が多い複雑なタスクで特に役立ちます。
ローカルの Codex クライアントでは、タスクに合わせてモデル設定や指示を変えたカスタムエージェントも定義できます。
利用環境
対象アカウントでは、ChatGPT Work でサブエージェントワークフローを利用し、各エージェントの活動を確認できます。
現在の Codex では、サブエージェントワークフローがデフォルトで有効になっています。サブエージェントの活動は、ChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能で確認できます。
各サブエージェントが個別にモデルやツールを使用するため、サブエージェントワークフローは、同等の作業を 1 つのエージェントで実行する場合よりも多くのトークンを消費します。
ChatGPT Work では、独立して進められる作業をサブエージェントに任せるよう ChatGPT に依頼します。エージェントは ChatGPT のホスト環境で動作し、その活動と結果がチャットに表示されます。ほとんどの応答性能レベルでは、作業の委任を明示的に依頼してください。ウルトラでは、並列実行によって速度や品質が大きく向上すると判断した場合、ChatGPT が自ら作業を委任できます。
アプリのチャットで、独立して進められる部分をサブエージェントに任せるよう Codex に依頼します。現在のローカル版 Codex は、直接依頼された場合、または適用対象の AGENTS.md やスキルの指示で求められている場合に作業を委任します。アプリには各サブエージェントのスレッドが表示され、作業内容とメインチャットに返された要約を確認できます。
対話型の CLI セッションで、サブエージェントを使うよう Codex に依頼します。Codex は、適用対象の AGENTS.md やスキルにある委任の指示にも従えます。/subagents を使うと、実行中のエージェントのスレッドを確認したり、スレッドを切り替えたりできます。メインスレッドがサブエージェントの結果を集約し、最終回答にまとめます。
IDE のチャットで、独立して進められる部分をサブエージェントに任せるよう Codex に依頼します。Codex は、適用対象の AGENTS.md やスキルにある委任の指示にも従えます。バックグラウンドエージェントの UI が利用できる場合、実行中のサブエージェントはコンポーザーの上に表示されます。パネルを展開すると、状態を確認したり、実行中のサブエージェントをすべて停止したり、個別のスレッドを開いたりできます。
サブエージェントワークフローの利点
コンテキストウィンドウが大きくても、モデルの処理能力には限界があります。要件や制約を定め、判断を下すメインチャットに、調査メモ、テストログ、スタックトレース、コマンド出力などの中間出力が大量に流れ込むと、やり取りを重ねるうちに回答の信頼性が低下することがあります。
この問題は、次のように説明されます。
- コンテキストの汚染:大量の中間出力に有用な情報が埋もれます。
- コンテキストの劣化:関連性の低い情報がチャットに蓄積するにつれて、モデルの性能が低下します。
背景については、Chroma によるコンテキストの劣化に関する解説を参照してください。
サブエージェントワークフローでは、中間出力の多い作業をメインスレッドから切り離せます。
- メインエージェントは、要件、判断、最終成果物に集中します。
- 専門のサブエージェントを並列に実行し、調査、テスト、ログ分析を任せます。
- サブエージェントは、中間出力をそのまま返す代わりに要約を返します。
独立した作業を並列に進められる場合は、時間も短縮できます。また、大きなタスクを範囲の明確な単位に分割すると、取り組みやすくなります。たとえば Codex は、数百万トークンに及ぶ文書の分析を小さな課題に分け、要点をメインスレッドに返すことができます。
まずは、調査、テスト、トリアージ、要約など、読み取りが中心のタスクでエージェントを並列に使ってみてください。書き込みが多い作業を並列化する場合は、より慎重に進めてください。複数のエージェントが同時にコードを編集すると、変更が競合し、調整の手間が増えることがあります。
基本用語
Codex のサブエージェントワークフローでは、次の用語を使います。
- サブエージェントワークフロー:Codex が複数のエージェントを並列に実行し、その結果をまとめるワークフローです。
- サブエージェント:特定のタスクを任せるために Codex が起動するエージェントです。
- エージェントスレッド:サブエージェントが作業するスレッドです。対応クライアントでは、スレッドを開いて進捗や結果を確認できます。
サブエージェントワークフローの開始方法
ほとんどの応答性能レベルでは、サブエージェントの使用や複数のエージェントによる並列作業を直接依頼してください。ウルトラでは、個別に依頼しなくても、ChatGPT が独立して進めるのに適した作業を自らサブエージェントに委任できます。
サブエージェントの使用や複数のエージェントによる並列作業を直接依頼してください。適用対象のプロジェクトやスキルの指示で委任が求められている場合も、Codex は作業を委任できます。
手動で開始するには、「エージェントを 2 つ起動して」「この作業を分担させて並列に進めて」「項目ごとにエージェントを 1 つ使って」など、具体的に指示します。各サブエージェントが個別にモデルやツールを使用するため、同等の作業を 1 つのエージェントで実行する場合よりも多くのトークンを消費します。
プロンプトには、作業の分け方、Codex が次に進む前にすべてのエージェントの完了を待つかどうか、返してほしい要約や出力を明記してください。
このブランチをサブエージェントで並列にレビューしてください。セキュリティ上のリスク、テストでカバーできていない箇所、保守性の 3 項目にサブエージェントを 1 つずつ割り当てて起動してください。3 つすべてのレビューが終わるのを待ってから、指摘事項を項目別にまとめ、それぞれに該当するファイルを示してください。
モデルと推論強度の選択
適切なモデルと推論設定は、エージェントの役割によって異なります。
ChatGPT Work では、コンポーザーでモデルと応答性能レベルを選択します。選択したモデルに応じて、軽量、中程度、高、超高、マックスなどのレベルを利用できます。ウルトラは、対象アカウントで対応モデルを使用する場合にのみ利用できます。ウルトラでは最大限の推論を行い、ChatGPT が適切な作業を自らサブエージェントに委任できます。
ほかの応答性能レベルで並列作業を任せたい場合は、サブエージェントの使用を明示的に依頼してください。
サブエージェントのモデルも 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 は依頼した結果がすべてそろうまで待ち、まとめて回答します。
ほとんどの応答性能レベルでは、ChatGPT は直接依頼を受けてからエージェントを起動します。ウルトラでは、並列作業が有効な場合に ChatGPT が自ら作業を委任することもできます。
現在のローカル版 Codex は、直接依頼された場合、または適用対象のプロジェクトやスキルの指示で求められている場合にエージェントを起動します。
実際の動作を確認するには、自分のプロジェクトで次のプロンプトを試してください。
現在の PR(このブランチと main の差分)を、次の観点からレビューしてください。項目ごとにエージェントを 1 つ起動し、すべてのエージェントの作業が終わるのを待ってから、結果を項目別にまとめてください。
1. セキュリティ上の問題
2. コードの品質
3. バグ
4. 競合状態
5. テスト結果の不安定さ
6. コードの保守性
サブエージェントの管理
サブエージェントを開くと、読み取り専用の実行中と完了の一覧が表示されます。完了したサブエージェントを選択すると、詳細と結果を確認できます。Web のサイドバーにはサブエージェントの活動が表示されますが、個々のサブエージェントを停止したり、追加の指示を出したりする操作はできません。
- メインスレッドの活動表示からサブエージェントのスレッドを開くと、作業内容を確認できます。
- 実行中のサブエージェントへの追加指示や停止、完了したサブエージェントのスレッドの終了は、Codex に直接依頼してください。
- CLI で
/subagentsを使うと、実行中のエージェントのスレッドを切り替えて、進行中の作業を確認できます。 - 実行中のサブエージェントへの追加指示や停止、完了したエージェントスレッドの終了は、Codex に直接依頼してください。
- バックグラウンドエージェントのパネルが利用できる場合は、パネルを展開して、状態を確認したり、実行中のサブエージェントを停止したり、サブエージェントのスレッドを開いたりできます。
- 実行中のサブエージェントへの追加指示や停止、完了したサブエージェントのスレッドの終了は、Codex に直接依頼してください。
承認とサンドボックスの設定
サブエージェントは現在のサンドボックスポリシーを継承します。
ChatGPT Work はホスト環境でサブエージェントを実行するため、ローカル版 Codex のサンドボックスや承認モードの設定は利用できません。サブエージェントは親チャットで利用可能なツールを使用します。ウェブサイトやコネクタへのアクセス権限は、ツールごとに決まります。
サブエージェントは、コンポーザーの下で選択した権限モードを継承します。作業の委任を Codex に依頼する前に、親ターンの権限モードを選択してください。
対話型の CLI セッションでは、メインスレッドを表示している間も、選択していないエージェントスレッドからの承認リクエストが表示されることがあります。承認用のオーバーレイにはリクエスト元のスレッドのラベルが表示されます。o を押すとそのスレッドを開き、内容を確認してからリクエストを承認または拒否したり、リクエストに回答したりできます。
非対話型のワークフローでは、新たな承認が必要な操作は失敗し、Codex が親ワークフローにエラーを返します。それ以外でも、実行中に新しい承認リクエストを表示できない場合は同様です。
サブエージェントは、/permissions や --yolo による変更を含め、親ターンの現在のサンドボックス設定と承認設定を継承します。カスタムエージェントファイルでこれらの設定を上書きすることはできません。
サブエージェントは、コンポーザーの下で選択した権限モードを継承します。作業の委任を Codex に依頼する前に、親ターンの権限モードを選択してください。
サンドボックスと承認は親セッションで設定してください。カスタムエージェントの指示で編集を控えるよう求めることはできますが、その指示によって読み取り専用のサンドボックスが別途作成されるわけではありません。
カスタムエージェント
Codex には次のエージェントが組み込まれています。
default:ほかに適したエージェントがない場合に使う汎用エージェントworker:実装や修正を担当する実行重視のエージェントexplorer:読み取りを中心にコードベースを調査するエージェント
独自のカスタムエージェントを定義するには、個人用なら ~/.codex/agents/、プロジェクト専用なら .codex/agents/ に個別の TOML ファイルを追加します。
各ファイルで 1 つのカスタムエージェントを定義します。カスタムエージェントでは、モデル設定や指示を変更したり、対応する機能を無効にしたりできます。権限、プロバイダー、MCP サーバーは親から継承され、カスタムエージェントファイルでは上書きできません。
個々のカスタムエージェントファイルには、次のフィールドが必須です。
namedescriptiondeveloper_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 に必要最小限の修正を実装させてください。