[Bug] gpt-5.6-luna subagents lose spawn_agent in Multi-Agent V2 while Luna root and Sol children retain it
Codex version
Codex Desktop with CLI 0.147.0 on Linux x86_64.
Configuration
[features.multi_agent_v2]
enabled = true
max_concurrent_threads_per_session = 30
The root session and the custom child agent both use:
- model:
gpt-5.6-luna - reasoning effort:
max - multi-agent version:
v2
No explicit agents.max_depth override is configured.
What issue are you seeing?
A root Luna session exposes collaboration.spawn_agent and can use it successfully, but a Luna subagent at depth 1 does not receive the same collaboration tool and therefore cannot spawn a required grandchild.
This is not a different Luna invocation syntax:
- The Luna root session made 22 successful
collaboration.spawn_agentcalls. - A Luna child session was explicitly instructed to call
spawn_agentdirectly, but the collaboration tool was absent. Searching its effective tool registry returned nospawn_agententry. - The child received the standard multi-agent developer instruction saying child agents can spawn their own subagents, so the prompt and effective tool surface disagree.
Controlled comparison
Using the same Multi-Agent V2 runtime, custom agent role, prompt, depth, and fork_turns: "none":
| Child model | Direct spawn attempts | Successful collaboration.spawn_agent calls |
|---|---:|---:|
| gpt-5.6-luna | 3 | 0 |
| gpt-5.6-sol | 3 | 3 |
The Sol children successfully spawned grandchildren at the same depth where the Luna children had no spawn tool.
Steps to reproduce
- Start a Multi-Agent V2 root session using
gpt-5.6-luna. - Confirm that the root can call
collaboration.spawn_agent. - Spawn a custom child agent whose TOML pins
model = "gpt-5.6-luna". - Explicitly ask that child to call
spawn_agentdirectly. - Observe that the collaboration spawn tool is not available to the child.
- Repeat with an otherwise equivalent child using
gpt-5.6-sol. - Observe that the Sol child receives and successfully calls
collaboration.spawn_agent.
Expected behavior
A child agent should receive the documented nested collaboration capability when runtime depth policy allows it, independent of whether the child model is Luna or Sol.
If Luna children intentionally cannot spawn subagents, Codex should expose an explicit capability restriction or return a concrete unsupported error instead of giving the child instructions that say it can spawn while omitting the tool.
Actual behavior
Nested spawning is silently unavailable only for the Luna child in this comparison. The Luna root session and Sol child sessions use the same collaboration.spawn_agent interface successfully.
Impact
Workflows in which a Runner must create an independent Architect or Auditor stop at the child Agent. The child reports that dispatch is unavailable even though the root session and sibling models can dispatch normally.
Related issues
- #34964 reports that Luna is not exposed as an explicit
spawn_agentmodel override. This report is different: a custom child already running as Luna loses the nested spawn tool. - #32027 covers depth enforcement. This report compares Luna and Sol children at the same depth.
- #11701 discusses subagent configuration and orchestration generally.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirmed workaround: Luna nested spawning works if Multi-Agent V2 is disabled and the session is started fresh on V1.
Tested on Codex Desktop on Windows on 2026-08-23 with
gpt-5.6-lunaas the root model.Relevant config:
After fully restarting Codex and starting a brand-new Luna session, I tested this hierarchy:
The depth-1 Luna child successfully received/used
spawn_agentand created the depth-2 Luna grandchild.So for anyone blocked by Luna children losing
spawn_agentunder V2, disablingmulti_agent_v2and using the V1 agent runtime appears to be a working temporary workaround.agents.max_depth = 2permits the root -> child -> grandchild hierarchy in this configuration.Important: I used a completely fresh session after changing the config. I did not test whether an existing V2 conversation can be converted in place.
This does not resolve the reported V2 behavior; it only provides a reproducible workaround while #37495 remains open.