Skip to content

codex: <thinking>-wrapped agent_message renders as tag soup in step narration #29

Description

@lroolle

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:

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions