From the cross-provider field eval (codex session 019fa810, 2026-07-28).
Codex rollouts can emit agent_message events whose text is literally reasoning-summary concatenation wrapped in a tag: <thinking>**Observing persistent-only race issue****Analyzing race between boot entrypoint and exec entrypoint****... (headings glued with no separators). ccx treats any agent_message as narration text, so the trace outline shows:
2. <thinking>**Observing persistent-only race issue****Analyzing race between boot entrypoint and exec entrypoint****Pinpointing commit introducing concurrency pro... [8t]
Raw evidence: the rollout itself carries "type":"agent_message","message":"<thinking>**Observing persistent-only race issue****... — this is faithful rendering of unfaithful input.
Two sub-problems:
- Classification: a
<thinking>-wrapped agent_message is a reasoning summary, not narration. It should become a thinking content block (like reasoning events already do at backend.go:927,1390) — or at minimum the tag should be stripped and the **...** headings joined with a separator before it lands in a step headline.
- Empty step headline: turn 3 step 1 renders as
1. [11t] — tools that ran before any narration produce a step with an empty headline. Arguably fine (that's the truth), but (no narration) would read better than blank.
Step segmentation depends on what counts as narration, so the classification choice changes step boundaries — worth deciding deliberately rather than patching the display.
Priority: P2. Found alongside #27.
From the cross-provider field eval (codex session 019fa810, 2026-07-28).
Codex rollouts can emit
agent_messageevents whose text is literally reasoning-summary concatenation wrapped in a tag:<thinking>**Observing persistent-only race issue****Analyzing race between boot entrypoint and exec entrypoint****...(headings glued with no separators). ccx treats anyagent_messageas narration text, so the trace outline shows:Raw evidence: the rollout itself carries
"type":"agent_message","message":"<thinking>**Observing persistent-only race issue****...— this is faithful rendering of unfaithful input.Two sub-problems:
<thinking>-wrapped agent_message is a reasoning summary, not narration. It should become athinkingcontent block (likereasoningevents already do at backend.go:927,1390) — or at minimum the tag should be stripped and the**...**headings joined with a separator before it lands in a step headline.1. [11t]— tools that ran before any narration produce a step with an empty headline. Arguably fine (that's the truth), but(no narration)would read better than blank.Step segmentation depends on what counts as narration, so the classification choice changes step boundaries — worth deciding deliberately rather than patching the display.
Priority: P2. Found alongside #27.