Multi-agent prompt contains conflicting delegation guidance
Multi-agent mode prompt contains conflicting delegation guidance
Summary
Codex can send the model multiple native multi-agent instructions that encourage delegation and then send a later developer instruction that prohibits delegation unless explicitly requested. The later instruction is technically authoritative, but the earlier delegation guidance remains in the same request and creates avoidable prompt conflict.
Observed behavior
A normal Codex app-server turn can contain all of the following:
- The native model instruction template says to prefer parallelization when possible.
- The native multi-agent root-agent usage hint describes
spawn_agent,followup_task,send_message,fork_turns, child agents, and the four-agent concurrency limit. - Codex adds a later developer fragment equivalent to:
> Any earlier instruction enabling proactive multi-agent delegation no longer applies. Do not spawn sub-agents unless the user or applicable AGENTS.md/skill instructions explicitly ask for sub-agents, delegation, or parallel agent work.
This is especially confusing for a model because the request contains substantial positive delegation framing before the explicit-request-only restriction.
Source evidence
codex-rs/core/src/config/mod.rs- Defines the default root-agent multi-agent usage hint, including the four-concurrency-slot guidance.
codex-rs/core/src/context/multi_agent_mode_instructions.rs- Defines the explicit-request-only and proactive multi-agent messages.
codex-rs/core/src/session/multi_agents.rs- Selects
ExplicitRequestOnlyfor ordinary reasoning efforts andProactiveforUltra, unless a custom hint is configured. codex-rs/core/src/session/mod.rs- Appends the multi-agent mode fragment to the contextual model input.
codex-rs/models-manager/models.json- Contains the native model instruction template that recommends parallelization.
Why this matters
- The model must resolve a policy conflict that Codex created itself.
- The root-agent collaboration prompt becomes partly misleading on ordinary turns: it explains how and why to delegate, while the later mode message says not to do so.
- The extra instructions consume context and may produce inconsistent delegation behavior across reasoning efforts and session sources.
- Integrations that add their own delegation guidance can amplify the conflict.
Expected behavior
The request should present one coherent multi-agent policy for the active mode:
- In explicit-request-only mode, native prompt text should explain the available collaboration tools without broadly encouraging proactive delegation.
- In proactive mode, the prompt should clearly authorize delegation without requiring the model to reinterpret earlier restrictions.
- A later mode-switch message should be needed only when the effective mode actually changes.
Possible fixes
One of the following approaches, or an equivalent design, would help:
- Make the root-agent usage hint mode-aware and remove proactive-sounding language in explicit-request-only mode.
- Generate the root-agent usage hint and the multi-agent mode policy as one composed fragment so they cannot contradict each other.
- Avoid emitting the explicit-request-only correction when the root-agent hint has already been rendered in a mode-consistent form.
- Add tests that assert the final contextual input contains exactly one effective delegation policy for each mode.
Separate concern
The Responses request may also contain parallel_tool_calls: false. That is a model capability/API setting derived from supports_parallel_tool_calls; it is related terminology but should be investigated separately from the multi-agent prompt policy.
Reproduction
Run Codex app-server with multi-agent v2 enabled at ordinary/high reasoning effort, start a normal turn, and inspect the final model input. Search for:
You are \/root\``fork_turnsAny earlier instruction enabling proactive multi-agent delegation no longer appliesprefer parallelization
The resulting request contains both the delegation-oriented root-agent guidance and the explicit-request-only developer message.
1 Comment
In Codex CLI, not an external program using app-server, I'm having the same issue. My AGENTS.md explicitly asks for aggressive subagent usage, but after one or several compactions that can get lost and my orchestrator agent starts doing all of the work itself. It says that because it had a summary of AGENTS.md in the compaction summary that it didn't read it again, but that a developer message wrapped in `<multi_agent_mode>...</multi_agent_mode>" includes "Do not spawn sub-agents unless the user or applicable AGENTS.md/skill instructions explicitly ask for sub-agents, delegation, or parallel agent work."