Skip to content

[Bug]: Active Codex goal repeatedly continues while async delegate_task is running #26857

Closed

Description

@royalaid

A Codex parent with an active goal repeatedly starts continuation turns while it is waiting for an asynchronous delegate_task child. The task remains active; the extra turns produce redundant status updates before the child has completed.

Steps to reproduce

  1. In T3 Code with the Codex provider, start a goal that remains incomplete.
  2. Start an asynchronous delegate_task child and retain its task ID.
  3. End the parent turn while the child is still running.
  4. Observe the parent receive goal continuations before the child completes.

Expected behavior

The parent waits without repeated continuations until the child completes, new user input arrives, or a bounded watchdog expires.

Actual behavior

The active goal triggers repeated parent continuation turns while the child is still running.

Versions

The original report did not record the T3 version. This behavior was not reproduced on T3 Code 0.1.4.

Related prior report: #16942

Activity

  1. royalaid commented on Nov 7, 2026

    @royalaid
    Author

    Seen again on 5 Nov 2026 on a current nightly with a Codex parent (the code path is unchanged at main 240446e): with /goal active, a parent that delegated an async task and ended its turn kept starting goal continuation turns, each reporting the same pending task, until the child finished.

    Cause: Codex continues an active goal natively as soon as a goal turn completes; it knows nothing about T3's delegated tasks, and CodexAdapterV2 adopts each continuation as a new turn. #30646 fixes the Claude side with a Stop hook; Codex has no equivalent hook, so the Codex side needs a different mechanism.

    What we run in a fork, in case it helps a PR for this issue:

    • When a goal turn completes while the thread has delegated tasks whose completion will wake it, the adapter pauses the goal instead of adopting the continuation, and marks the projected goal heldForDelegatedWork.
    • The mark survives a released session and a restart, and Codex's own goal accounting updates during the pause do not drop it.
    • The goal resumes at the start of the first root turn after that work has ended (the delivery turn itself does not count). A Stop ends the hold, so a later message does not resume the goal.
    • Tests that fail on main: "an active goal does not keep turning while a delegated task will wake the thread", "the next turn resumes a goal paused for delegated work", "a goal held for delegated work resumes after the session is reopened", "a Stop ends the hold so a later message does not resume the goal", "a goal held for delegated work keeps its hold through Codex goal accounting". Unchanged without pending work.

    If #30646 lands first, the "will a delegated task still wake this thread" check should be shared so the two adapters agree. Happy to open a PR for the Codex side if this is triaged.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions