Repository navigation
[Bug]: V2 Codex subagent model stays "Not reported" after metadata lookup fails #15250
Description
Activity
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
- Retry the child metadata read a bounded number of times after an empty-rollout error, and stop once the child is gone or a settings or reroute event has already set the model.
- Don't fall back to the parent's model in the tooltip. Once a real child model arrives, the existing thread sync should move
t3_thread_listoff the parent placeholder. - If retries still can't read a model, consider not presenting the parent's model as the child's in the thread list.
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.
- addedbugSomething is broken or behaving incorrectly.Something is broken or behaving incorrectly.via-triageFiled through npx t3 triageFiled through npx t3 triage
on Oct 3, 2026 - FYI worked with Sonnet 5.5, no bug there. Maybe not deterministic. Verify further. la 3.10.2026 klo 19.56 Julius Marminge ***@***.***> kirjoitti:…*juliusmarminge* left a comment (pingdotgg/t3code#15250) <#15250 (comment)> Note Grok responding on behalf of Julius. Triage Thanks @niko-itswld <https://github.com/niko-itswld> for the careful, read-only investigation and the captured protocol trace. *Confirmed on current main (aad7329).* Your nightly (8ed276c) is an ancestor of it, and this lookup path hasn't changed since. This is the V2 version of #10185 <#10185>, which was closed when Orchestrator V2 shipped. It isn't #15214 <#15214>, which is about missing reasoning effort. What I found The Lineage title *Luna Five Shutdown* comes from the subAgentActivity path. That path registers the child with model: null and turns the agent path into the title. SubagentTooltipContent then prints *Not reported* whenever subagent.model is null. The only recovery for that null is a single background thread/resume with excludeTurns: true, capped at five seconds. Any failure, including the -32603 empty-rollout error in your trace, is swallowed by Effect.catch(() => Effect.void), and nothing tries again once the rollout has metadata. thread/settings/updated and model/rerouted could still set the model later, but only if Codex sends them, and your projected subagent staying model: null means neither arrived. t3_thread_list uses a different field. The child thread is created with the parent's modelSelection and keeps it while task.model is null. A later subagent.updated that carries a real model would switch it, but that never ran here, so the list still shows gpt-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 <#10185>. Likely fix area - Retry the child metadata read a bounded number of times after an empty-rollout error, and stop once the child is gone or a settings or reroute event has already set the model. - Don't fall back to the parent's model in the tooltip. Once a real child model arrives, the existing thread sync should move t3_thread_list off the parent placeholder. - If retries still can't read a model, consider not presenting the parent's model as the child's in the thread list. Open PR #14108 <#14108> doesn't cover this case. It tries thread/read first and falls back to thread/resume only 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. — Reply to this email directly, view it on GitHub <#15250?email_source=notifications&email_token=CMRD36TNDFS7U4763WPDUFD5SEVTHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOJXGEZTCMBVGYY2M4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-5971310561>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/CMRD36S7OIPOL2MJQBLLVW35SEVTHAVCNFSNUABGKJSXA33TNF2G64TZHMYTCNJTGEZTAMZUHE5US43TOVSTWNJWHEYTKOJTGI2DTILWAI> . You are receiving this because you were mentioned.Message ID: ***@***.***>
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.
Note
GPT Sol 6.1(High) posted on Neonsy's behalf (cause Claude's 200 tier usage is not as infinite as people make it out to be)Additional observation on Windows x64 with Codex CLI
0.160.0. The currently installed T3 server reports0.0.46-nightly.20261004.2644A parent thread using
gpt-6-astraspawned three native Codex children with explicitgpt-6.1-sol/xhighsettingsAt the original observation, T3's imported child records reported
gpt-6-astrafor all three. Their corresponding Codex rolloutturn_contextrecords reportmodel: "gpt-6.1-sol"andeffort: "xhigh". One child's later turn records the same Sol/xhigh settingsThis corroborates parent-model attribution in imported child metadata. The requested settings appear in Codex's execution records despite T3 reporting the parent model
No child metadata lookup error was captured, so this does not establish the same empty-rollout cause as the original report. Neither proposed fix has been tested against this session
Before submitting
Area
apps/server
Steps to reproduce
gpt-6.1-sol.gpt-6-lunawithmaxreasoning effort.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:
gpt-6-lunamaxgpt-6-lunamaxnullT3's
t3_thread_listalso reports the child's model asgpt-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, commit8ed276c246b6.Environment
macOS 26.7.1, Apple Silicon, desktop app, Codex CLI
0.159.2. Parent modelgpt-6.1-sol, child modelgpt-6-luna, child reasoning effortmax.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: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/resumewhentask.modelis null and catches the failure withEffect.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
Investigated with Codex in T3 Code. No application files, provider settings, or live databases were changed during the investigation.