codex exec review ends without output after a fixed timeout and automation cannot distinguish the timeout
What issue are you seeing?
codex exec review appears to have a fixed wall-clock timeout in the review task (120s warning, 300s stop in core/src/tasks/review.rs). When that budget is hit, the review ends as a generic interruption / ended without review output, which makes it hard to distinguish:
- provider slowness
- a review loop that is still making progress
- an actual review/tooling failure
This is especially painful for automation. In practice, a long-running review often looks like a clean command exit that simply never produced a verdict.
I also hit a related automation gap in JSON mode: there is no structured timeout-specific terminal signal for review timeouts, so scripts cannot reliably tell the difference between "review timed out while still making progress" and a generic interrupted review.
What steps can reproduce the bug?
- Start from any repo with uncommitted changes.
- Run
codex exec review --uncommitted. - If the review does not finish within the hard-coded budget, it ends without a review verdict.
- Run the same command with
--jsonand observe that automation gets a generic interrupted / ended-without-output outcome rather than a distinct timeout result.
Concrete local evidence from today:
- A temporary repo with a fork-local proof-of-concept timeout override set to
1000mstimed out after1 second. - The same repo with the override set to
3000mstimed out after3 seconds. - A scoped self-review in the Codex repo against a handful of touched files timed out after
15 secondsand30 secondswhile still showing recent shell activity (processing shell command results, thenstreaming shell command output).
Those runs strongly suggest the missing piece is not just "longer timeout", but a better timeout model + clearer signaling.
What is the expected behavior?
At minimum:
- review timeouts should surface a distinct timeout reason instead of collapsing to a generic interrupted / ended-without-output result
- the timeout reason should be visible in JSON output so automation can treat it as a tooling blocker
Ideally:
- the review timeout should be configurable
- or there should be separate startup vs active-review timeouts
- or both
The key point is that review automation needs to know whether the reviewer was still making progress when the run was cut off.
Additional information
Relevant existing issues that seem adjacent but do not cover this directly:
#6432headlesscodex exec review#11599JSON output for review#12502review output routing regression#13163scriptable review -> fix -> repeat workflow#13441phase-aware status for long-running turns
I am reporting this from the CLI variant.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Is related but not identical to #14077, issue is about / review interruptions and task replacement after long sessions; this one is specifically about codex exec review having a fixed timeout and not surfacing a distinct timeout result in normal or JSON output. I think both should stay open unless maintainers prefer consolidating them into a single timeout/review-reliability issue