Paused Goal still receives automatic continuation turns until marked blocked
Open 💬 0 comments Opened Aug 10, 2026 by harryshawk
What version of Codex are you using?
Codex Desktop/current connected runtime; the exact app build was not discoverable from this session.
Platform
macOS 26.5.2 (25F84), Apple Silicon arm64.
What issue are you seeing?
A Goal whose persisted status was confirmed as paused continued to receive automatic internal Goal-continuation turns.
This is not the case where a user merely says "pause" in chat while the persisted Goal remains active. The Goal service returned status: "paused" before the unwanted continuations began.
Observed sequence:
- The user paused the active Goal to discuss progress.
get_goal()returned the same thread Goal withstatus: "paused".- The runtime nevertheless injected:
<codex_internal_context source="goal">Continue working toward the active thread goal...</codex_internal_context>
- The agent declined to work and stated that it was honoring the explicit pause.
- The runtime injected the same Goal continuation again.
- After three consecutive unwanted continuations, the agent had to call
update_goal(status: "blocked")merely to stop the loop.
No user request resumed the Goal between the paused-state observation and these continuation turns.
Expected behavior
- A persisted
pausedGoal must not schedule or inject any automatic continuation turn. - It should resume only through an explicit supported user resume action.
- A user should not have to mark a healthy paused Goal
blockedto suppress automatic continuation. - The scheduler should re-check persisted Goal status immediately before enqueueing and immediately before injecting a continuation.
- If an already-enqueued continuation races with a pause, it should be cancelled or discarded when it observes
paused.
Impact
- Consumes tokens while the user is intentionally discussing or waiting.
- Can cause unintended work after the user paused execution.
- Corrupts lifecycle semantics because
blockedmust be used as a workaround forpaused. - Makes long-running Goal work difficult to review safely.
Suggested acceptance criteria
- Start an active Goal.
- Pause it and verify its persisted status is
paused. - Leave the thread idle across multiple continuation scheduling intervals.
- Confirm no internal Goal-continuation turn is injected.
- Resume explicitly and confirm continuation restarts normally.
- Add a race test where pause occurs after continuation scheduling but before injection; the queued continuation must be dropped.
- Keep
pausedandblockedsemantically distinct.
Related issues
- #33827 reports the same "paused then continuation injected" signature on Windows, but combines it with browser restoration and a Desktop crash.
- #24531 concerns chat-level stop instructions while the persisted Goal remains active, which is distinct from this persisted-paused case.