openai / openai/codex

Codex Desktop finalizes ordinary task despite explicit unfinished-work gate and active required lanes

Open
#41,735 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

agent app bug windows-os
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using (From “About Codex” dialog)?

26.825.5331.0 (codex-cli 0.151.0-alpha.7.1)

What subscription do you have?

ChatGPT Pro

What platform is your computer?

Microsoft Windows NT 10.0.26200.0 x64

What issue are you seeing?

Summary

Codex Desktop repeatedly emits a final response and completes an ordinary Default-mode task while required, actionable work remains, despite repeated user instructions to keep working and a model-visible executable pre-yield check that explicitly returned yieldAllowed=false.

Observed behavior

In the most recent recurrence, the project-local continuity validator identified two incomplete task-completion workstreams and refused yield at 2026-08-30T22:13:40.810Z. Codex nevertheless emitted a terminal final response and stopped until the user restarted it. An earlier recurrence finalized at 2026-08-30T17:59:57.125Z; task_complete followed 132 ms later, with no preceding tool/process error. The next user turn began 7,805.958 seconds later.

This is not a /goal failure: the task was an ordinary Codex Desktop task and the goal API reported goal:null. It is also broader than a single browser/tool failure: independent lanes and fallback routes remained available.

Impact

The UI appears finished while time-sensitive work silently idles. In one documented recurrence, avoidable idle time was about 131 minutes. The user has seen this repeatedly.

What steps can reproduce the bug?
  1. Start a long-running Codex Desktop task in Default mode (not /goal) with multiple required workstreams and/or subagents.
  2. Explicitly instruct Codex to keep working until a concrete end state and to keep independent lanes moving in tandem.
  3. Before yield, run a deterministic local validator that reports unfinished task-completion work and returns yieldAllowed=false.
  4. Ask for an intermediate status update while required work remains.
  5. Observe Codex emit a final response anyway; the turn immediately becomes task_complete and no further work occurs until another user prompt.

Affected task/session: 01a04071-b8b4-7641-aeaa-718076d92a2f
Prematurely completed turn: 01a053b5-809f-79d2-807f-8480016b2784

Redacted timeline:
2026-08-30T17:59:57.125Z assistant final
2026-08-30T17:59:57.257Z task_complete
2026-08-30T20:10:03.215Z next task_started

No crash, turn abort, missing tool event, or process failure preceded completion.

What is the expected behavior?

Before finalizing, Codex should enforce a runtime-level terminal-condition check. A turn may end only when all required actionable work is complete, the user explicitly stops/cancels it, or every remaining actionable lane is documented as requiring user input or an external-state change. If unfinished work remains, an attempted final response should be converted to commentary and execution should continue or wait for required results. One failed route must not stop unrelated work.

Additional information

Related issue #40932 covers premature finalization while required subagents are active. This report adds a distinct, repeated Codex Desktop case where finalization occurred even after a deterministic project-local gate explicitly returned yieldAllowed=false, showing that prompt/project safeguards are insufficient without application/runtime enforcement.

The full redacted report was also submitted through OpenAI Help Center. It excludes property addresses, credentials, cookies/tokens, unrelated browsing, and tool arguments. Requested safeguards: platform-enforced pre-yield gating, route-vs-task blocker distinction, automatic continuation/reallocation when another lane can proceed, and a visible stop reason.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The report names no files or tests. Start by reproducing the described Default-mode task with active workstreams and the validator returning yieldAllowed=false, then trace the final-response and task_complete path. Done means the runtime prevents finalization while required actionable work remains and continues or waits according to the stated conditions.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.