spawn_agent does not expose gpt-5.6-luna
Open 💬 8 comments Opened Jul 23, 2026 by JavierPiedra
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.715.72028
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.5.0 arm64 arm
What issue are you seeing?
The Codex model selector indicates that gpt-5.6-luna is available.
However, when configuring a subagent with spawn_agent, the available model
overrides expose only gpt-5.6-sol and gpt-5.6-terra. Luna cannot be selected
for the subagent, even though it is presented as available.
Expected behavior:
gpt-5.6-luna should be selectable for spawn_agent when it is available in the
current Codex session.
Actual behavior:
The spawn_agent model selection does not expose gpt-5.6-luna.
What steps can reproduce the bug?
Steps to reproduce:
- Open Codex and confirm that gpt-5.6-luna is listed as an available model.
- Start a task that requires delegating work to a subagent.
- Call spawn_agent and try to select gpt-5.6-luna as the subagent model.
- Inspect the available model overrides.
Result:
Only gpt-5.6-sol and gpt-5.6-terra are available. gpt-5.6-luna is not exposed as a selectable subagent model.
What is the expected behavior?
_No response_
Additional information
_No response_
8 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Confirmed in another current environment:
0.145.0gpt-5.6-solThe model-visible
spawn_agentoverride list exposes onlygpt-5.6-solandgpt-5.6-terra;gpt-5.6-lunais not selectable. This reproduces the reported mismatch even though Luna is available as a main-session model.Reproduced on Windows with Codex CLI 0.146.0 and ChatGPT authentication.
Additional diagnostics:
default_subagent_model = "gpt-5.6-luna"
codex debug modelslists gpt-5.6-luna.codex exec -m gpt-5.6-lunasucceeds.spawn_agent(model="gpt-5.6-luna")fails:Unknown model
gpt-5.6-luna.Available models: gpt-5.6-sol, gpt-5.6-terra
configured Luna default and then rejects it.
This indicates the collaboration tool has a separate model allowlist that does not match the authenticated Codex model catalog. It also means configuring Luna as the documented default breaks model-less spawning entirely.
I reproduced this on macOS with Codex Desktop's bundled CLI
0.146.0-alpha.9.2and found a working V2 workaround for native Luna by using a named agent role (from reddit). This does not fixspawn_agent(model="gpt-5.6-luna"); the direct override still encounters the separate collaboration-model allowlist.In
~/.codex/config.toml:In
~/.codex/agents/executor_luna.toml:Then invoke the role rather than supplying a model override:
Important: remove/disable
[agents] default_subagent_model = "gpt-5.6-luna". That default is resolved and validated before named-role application, so it still triggers the reported allowlist rejection and can break model-less spawning.End-to-end verification from a fresh process:
gpt-5.6-solagents.spawn_agentcall created a child usingagent_type="executor_luna"gpt-5.6-luna/highrequestedModel,resolvedModel, and dispatchedmodelall asgpt-5.6-luna, with HTTP 200This demonstrates a role-path asymmetry: native Sol -> Luna works through V2 named-role application even though the direct model override remains rejected. I also tested a cross-provider custom model through the same role mechanism; it failed before provider dispatch with
unreadable_encrypted_agent_task, so this evidence supports native Luna only, not arbitrary custom-provider subagents.Reproduced again on Windows with Codex Desktop now actually running 0.147.0, and I can add an A/B comparison that appears to isolate this to the Desktop/app-server spawn path rather than the model catalog or Luna availability.
Environment
OpenAI.Codex 26.803.5235.0OkThe fresh official catalog contains:
Clean-state reproduction
I had previously used a local catalog workaround which copied
models_cache.jsonand changed only Luna'smulti_agent_versionfromv1tov2. That workaround makes Desktop accept Luna.For this test I removed the
model_catalog_jsonoverride entirely, renamed the old cache, and allowed Desktop to generate a brand-new official cache. The new cache was fetched by Desktop itself and reportsclient_version = 0.147.0.I then fully terminated all
ChatGPT.exeandcodex.exeprocesses, verified none remained, relaunched Stable Desktop, and used a brand-new thread.From a 5.6 parent, I requested exactly one child with:
Desktop still rejects it with:
No V1/V2 compatibility error is surfaced; Luna is rejected as though it is absent from the spawn allowlist despite being
visibility=listin the current 0.147 catalog.A/B: standalone CLI 0.147 succeeds on the same machine
I upgraded the separately installed CLI to:
Using the same official catalog (Luna remains
list / v1), a Sol 0.147 CLI session successfully accepted:and the child completed the requested sentinel successfully. There was no unknown-model, V1/V2, or capability error.
So on one host/account/catalog:
This seems significant because 0.147 contains #36892 (support leaf models in Multi-Agent V2). The CLI behavior looks consistent with that change: Luna can remain
v1and be spawned as a leaf worker. The Desktop path still appears to construct or enforce a narrower allowlist containing only Sol/Terra.Why I don't think this is only stale process/version skew
#37536 documents the same old Sol/Terra-only symptom when an old 0.146 app-server survives a 0.147 CLI update. I explicitly tested that hypothesis here:
list / v1,So this reproduction appears distinct from a merely stale 0.146 app-server surviving an upgrade, although it may still share app-server-specific model-filtering code.
Additional diagnostic clue
The metadata-only workaround is particularly informative: copying the catalog and changing only Luna's
to
causes the same Desktop installation to accept Luna. Reverting to the official 0.147 catalog immediately restores the
Unknown model/ Sol+Terra-only behavior.That suggests the Desktop spawn model allowlist is still filtering Luna based on the exact V2 catalog marker instead of allowing a visible V1 model as a leaf worker, while standalone 0.147 follows the new leaf-model behavior.
It may be worth checking whether the Desktop/app-server
spawn_agentmodel validation/schema generation is using the same post-#36892 compatibility logic as the standalone CLI path.Separate but possibly related top-level picker observation: in one Windows Desktop
26.803/ app-server0.147.0environment, setting the global default togpt-5.6-luna+mediumand then fully terminating/restarting all ChatGPT/codex processes caused the native Desktop picker to render Luna normally and restored Terra's reasoning choices. A fresh thread's persistedturn_contextverified the actual route as Luna/medium. I documented the full A/B details here: https://github.com/openai/codex/issues/19694#issuecomment-5227617896This is N=1 and I am not claiming it fixes the separate
spawn_agentfiltering bug; posting only as a picker-initialization/state clue.Additional Windows Desktop reproduction with a custom-agent resolution clue:
Environment
OpenAI.Codex 26.803.5235.00.147.0-alpha.6.5list/v2, Terralist/v2, Lunalist/v1``
toml
``[agents]
enabled = true
default_subagent_model = "gpt-5.6-luna"
default_subagent_reasoning_effort = "xhigh"
Reproduction
model=gpt-5.6-lunafails:``
``Unknown model gpt-5.6-luna for spawn_agent.
Available models: gpt-5.6-sol, gpt-5.6-terra
agent_type=E.D.I.T.H.also fails with the same error.agent_type=auditor, whose agent file pinsmodel=gpt-5.6-sol, still fails with the Luna error.model=gpt-5.6-sol.This suggests
agents.default_subagent_modelis being validated before the named custom-agent file is resolved. An invalid/filtered default can therefore block every model-less custom role, including a role whose final pinned model is allowed.A/B checks
agents.default_subagent_model="gpt-5.6-terra"allowed a model-lessagent_type=E.D.I.T.H.spawn to complete its sentinel.Verified workaround
I then removed only these two global defaults:
The named agent files remained unchanged.
In a fresh Sol/high session with no model or effort override on child spawns:
agent_type=E.D.I.T.H.resolved to actual runtimegpt-5.6-luna / xhigh / multi-agent v2agent_type=K.A.R.E.N.resolved to actual runtimegpt-5.6-luna / xhigh / multi-agent v2agent_type=defaultinherited actual runtimegpt-5.6-sol / high / multi-agent v2These were verified from the persisted child
turn_context, not from sentinel text alone. An already-open Desktop thread retained its old configuration and still failed, so a fresh thread/app reload is required.Expected behavior
Resolve the named agent file first, then validate the effective child model; or make the Desktop/app-server leaf-model validation match standalone 0.147 behavior. A configured default should not block a custom role that pins a different valid model.
I did not modify
models_cache.jsonor any agent model assignment, and did not substitute Terra for Luna.Reproduced on another current Windows Codex Desktop installation with an exact native A/B control.
Environment
26.803.5235.010.0.26200.0Native reproduction
The parent called:
The call failed immediately:
No child was created.
A/B control
An otherwise identical native call, changing only
modeltogpt-5.6-sol, succeeded. The Sol child was created, completed the same file lookup, returned the requested line, and appeared ascompletedinlist_agents.This confirms on a second Windows environment that the failure happens in the native Luna spawn validation/model allowlist before task execution; it is not caused by the task, repository, or context payload.
The exact
gpt-5.6-lunaID is also usable through a direct Codex invocation on this installation, so general Luna access is available.OpenAI feedback trace
The in-app feedback submission includes the Codex logs/session containing both the failed Luna call and the successful Sol control:
Please link this trace to the existing issue if the team has an internal bug ID.