Skip to content

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

Closed

Description

@AarDavMax

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.

Activity

  1. added
    appIssues related to the Codex desktop app
    on Aug 30, 2026
  2. added
    bugSomething isn't working
    windows-osIssues related to Codex on Windows systems
    agentIssues related to the core agent loop
    on Aug 30, 2026
  3. github-actions commented on Aug 30, 2026

    @github-actions
    Contributor

    Potential duplicates detected. Please review them and close your issue if it is a duplicate.

    Powered by Codex Action

  4. TauberFrank commented on Sep 28, 2026

    @TauberFrank

    Additional independent reproduction on Windows, using Codex through the app-server in a VS Code chat extension. This concerns ordinary work mode, with no active Goal. I am deliberately omitting project names, local paths, thread IDs, and customer material.

    On 27 September 2026, three separate threads ended after a useful intermediate step despite explicit instructions to continue the confirmed task:

    1. The user authorized a grouped review of the remaining work on a page. The assistant said no further approval was needed. Its later final response listed three checks still open, but the turn ended normally with task_complete. The user had to prompt again.
    2. The user selected an option in an ongoing project review. The assistant documented that selection, stated in its final response that the result and request were still open, and stopped without continuing or asking for a required decision. The turn ended normally.
    3. The user approved a bounded comparison. The assistant documented that part, while the project task list still contained further work, then ended without a concrete continuation proposal or decision question.

    Expected: after an intermediate result, continue work already authorized; if the next action genuinely requires a new decision or permission, state that specific need. Do not treat a partial-result final response as completion of the overall assignment.

    Observed: the assistant emitted a final response and Codex completed the turn without an abort, crash, or missing-answer event. The user had to restart the work. A local extension treats the completed Codex turn as idle and has no persistent task state in ordinary work mode; this observation does not isolate the model from the integration as the sole cause. It does show that detailed standing instructions alone did not prevent the premature final response.

    This appears to match the ordinary-task premature-finalization behavior reported here. Please investigate how a confirmed, still-actionable assignment can be preserved through intermediate turn completion, without overriding explicit Stop, pending user decisions, or permission boundaries.

  5. WolfFlightTZW commented on Sep 29, 2026

    @WolfFlightTZW

    Codex Desktop repeatedly ends an active implementation turn after completing
    only one intermediate investigation or implementation step, even when the
    prompt and repository instructions explicitly require continued autonomous
    execution until defined acceptance criteria are met.

    Environment

    OS: Windows
    Codex Desktop: Powered by Codex & OWL
    Version: 26.917.71314
    Release date shown by application: Sep 23, 2026
    Subscription: ChatGPT Plus

    Use case

    I use Codex for substantial local software-development tasks. The repository
    has explicit instructions for autonomous/headless execution.

    My normal workflow is:

    inspect -> implement -> test -> diagnose failures -> correct -> retest -> build

    The task has explicit acceptance criteria, and Codex is instructed not to stop
    for ordinary intermediate discoveries, local API investigation, build/test
    failures, or progress reports.

    This workflow previously worked well for substantial development on other
    projects. Codex could perform extended implementation/testing/correction runs
    without requiring me to repeatedly tell it to continue.

    Observed regression / behavior

    In a current C#/.NET project, Codex repeatedly returns control after completing
    only one intermediate step.

    Examples from the same implementation task:

    1. Codex returned:

    "I’m continuing the implementation. The current work is focused on registering
    the native Quest 3 and Prapor quest definitions using the verified SPT models,
    followed by lifecycle and handover hook wiring."

    The turn then ENDED. The UI changed from the active "Working" timer to
    "Worked for X", and the prompt became available again.

    No blocker requiring user input existed.

    1. After being explicitly told to resume, Codex investigated a required API
      and returned that it had verified:

    QuestHelper.UpdateQuestState(PmcData, QuestStatusEnum, MongoId)

    It then ended the turn even though the implementation remained incomplete.

    1. After being told again to continue, Codex returned:

    "Resumed. I verified the native state-transition bridge and am continuing the
    remaining lifecycle integration from the current Quest 3 implementation."

    Again, the turn ENDED immediately after saying it was continuing.

    1. I then supplied very explicit instructions stating that progress reports,
      API discoveries, successful intermediate builds, and ordinary test failures
      were NOT stopping conditions. The prompt explicitly required Codex to continue
      until the complete implementation/test acceptance criteria were satisfied or
      a genuine external blocker was found.

    Codex fixed one schema serialization regression, ran the existing tests, and
    returned:

    "The schema-2 serialization regression is fixed.
    Clipboard.Backend.Tests now passes all 21 existing behavioral specifications
    without a process crash...
    Quest 3’s full runtime lifecycle, exact Prapor handover enforcement, dependency
    wiring, and Quest 3-specific tests are still incomplete. No deployment
    occurred."

    It then ENDED the turn despite explicitly acknowledging that the requested task
    and acceptance criteria remained incomplete.

    1. In a subsequent narrowly scoped prompt, Codex successfully implemented one
      larger provenance-lifecycle unit, ran 21/21 tests, and produced a clean Release
      build. This suggests repository access, editing, testing, and build execution
      are functional. The problem appears to concern when the agent decides a turn
      is finished.

    Expected behavior

    When Codex is given an authorized multi-step implementation task with explicit
    acceptance criteria, it should continue through ordinary intermediate work:

    inspect -> implement -> test -> diagnose -> correct -> retest -> build

    It should return control when:

    1. the requested acceptance criteria are satisfied; or
    2. it encounters a genuine blocker requiring information, permission, or an
      action that only the user can provide.

    A statement such as "I am continuing..." should not terminate the turn.

    Likewise, discovering the next API that needs inspection, fixing one failing
    test, or successfully compiling an incomplete implementation should not be
    treated as completion when the prompt explicitly requires further work.

    Actual behavior

    Codex frequently performs one intermediate unit of work, reports the result or
    states what it will do next, and then terminates the turn.

    I must manually submit "continue/resume" prompts repeatedly to complete one
    implementation task.

    Impact

    This substantially disrupts autonomous development workflows and consumes
    additional account usage because repeated follow-up turns are required simply
    to instruct Codex to continue work that was already explicitly authorized and
    included in the original task.

    It also makes completion status difficult to trust. For example, a clean
    Release build was reported while major runtime portions of the requested
    feature were still not implemented.

    Important distinction

    This does not appear to be a permissions or repository-access problem.

    Codex can:

    • inspect the repository;
    • edit files;
    • inspect installed dependencies;
    • execute tests;
    • diagnose test failures;
    • run builds successfully.

    The observed problem is that the agent voluntarily terminates the turn at
    intermediate milestones despite unmet acceptance criteria.

    Repository instructions also explicitly state that intermediate discoveries
    and progress reports are not stopping conditions.

    Previous behavior

    I have used Codex extensively on other substantial projects with the same
    general autonomous/headless workflow. It previously handled long sequences of
    implementation, testing, correction, and retesting without requiring a new
    prompt after each intermediate step.

    The repeated premature termination behavior is recent in my experience.

    I cannot establish whether this correlates with a Desktop update, backend
    change, model change, or orchestration change. I am reporting the observed
    behavior rather than attributing a cause.

    Reproduction

    1. Open an existing local software repository in Codex Desktop.
    2. Give Codex a multi-step implementation task.
    3. Explicitly authorize normal repository inspection, edits, tests and builds.
    4. Provide multiple concrete acceptance criteria.
    5. Explicitly instruct Codex to continue through implementation/test/correction
      and not terminate for intermediate progress.
    6. Observe Codex complete one intermediate investigation/fix.
    7. In affected sessions, Codex emits a progress-style response describing what
      remains or saying it is continuing.
    8. The active "Working" timer stops, changes to "Worked for X", and the turn
      ends even though Codex itself states that required work remains incomplete.
    9. Sending another "continue" prompt causes another small portion of the
      original task to be performed before Codex may terminate again.

    I can provide screenshots, exact prompts/responses, timestamps, and sanitized
    project details if useful.

  6. aldi949 commented on Oct 11, 2026

    @aldi949

    @TauberFrank your observation about an ordinary Codex turn ending while the original assignment is still open caught my attention.

    I've been experimenting with a separate task-completion verifier that checks required outcomes and can continue Codex after a failed check.

    It only supports a narrow Windows/Python/Codex CLI workflow right now, so it's not an app-server fix.

    Do you happen to use that setup too? I'd be interested in comparing it against a small case where Codex stopped early.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agentIssues related to the core agent loopappIssues related to the Codex desktop appbugSomething isn't workingwindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions