What version of Codex is running?
Observed in current Responses/WebSocket-era builds; the exact version is less important than the retry behavior in the core turn loop.
What subscription do you have?
No response
Which model were you using?
No response
What platform is your computer?
Platform-independent.
What terminal emulator and version are you using (if applicable)?
No response
What issue are you seeing?
Interrupted streams can produce visible commentary or retry narration, but still fail to make substantive progress toward a completed turn.
The problem is that visible output appears to count as progress strongly enough that the retry loop can keep going even when the user is not getting a real completion.
From the outside, the session looks active because you may still see commentary, reconnect text, or partial reasoning narration. But the turn is not actually converging on a completed response, and the retry loop is not classifying that lack of substantive progress honestly.
What steps can reproduce the bug?
A generic reproduction shape is:
- Start a turn that produces a commentary-heavy or long-running stream.
- Interrupt the stream partway through, or hit a transient disconnect before a real completed response arrives.
- Let Codex retry.
- Observe that later attempts may still emit visible commentary or retry narration.
- Despite that visible output, no real completed answer arrives, and the turn can remain in a misleading retry loop.
What is the expected behavior?
Visible-only commentary should not indefinitely reset the no-progress logic.
If repeated attempts keep producing visible narration but no substantive completion, Codex should:
- preserve enough visible context for the user to understand what happened
- avoid treating commentary-only retries as meaningful forward progress
- terminate or classify the failure honestly after bounded retries
Additional information
This looks separate from pure websocket reconnect detection.
Related issues such as #17199, #17003, and #17201 describe reconnect loops or dead-connection symptoms. This report is narrower: the bug is in how the retry loop classifies progress once visible output exists but completion still never arrives.
A local fork validated a narrow runtime slice for this behavior using:
cargo test -p codex-core stream_no_completed -- --nocapture
The affected core area is the turn/retry loop in codex-rs/core/src/codex.rs, plus retry outcome classification in protocol/runtime error handling.
What version of Codex is running?
Observed in current Responses/WebSocket-era builds; the exact version is less important than the retry behavior in the core turn loop.
What subscription do you have?
No response
Which model were you using?
No response
What platform is your computer?
Platform-independent.
What terminal emulator and version are you using (if applicable)?
No response
What issue are you seeing?
Interrupted streams can produce visible commentary or retry narration, but still fail to make substantive progress toward a completed turn.
The problem is that visible output appears to count as progress strongly enough that the retry loop can keep going even when the user is not getting a real completion.
From the outside, the session looks active because you may still see commentary, reconnect text, or partial reasoning narration. But the turn is not actually converging on a completed response, and the retry loop is not classifying that lack of substantive progress honestly.
What steps can reproduce the bug?
A generic reproduction shape is:
What is the expected behavior?
Visible-only commentary should not indefinitely reset the no-progress logic.
If repeated attempts keep producing visible narration but no substantive completion, Codex should:
Additional information
This looks separate from pure websocket reconnect detection.
Related issues such as
#17199,#17003, and#17201describe reconnect loops or dead-connection symptoms. This report is narrower: the bug is in how the retry loop classifies progress once visible output exists but completion still never arrives.A local fork validated a narrow runtime slice for this behavior using:
cargo test -p codex-core stream_no_completed -- --nocaptureThe affected core area is the turn/retry loop in
codex-rs/core/src/codex.rs, plus retry outcome classification in protocol/runtime error handling.