multi_agent_v2=true runs Luna on V2, but spawn_agent still filters Luna as V1
What issue are you seeing?
features.multi_agent_v2 = true promotes a fresh GPT-5.6 Luna session to the V2 multi-agent runtime, but a V2 Sol parent still rejects Luna as a child because spawn_agent filters against Luna's static catalog value (multi_agent_version = "v1") rather than its effective runtime.
This is a narrower runtime/catalog consistency issue related to #34700. The existing issue demonstrates the user-visible rejection; this report adds A/B session metadata showing that Luna can already run on V2 when the global feature is enabled.
Environment
- Codex Desktop:
26.727.40816 - Bundled Codex CLI:
0.146.0-alpha.9.2 - macOS on Apple Silicon (
arm64) - Feature state:
multi_agent = truemulti_agent_v2 = true
Current model catalog
codex debug models reports:
[
{"model":"gpt-5.6-sol","multi_agent_version":"v2"},
{"model":"gpt-5.6-terra","multi_agent_version":"v2"},
{"model":"gpt-5.6-luna","multi_agent_version":"v1"}
]
A/B runtime verification
I started three fresh, read-only CLI sessions and inspected each persisted turn_context rather than relying on the model's natural-language response.
Sol with V2 explicitly disabled
model: gpt-5.6-sol
CLI override: --disable multi_agent_v2
actual turn_context.multi_agent_version: v2
Luna with V2 explicitly enabled
model: gpt-5.6-luna
CLI override: --enable multi_agent_v2
actual turn_context.multi_agent_version: v2
Luna with V2 explicitly disabled
model: gpt-5.6-luna
CLI override: --disable multi_agent_v2
actual turn_context.multi_agent_version: v1
This demonstrates that the feature flag changes Luna's effective runtime from V1 to V2. Disabling the flag does not downgrade Sol, whose model metadata already selects V2.
Reproduction of the mismatch
With global configuration:
[features]
multi_agent_v2 = true
start a fresh gpt-5.6-sol session and call:
{
"task_name": "luna_v2_child_probe",
"agent_type": "default",
"fork_turns": "none",
"model": "gpt-5.6-luna",
"reasoning_effort": "max"
}
Actual result:
Unknown model `gpt-5.6-luna` for spawn_agent. Available models: gpt-5.6-sol, gpt-5.6-terra
No child agent is created.
Why this appears inconsistent
PR #32751 intentionally restricts child model overrides to models compatible with the active multi-agent backend. That compatibility check appears to use the model catalog's static multi_agent_version.
However, when features.multi_agent_v2 = true, Luna's effective runtime is demonstrably V2. The parent runs V2, and a separately started Luna session under the same global feature also runs V2, yet Luna is rejected as if it could only run V1.
Expected behavior
One of the following would make the behavior consistent:
- Resolve child compatibility using the model's effective multi-agent runtime after feature overrides.
- Advertise Luna as V2 in the authoritative model catalog when V2 is enabled/supported.
- If the override is intentionally unsupported for spawned children, return an explicit compatibility error explaining why a top-level Luna V2 session is allowed but a Luna V2 child is not.
The current Unknown model message is misleading because Luna is a known, picker-visible model and can run with turn_context.multi_agent_version = "v2" under the same global feature configuration.
Related
- #34700
- #35097
- #34301
- PR #32751
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirmed on Windows with a newer Codex Desktop build.
Environment
26.727.6591.0codex-cli 0.146.0-alpha.9.2gpt-5.6-solwith medium reasoningapp-server --strict-config --stdiocodex doctor --summary: 16 checks passed, 0 failedConfiguration
The personal custom agent contains:
The global agent defaults originally contained:
codex debug modelslistsgpt-5.6-lunaand reports support forlow,medium,high,xhigh, andmax.Reproduction
From a fresh Desktop task after fully restarting Codex, invoke the registered custom agent:
Actual result:
The failure reproduces across newly created Desktop tasks after restart. No child thread is created.
As a control, a custom Sol agent succeeds when
gpt-5.6-soland medium reasoning are passed explicitly, so multi-agent spawning itself is working.Expected behavior
The current subagent documentation lists Luna as suitable for narrowly scoped agents and states that a custom agent file's
modelandmodel_reasoning_efforttake precedence. Therefore either:spawn_agentshould accept the registered Luna agent under the effective V2 runtime, orThis appears to be the same static-catalog/effective-runtime mismatch described in this issue, now independently reproduced on Windows with Desktop
26.727.6591.0.Description
When a Sol V2 parent attempts to spawn a Luna child, Luna is normally rejected because the model catalog assigns:
This is already reported in #34301.
I tested whether assigning Luna to V2 locally would restore the documented Sol → Luna subagent workflow. It did not create a real child thread. More concerningly, the parent subsequently reported a receiver and child response even though the event stream showed no
spawn_agentcall and no receiver thread.Environment
No API key or third-party model provider was used.
Baseline behavior
With the unmodified catalog:
An explicit Luna spawn fails before creating a child:
Reproduction
model_catalog_jsonin a fresh ephemeral CLI process.gpt-5.6-sol.spawn_agentexactly once with:Example command structure:
Actual result
The event stream contained no
spawn_agentevent.The subsequent
waitcall had no receivers:It completed with the receiver list still empty:
Despite that, the parent reported:
No such receiver thread appeared in the event stream. The marker was therefore produced by the parent, not by a spawned child.
I reproduced this behavior more than once. In each case:
Control test
When the Sol parent and Luna child were both assigned to the V1 backend, the same test produced a real lifecycle:
A Luna parent spawning an inherited Luna child also creates a real receiver thread.
This suggests that changing Luna's catalog metadata to V2 is not sufficient to make its V2 child path operational.
Expected behavior
One of the following should happen:
The parent should never report a receiver thread or child result when no child was created.
Additional observations
models_cache.jsonis automatically refreshed, so direct edits are overwritten.gpt-5.6-lunafor narrowly scoped agents, so the documented Sol → lower-cost Luna workflow is currently unavailable under V2.Related issue: #34301
Related backend-filter change: #32751