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
Goal auto-continuation can enter an unbounded no-progress loop and generate thousands of duplicate turns #34248
Codex Goal auto-continuation entered a self-sustaining loop after the active task began waiting on an external durable process. No new user messages were sent, but each assistant task_complete was followed by a new task_started 5–8 ms later and another <codex_internal_context source="goal"> injection.
Impact
7,480 Goal continuation turns over 10:37:57.
4,857 identical visible no-op replies over 6:01:55.
Mean interval during the duplicate phase: 4.472 seconds.
Local Goal usage counter increased by 26,321,578 during the full window.
A separately configured heartbeat ran every 10 minutes and was not the tight-loop trigger.
Environment
Codex Windows App 26.715.3651.0
Session CLI 0.144.2
Windows 11 10.0.26100
GPT-5.6 Sol, xhigh
Expected behavior
Waiting/no-progress turns should pause or back off. Goal should detect duplicate output, cap consecutive automatic continuations, and trigger a usage anomaly circuit breaker.
Actual behavior
The scheduler immediately requeued the same Goal after every no-progress completion, producing thousands of visible duplicate replies and substantial usage impact.
Requested fix
Add no-progress detection, deduplication, exponential backoff, a continuation/time/usage cap, and explicit confirmation before ordinary continuation language is converted into persistent Goal mode.
The full private session and account-impact evidence have been submitted through OpenAI Support. The private evidence is intentionally not included in this public issue.
Support escalation and duplicate clarification — 2026-07-20
OpenAI Support case 11775178 is open and has received the private account-impact evidence. The latest support response suggested sign-out, restart, and network troubleshooting, but those steps do not address the scheduler evidence described in this issue.
The bot linked #33827. The two reports may share a Goal state-machine boundary, but they are not duplicates in their observed failure mode:
This issue therefore adds an unbounded no-progress continuation loop, duplicate-output failure, and usage-circuit-breaker failure. It also records that create_goal was invoked without an explicit user request to enable Goal mode.
Requested maintainer action:
Triage this under Goal/orchestration and keep it open or link it to a specific engineering tracker.
Investigate why ordinary continuation language could result in persistent Goal activation without explicit user consent.
Add no-progress detection, duplicate suppression, backoff, a consecutive-continuation cap, and a token/credit anomaly cutoff.
Private session and account evidence remains with Support and is intentionally not posted publicly. The case number is provided only for OpenAI's internal correlation.
I reproduced the same failure mode in Codex Desktop on macOS: after each assistant completion, the runtime immediately reinjected <codex_internal_context source="goal"> with no new user message. It continued even after blank/no-op final responses, producing a self-sustaining sequence of Goal continuation turns.
Local evidence:
the injection was not initiated by a local scheduler or an external event;
a local router classified it as NOOP_INTERNAL_CONTINUATION and did not start work, but that did not prevent the next product-side injection;
a later attempt to protect usage by marking the Goal blocked left it unrecoverable through the available programmatic goal API (new goals were rejected as an unfinished goal).
This looks specifically aligned with the task_complete -> task_started -> internal goal injection behavior described here, not merely normal context compaction. The needed product-level safeguard seems to be a circuit breaker that caps consecutive no-progress continuations and requires a real user/material trigger before requeueing.
I can provide a private session identifier and timestamped evidence to OpenAI if useful.
Reproduced on macOS with Codex App 26.820.60940, bundled codex-cli 0.150.0-alpha.8, on Apple Silicon (Darwin 25.6.0). Session/thread ID: 01a02d90-0a8d-7220-a38c-2f415a216a2f.
In this reproduction, the user paused a long-running Goal while its initial tool-heavy turn was active. The agent produced one correct restart handoff, but Goal auto-continuation then generated repeated paused/no-progress final messages every few seconds without new user input. After the repeated-blocker audit, the agent reported that it had marked the Goal blocked, but automatic continuations still continued for days. Later continuations became normally completed turns with no user-visible items.
This adds two observations to the existing report:
Persisting/reporting blocked did not stop the scheduler in this session.
The loop degraded from duplicate visible messages into successful empty turns rather than tripping a no-progress circuit breaker.
The task content involved a private repository and is intentionally omitted. OpenAI can inspect the session ID above. The scheduler guard needs to be outside model behavior: recheck persisted paused/blocked state before enqueue and injection, invalidate queued continuations on state transition, and stop after repeated no-tool/no-state-change or empty completions.
Additional manifestation on Linux, Codex CLI 0.155.0, model gpt-5.6-terra, with goals stable=true. This occurs across multiple unrelated local projects and sessions. After ordinary implementation progress, an active goal receives automatic continuation turns. Following repeated continuations without a newly identified safe edit, Codex terminalizes the goal with: "Goal marked blocked after repeated continuations without a safe new implementation step." There is no concrete external dependency or user decision preventing progress. Expected behavior: inspect current state and replan/continue, or ask to pause; set blocked only for a concrete external constraint. Goals are the primary workflow here, so disabling them is not a workable mitigation. Redacted session transcripts can be shared if useful.
Additional incident on macOS / Codex CLI in Ghostty, reported with the account owner's permission.
Environment:
macOS 15.6.1, arm64; Ghostty terminal.
Currently installed CLI: codex-cli 0.155.1, checked on 2026-09-30. The exact CLI version during every earlier loop is not established.
A long-lived Goal thread, using GPT-6 Astra.
Observed behavior:
Following a chat-level request to stop project work to conserve usage, automatic Goal continuation turns continued arriving.
Affected continuation turns ended with empty final responses and no tool calls or substantive project work. Repeated context compactions were also visible.
Cumulative Goal token accounting increased despite those no-progress turns.
The user later reported selecting Goal resume, seeing no useful progress, exhausting the weekly allowance, and using a reset. We cannot establish that this thread alone caused the full account-wide quota loss, or convert the cumulative Goal counter into billed/weekly usage.
Important distinction: Goal status was verified as paused during the later diagnostic check. We do not have a verified persisted-paused state trace during the earlier loop, so this is not a claim that a confirmed paused Goal ignored its state.
Expected behavior:
The documented no-tool-call continuation safeguard should suppress further automatic turns, with a clear stopped/stalled state. Empty completions should not repeatedly restart work or consume additional usage. A natural-language stop and the separate Goal scheduler state should not misleadingly appear equivalent.
No deliberate reproduction was attempted because of usage cost. No private conversation, project files, credentials, raw logs, screenshots, or session identifiers are attached.
Activity
github-actions commentedon Jul 20, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Owen-XRD commentedon Jul 20, 2026
Support escalation and duplicate clarification — 2026-07-20
OpenAI Support case
11775178is open and has received the private account-impact evidence. The latest support response suggested sign-out, restart, and network troubleshooting, but those steps do not address the scheduler evidence described in this issue.The bot linked #33827. The two reports may share a Goal state-machine boundary, but they are not duplicates in their observed failure mode:
This issue therefore adds an unbounded no-progress continuation loop, duplicate-output failure, and usage-circuit-breaker failure. It also records that
create_goalwas invoked without an explicit user request to enable Goal mode.Requested maintainer action:
Private session and account evidence remains with Support and is intentionally not posted publicly. The case number is provided only for OpenAI's internal correlation.
maurocarraro commentedon Aug 9, 2026
I reproduced the same failure mode in Codex Desktop on macOS: after each assistant completion, the runtime immediately reinjected
<codex_internal_context source="goal">with no new user message. It continued even after blank/no-op final responses, producing a self-sustaining sequence of Goal continuation turns.Local evidence:
NOOP_INTERNAL_CONTINUATIONand did not start work, but that did not prevent the next product-side injection;This looks specifically aligned with the
task_complete -> task_started -> internal goal injectionbehavior described here, not merely normal context compaction. The needed product-level safeguard seems to be a circuit breaker that caps consecutive no-progress continuations and requires a real user/material trigger before requeueing.I can provide a private session identifier and timestamped evidence to OpenAI if useful.
justin808 commentedon Aug 28, 2026
Reproduced on macOS with Codex App 26.820.60940, bundled codex-cli 0.150.0-alpha.8, on Apple Silicon (Darwin 25.6.0). Session/thread ID: 01a02d90-0a8d-7220-a38c-2f415a216a2f.
In this reproduction, the user paused a long-running Goal while its initial tool-heavy turn was active. The agent produced one correct restart handoff, but Goal auto-continuation then generated repeated paused/no-progress final messages every few seconds without new user input. After the repeated-blocker audit, the agent reported that it had marked the Goal blocked, but automatic continuations still continued for days. Later continuations became normally completed turns with no user-visible items.
This adds two observations to the existing report:
The task content involved a private repository and is intentionally omitted. OpenAI can inspect the session ID above. The scheduler guard needs to be outside model behavior: recheck persisted paused/blocked state before enqueue and injection, invalidate queued continuations on state transition, and stop after repeated no-tool/no-state-change or empty completions.
mahogny commentedon Sep 19, 2026
Additional manifestation on Linux, Codex CLI 0.155.0, model gpt-5.6-terra, with goals stable=true. This occurs across multiple unrelated local projects and sessions. After ordinary implementation progress, an active goal receives automatic continuation turns. Following repeated continuations without a newly identified safe edit, Codex terminalizes the goal with: "Goal marked blocked after repeated continuations without a safe new implementation step." There is no concrete external dependency or user decision preventing progress. Expected behavior: inspect current state and replan/continue, or ask to pause; set blocked only for a concrete external constraint. Goals are the primary workflow here, so disabling them is not a workable mitigation. Redacted session transcripts can be shared if useful.
joshmercer80 commentedon Sep 30, 2026
Additional incident on macOS / Codex CLI in Ghostty, reported with the account owner's permission.
Environment:
Observed behavior:
Important distinction: Goal status was verified as paused during the later diagnostic check. We do not have a verified persisted-paused state trace during the earlier loop, so this is not a claim that a confirmed paused Goal ignored its state.
Expected behavior:
The documented no-tool-call continuation safeguard should suppress further automatic turns, with a clear stopped/stalled state. Empty completions should not repeatedly restart work or consume additional usage. A natural-language stop and the separate Goal scheduler state should not misleadingly appear equivalent.
Documentation: https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex
Related empty-final report: #44735.
No deliberate reproduction was attempted because of usage cost. No private conversation, project files, credentials, raw logs, screenshots, or session identifiers are attached.