spawn_agent(model="gpt-5.4-mini") produces child thread metadata with model="gpt-5.4"
Resolved 💬 5 comments Opened Mar 19, 2026 by himwichboys Closed Jun 22, 2026
What version of the Codex App are you using (From “About Codex” dialog)?
26.317.21539 (1088)
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.3.0 arm64 arm
What issue are you seeing?
## Summary
Codex subagents spawned with `model: "gpt-5.4-mini"` are later recorded in the child thread metadata as `model: "gpt-5.4"`.
This makes the child thread UI show `GPT-5.4`, even though the parent explicitly requested `gpt-5.4-mini`.
## Environment
- Product: Codex desktop app
- Version: `0.116.0-alpha.1`
- Date observed: `2026-03-19`
- Timezone: `America/New_York`
## Expected behavior
When the parent thread calls `spawn_agent` with:
```json
{
"model": "gpt-5.4-mini",
"reasoning_effort": "xhigh"
}
the spawned child thread should preserve and display that same model in its persisted metadata and UI.
Actual behavior
The parent thread log shows the subagent was spawned with model: "gpt-5.4-mini", but the child thread’s persisted turn_context records model: "gpt-5.4".
What steps can reproduce the bug?
Minimal repro
- In Codex desktop, ask the parent agent to spawn a subagent with:
model: "gpt-5.4-mini"reasoning_effort: "xhigh"
- Open the spawned child thread
- Check the child thread’s displayed model and persisted session metadata
- Observe that the child thread is recorded as
gpt-5.4
Evidence
Parent thread spawn_agent call:
{
"agent_type": "explorer",
"fork_context": true,
"model": "gpt-5.4-mini",
"reasoning_effort": "xhigh",
"message": "Perform a bug-focused review..."
}
Child thread persisted context:
{
"type": "turn_context",
"payload": {
"model": "gpt-5.4",
"collaboration_mode": {
"mode": "plan",
"settings": {
"model": "gpt-5.4",
"reasoning_effort": "xhigh"
}
}
}
}
Notes
This proves that:
- the parent requested
gpt-5.4-mini - the child thread metadata was recorded as
gpt-5.4
It does not prove from logs alone whether inference actually ran on mini or was remapped before execution.
So the issue appears to be in one of:
spawn_agentmodel handling- child-thread metadata persistence
- UI provenance/display of spawned model
Impact
This makes it hard to trust or verify delegated model selection for:
- cost-sensitive fan-out reviews
- performance comparisons
- debugging subagent behavior differences
Suggested investigation
Please check whether:
spawn_agent.modelis being dropped or normalized during child-thread creation- child
turn_context.modelis defaulting to the parent model - the UI is reading thread-default model instead of actual spawned-run model provenance
```md
### Sanitized log excerpts
Parent session:
```json
{"type":"response_item","payload":{"type":"function_call","name":"spawn_agent","arguments":"{\"agent_type\":\"explorer\",\"fork_context\":true,\"model\":\"gpt-5.4-mini\",\"reasoning_effort\":\"xhigh\",\"message\":\"Perform a bug-focused review...\"}"}}
Child session:
{"type":"turn_context","payload":{"model":"gpt-5.4","collaboration_mode":{"mode":"plan","settings":{"model":"gpt-5.4","reasoning_effort":"xhigh"}}}}
### What is the expected behavior?
_No response_
### Additional information
When a parent thread spawns a subagent with an explicit model override like `model: "gpt-5.4-mini"` and `reasoning_effort: "xhigh"`, the spawned child thread should preserve that exact model in its persisted metadata and display it consistently in the UI.
Concretely, I expect:
- the child thread metadata to record `gpt-5.4-mini`
- the child thread UI/model picker to show `GPT-5.4-mini`
- no silent normalization or fallback to `gpt-5.4` unless Codex explicitly reports that fallback to the user
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗