Repository navigation
Description
Before submitting
- I searched existing issues. This is a V2 follow-up to closed [Bug]: Codex subagent rows omit model and reasoning-effort labels #10185, with a captured child metadata lookup error.
- I included enough detail to investigate the problem.
Area
apps/server
Steps to reproduce
- Open a Codex thread in T3 Code Nightly with the parent using
gpt-6.1-sol. - Have the parent spawn a native Codex subagent using
gpt-6-lunawithmaxreasoning effort. - Hover the child in the Lineage list.
- Compare the model label with Codex's saved child metadata and turn records.
These steps describe an observed live session. The lookup failure was captured in its existing protocol trace. I have not established a deterministic fresh-session reproduction.
Expected behavior
The child tooltip displays its actual model once that metadata is available. A temporary metadata lookup failure does not leave the child model permanently unknown. Unknown child settings should not inherit the parent's model.
Actual behavior
The child appears as Luna Five Shutdown, with status and duration, but the tooltip's model label is Not reported.
The agent path is present as /root/luna_five_shutdown. The missing value is the model, not the task slug.
Read-only inspection of the same child confirms:
| Source | Model | Reasoning effort |
|---|---|---|
| Codex saved thread metadata | gpt-6-luna |
max |
| Codex recorded turn contexts | gpt-6-luna |
max |
| T3 V2 projected subagent record | null |
Not part of this model-label report |
T3's t3_thread_list also reports the child's model as gpt-6.1-sol, matching the parent rather than the recorded child model.
Impact
Minor bug or occasional failure.
Users cannot verify the child model in Lineage. The thread-list metadata can also report the parent's model while the actual child runs a different one. Codex's own records confirm that the requested Luna model is running.
Version or commit
T3 Code Nightly 0.0.46-nightly.20261003.2610, commit 8ed276c246b6.
Environment
macOS 26.7.1, Apple Silicon, desktop app, Codex CLI 0.159.2. Parent model gpt-6.1-sol, child model gpt-6-luna, child reasoning effort max.
Logs or stack traces
Sanitized protocol trace for the affected child:
{"method":"thread/resume","params":{"threadId":"<child-thread-id>","excludeTurns":true}}The matching response returns error -32603:
failed to read thread: thread-store internal error: failed to read session metadata <child-rollout-path>: rollout at <child-rollout-path> is empty
The rollout later contains the child's metadata and turn contexts, but T3's projected subagent still has model: null.
At the installed commit, CodexAdapterV2.ts does a one-shot thread/resume when task.model is null and catches the failure with Effect.catch(() => Effect.void). This explains why that lookup did not populate the model. The empty-rollout response supports a startup timing problem in this session; it does not establish the cause of every missing label.
Workaround
No verified UI workaround. Read-only inspection of Codex's saved child records confirms the actual model and effort.
Related reports
- [Bug]: Codex subagent rows omit model and reasoning-effort labels #10185 covers the older Codex model/effort label issue and contains a similar active-child lookup failure. It is closed; this report concerns the V2 adapter in the current installed nightly.
- [Bug]: Orchestrator V2 shows no reasoning effort for subagents #15214 covers absent reasoning-effort labels in V2. This report focuses on the missing Codex model and failed metadata recovery.
Investigated with Codex in T3 Code. No application files, provider settings, or live databases were changed during the investigation.
Activity
juliusmarminge commentedon Oct 3, 2026
Note
Grok responding on behalf of Julius.
Triage
Thanks @niko-itswld for the careful, read-only investigation and the captured protocol trace.
Confirmed on current
main(aad732901e). Your nightly (8ed276c) is an ancestor of it, and this lookup path hasn't changed since. This is the V2 version of #10185, which was closed when Orchestrator V2 shipped. It isn't #15214, which is about missing reasoning effort.What I found
The Lineage title Luna Five Shutdown comes from the
subAgentActivitypath. That path registers the child withmodel: nulland turns the agent path into the title.SubagentTooltipContentthen prints Not reported wheneversubagent.modelis null.The only recovery for that null is a single background
thread/resumewithexcludeTurns: true, capped at five seconds. Any failure, including the-32603empty-rollout error in your trace, is swallowed byEffect.catch(() => Effect.void), and nothing tries again once the rollout has metadata.thread/settings/updatedandmodel/reroutedcould still set the model later, but only if Codex sends them, and your projected subagent stayingmodel: nullmeans neither arrived.t3_thread_listuses a different field. The child thread is created with the parent'smodelSelectionand keeps it whiletask.modelis null. A latersubagent.updatedthat carries a real model would switch it, but that never ran here, so the list still showsgpt-6.1-sol.The existing adapter test covers a resume that succeeds and one that returns no model, but not one that errors at first and would succeed later. That's the same startup race seen on #10185.
Likely fix area
t3_thread_listoff the parent placeholder.Open PR #14108 doesn't cover this case. It tries
thread/readfirst and falls back tothread/resumeonly when that read succeeds with an empty model, so an empty-rollout error still ends the single attempt.A maintainer will decide on the fix direction.
niko-itswld commentedon Oct 3, 2026
niko-itswld commentedon Oct 3, 2026
Submitted a focused fix in #15285.
This is low-hanging fruit for a quick review and merge: the existing Codex child-model lookup now retries the captured empty-rollout startup error within a fixed limit, preserves newer metadata, and stops retries for interrupted children. The regression fails before the fix; all 128 adapter tests and server typecheck pass afterward.
The PR links this issue and its triage comment, and records the verification limits. Maintainers decide merge timing.
Jonathanm10 commentedon Oct 17, 2026
Same bug on a newer build: T3 Code nightly
0.1.1-nightly.20261017.3238(desktop app, macOS 27 arm64, Codex CLI0.163.0). The parent rangpt-6.1-sol/xhigh. Every native subagent's chat view showed "Sol 6.1 xhigh", including one Codex ran asgpt-6-luna/high.New finding: Codex
0.163.0already puts the child's model in thesubAgentActivitystarteditem:{"type":"subAgentActivity","model":"gpt-6-luna","reasoningEffort":"high","kind":"started","agentPath":"/root/azure_design_luna"}registerSubagentActivity(CodexAdapterV2.ts~L3053 at tagv0.1.1-nightly.20261017.3238) passesmodel: nulland noreasoningEffort, and the generatedSubAgentActivityThreadItemschema doesn't include those fields. The fallbackthread/readandthread/resumewere sent in the same millisecond and both failed with-32603 … rollout at <rollout-path> is empty, so all four children in this run storedmodel: null. The child thread then kept the parent'smodelSelection(~L2823), options included.Regenerating the schema and passing
item.model/item.reasoningEffortfrom thestarteditem would fix this deterministically on current Codex, without depending on #15285's retry. The retry would still help older Codex CLIs that don't send these fields.Investigated via
t3 triagewith Claude Code (Claude Opus 5.5). No files, settings or databases were changed.Rewolbebol commentedon Oct 20, 2026
Additional occurrence of the misleading child-model label:
I explicitly requested that subagents use GPT-6-Luna, Extra High. T3 Code's child view instead displayed GPT-6.1-Sol, Extra High, matching the parent conversation. This made it appear that the requested subagent-model restriction was being ignored.
Expected: show the child's own reported model and reasoning effort, or clearly mark the value as unknown. Do not silently present the parent's model as the child's model.
This is a user-visible report of the label mismatch, not a claim that execution was actually routed to the wrong model. No local session logs, identifiers, machine details, or project information are included.
Related: #17694. Adding this occurrence to the existing open report instead of filing a duplicate.
juliusmarminge commentedon Oct 21, 2026
Reproduced on 1688f96: when the one-time metadata lookup for a native Codex child failed, the child's model stayed "Not reported" through completion. https://git.cafe/pingdotgg/t3code/pulls/22830 adds bounded retries for that lookup; in an isolated runtime the child recovered the correct model and effort within seconds and kept them through completion. Claude children, the mobile card and remote modes remain unverified.
test(server): add runtime evidence driver for #15250
chore(server): register #15250 evidence scripts as knip entries