🩹 All GPT-5.6 Sol turns fail because MultiAgentV2 uses reserved collaboration.spawn_agent
What issue are you seeing?
For affected GPT-5.6 Sol sessions, every request fails before the model processes the prompt with:
Invalid Value: 'tools'. Function 'collaboration.spawn_agent' is reserved for use by this model and must match the configured schema.
This happens even for prompts that do not request a subagent, making GPT-5.6 Sol unusable with the default configuration for affected users.
The failure appears to be a collision between the model-reserved collaboration.spawn_agent tool contract and Codex's independently generated MultiAgentV2 spawn_agent schema:
models-manager/models.jsonselectstool_mode = "code_mode_only"andmulti_agent_version = "v2"forgpt-5.6-sol.core/src/config/mod.rsdefaultsfeatures.multi_agent_v2.tool_namespacetocollaboration.core/src/tools/spec_plan.rswraps the locally generated MultiAgentV2 functions in that namespace.- The Responses API recognizes
collaboration.spawn_agentas model-reserved and rejects the request because the submitted schema does not exactly match the configured model schema.
This default namespace was introduced by #29067.
What steps can reproduce the bug?
- Use GPT-5.6 Sol in a fresh Codex task with the default MultiAgentV2 configuration.
- Send any prompt; it does not need to request delegation or call
spawn_agent. - Observe that the request fails immediately with the reserved-schema error above.
- Add this configuration and start a fresh task:
[features.multi_agent_v2]
tool_namespace = "agents"
- Send the same prompt again.
- Observe that it succeeds.
The A/B result changes the fully qualified tool identity from functions.collaboration.spawn_agent to functions.agents.spawn_agent without changing the underlying MultiAgentV2 implementation. This strongly isolates the failure to the reserved collaboration namespace/schema collision.
Observed with the current GPT-5.6 Sol rollout. The checked local Codex runtime reports codex-cli 0.144.0; current repository main at the time of investigation was a6b99ee5c45e35165c9bac9da4cec65f2ca55bc9.
What is the expected behavior?
GPT-5.6 Sol should accept ordinary requests with the default Codex configuration.
Codex should either:
- submit the exact canonical schema configured for Sol's reserved
collaborationtools; - use a non-reserved namespace for its independently generated MultiAgentV2 schema; or
- negotiate the model's supported collaboration tool contract rather than assuming the namespace is available.
A tool incompatibility should not make every turn fail before inference.
Fixes
Workaround:
[features.multi_agent_v2]
tool_namespace = "agents"
Ideal fix:
Either make that the default, or change the Responses API backend to no longer make collaboration special.
Additional information
This appears distinct from #26753, #27331, and #27589. Those issues report request-wide failures caused by encrypted parameters not being enabled for the selected model. This report concerns the separate validator error that collaboration.spawn_agent is reserved and does not match the model-configured schema.
7 Comments
You can do this to stay on v1:
Then create
~/.codex/models-v1.jsonfrom the current model catalog and change only these fields:and optionally:
You can also optionally instead set version as
"null"for all three Sol, Terra, and Luna, so that multi-agent schema version is defined by features config, not model catalog, but that's up to you.Confirmed: this issue also affected a Codex Desktop setup using a third-party Responses-compatible proxy.
For fresh GPT-5.6 Sol/Terra tasks, an ordinary prompt failed before inference with a proxy-facing
502 Bad Gateway. The proxy masked the upstream validation error, so the useful signal was only visible by replaying the exact request body.I isolated the failure with A/B tests against the same recorded request:
additional_toolsnamespace namedcollaborationreturned 502.collaborationbut setting itstoolsarray to[]still returned 502.collaborationtoagentsreturned 200.That confirms the collision is caused by the reserved
collaboration.*namespace itself, not by a particular child tool schema or the request size.Applying this workaround fixed new Codex Desktop tasks after a full restart:
Existing tasks retained their original tool snapshot and continued to fail; newly created tasks succeeded. This is a strong match for the reserved-schema collision described in the issue.
The codebase also has tests validating that the "agents" namespace works, which leads me to believe that that was always the intended namespace, but that refactor never happened.
@jschyz fyi disabling multi_agent_v2 does nothing, as the codex CLI currently ignores this flag if the model catalog defines a value (which it does for Terra/Sol).
I've generally found multi_agent_v2 to be pretty good and I wouldn't recommend disabling it.
Note that you may also want to set this flag to avoid a certain insidious class of subagent delegation bug:
Reference #31814 for more on that.
Confirmed on Windows x64 with Codex App 26.707.9981.0 and Codex CLI 0.144.1.
With
multi_agent = true, bothgpt-5.6-terraandgpt-5.6-solfailed before inference with the exact reservedcollaboration.spawn_agentschema error. The same failure reproduced with the 0.144.4 binary.Adding only this configuration, while keeping multi-agent enabled, fixed both models in a local Codex CLI request:
The Codex App was restarted to load the same configuration. This confirms the
collaborationnamespace collision and theagentsnamespace workaround on a native Windows setup.Confirmed on Codex for iOS (2026-07-26). An ordinary prompt failed before inference with this exact response:
The pr #29067 (
tool_namespace: Nonechanged toSome("collaboration"), with the previously-configurablefeatures.multi_agent_v2.tool_namespaceremoved) appears to be the root cause of a recurring class of bug reports since it merged.Any provider that reports
namespace_tools: true(the default for everything except Bedrock) now has its multi-agent-v2 tools force-wrapped under thecollaborationnamespace, which requires the model/backend to emit a genuine structuralnamespacefield on function calls - something most non-OpenAI-hosted models/servers (and even some OpenAI-hosted configurations on non-ChatGPT backends) don't produce.I confirmed this with a direct before/after test: same custom OpenAI-compatible provider, same open-weight model (Qwen3.8-27B), same prompt.
codex-cli 0.142.0(last stable release before the PR merged):spawn_agent/wait_agent/list_agentsare called flat, all succeed, and the subagent actually runs and replies.ERROR: unsupported call: collaboration.spawn_agent, because the model has no way to emit thenamespacefield this now requires.Open-weight models such as Qwen (and presumably any other model/server not specifically fine-tuned on this namespace-grouped tool-call convention) can no longer use multi-agent-v2 at all, even when tool-calling otherwise works fine for that model (flat tools like
shell_commandandupdate_planare unaffected).Since
tool_namespacewas removed as a config surface, there's no way to opt back out to flat tool names to restore compatibility.Also issue #31882.
Would it make sense to reintroduce a way to disable namespace wrapping (or gate it on a provider capability that reflects actual namespace-tool-call support, not just "is not Bedrock") so non-namespace-capable providers/models can keep using flat multi-agent-v2 tool names?