You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Active Codex goal repeatedly continues while async delegate_task is running #26857
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
In T3 Code with the Codex provider, start a goal that remains incomplete.
Start an asynchronous delegate_task child and retain its task ID.
End the parent turn while the child is still running.
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.
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.
Activity
royalaid commentedon Nov 7, 2026
Seen again on 5 Nov 2026 on a current nightly with a Codex parent (the code path is unchanged at main 240446e): with
/goalactive, 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
CodexAdapterV2adopts 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:
heldForDelegatedWork.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.