Skip to content

[Windows Desktop] 2h34 turn with reconnects, no useful progress, then completed without confirmed recovery #52694

Open

Description

@Hannark

Summary

On October 9, 2026, a long-running local software-development conversation in Codex Desktop for Windows had a turn lasting 2 h 34 min 20 s. During the turn, the UI showed reconnection attempts and the monitored turn state remained active / inProgress, with error: null and no fresh useful public result. The assistant subsequently acknowledged it had made no progress on the six requested local support functions.

The turn ultimately ended with status: completed and error: null. The assistant said it had recovered a saved checkpoint and would continue, but no subsequent active turn or completed deliverable was observed at the final check. This is a reliability/progress/recovery visibility report, not a claim about the root cause or quota accounting.

Environment

  • Product: Codex Desktop; local Windows execution using PowerShell
  • Task: implement and test six local support functions around an existing controller (checks, evidence, receipts, manifest, parent package, reports)
  • Conversation: long-lived, with prior turns and saved checkpoints
  • Exact Codex Desktop version / bundled runtime version: not captured
  • Model and reasoning effort for the affected turn: not verified
  • No controlled reproduction was performed

Timeline (October 9, 2026; UTC)

Time Evidence / observation
17:42:43 Official affected turn start
~17:43 Assistant publicly announced preparation and testing of six supporting functions
18:49:12 Last write time of a locally inspected RESULT.json checkpoint, which still recorded zero implemented support callbacks and no native launches or submissions. Its metadata referred to an earlier turn, so this file is not treated as authoritative proof of the affected turn's terminal state
Time not embedded in screenshot Desktop showed "Running for 2h 15m 21s", "Reconnecting 1/5", then "Reconnecting 2/5" and "Thinking"; a RESULT.json creation was also displayed (+26 / -0). None of this proves useful task completion
20:12 Assistant publicly acknowledged a malfunction, stating (translated from French): "I got stuck in a reasoning loop, without advancing the six support functions. No native launch or native effect was executed." This is the assistant's characterization, not proof of an internal reasoning-loop mechanism
20:17:03 Official turn end: completed, error: null. Total elapsed 9,260,379 ms (2h 34m 20.379s), including subsequent status checking and checkpoint inspection

During the incident, compact official observations repeatedly showed active / inProgress with error: null. Technical markers changed, but no corresponding fresh useful public output was observed. The monitor did not re-submit an already accepted continuation.

After the final response, the conversation was observed as idle. An idle conversation after a final answer is not itself erroneous; it only means that the claimed continuation/recovery was not confirmed by observed follow-on work.

Expected vs actual

Expected: An accepted turn should either perform observable useful work, report a genuine blocker, or enter a clear bounded failure/retry state. After interruptions/reconnections, the system should distinguish transport retries, model activity, actual tool/task progress, and successful recovery. Checkpoints and previously accepted effects must be preserved without replaying already consumed native actions.

Observed: The turn remained active for more than two and a half hours; the assistant acknowledged no progress on the requested implementation; and the turn ended successfully according to lifecycle status, despite no verified deliverable or follow-on work at the final check.

Impact

  • Material user delay and loss of confidence in whether the long-running task is progressing
  • Six requested functions not shown delivered or qualified by the collected evidence
  • Inadequate user-visible distinction among ongoing activity, reconnecting, substantive progress, and recovery
  • Saved checkpoint remained recoverable; no destructive recovery action was attempted by the monitoring agent

Evidence limits / non-claims

  • No root cause established: client, server, transport, local network, model, context length, permissions, or other factors remain possibilities
  • No confirmed regional service outage, token/quota loss, or billable-usage attribution
  • No proof that reasoning streamed continuously for the entire 2h34, nor that the agent's "reasoning loop" description is technically accurate
  • Turn duration is not an exact measurement of time stalled
  • An earlier stream disconnected before completion: Transport error: network error: error decoding response body happened in a separate invocation on the same day. It is not assigned as this turn's error or presumed causal
  • No deterministic reproducer; exact affected app/model versions not recovered
  • This public report intentionally excludes raw logs, transcript, private project context, paths, account/session/turn UUIDs, and other correlation identifiers

Requested investigation

  1. Correlate reconnection attempts, lifecycle active / inProgress and final completed / error: null, and the absence of verified substantive task progress.
  2. Explain which signals the Desktop/app-server can expose to distinguish genuine generation, transport retry, stalled execution, and successful continuation.
  3. Check whether prolonged turns can complete without making task progress after reconnect/retry episodes, and whether an explicit recoverable state or watchdog is warranted.
  4. Provide a safe private route for targeted server-side correlation identifiers or redacted diagnostics, if needed.
  5. Ensure recovery preserves the established checkpoint and does not re-execute effects already applied.

Potentially related, not asserted as the same cause:

Reported at the affected account holder's request. No raw session or private project material is being shared in this issue.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    windows-osIssues related to Codex on Windows systems
    connectivityIssues involving networking or endpoint connectivity problems (disconnections)
    model-behaviorIssues related to behaviors exhibited by the model
    on Oct 9, 2026
  2. Hannark commented on Oct 10, 2026

    @Hannark
    Author

    Follow-up — second distinct incident on October 10, 2026 (Windows Desktop)

    I am reporting a second, separately documented occurrence affecting a long-running local software-development conversation. This is not evidence that the October 9 incident and this incident share a root cause. It adds a different and operationally important symptom: a user-requested pause at the next safe boundary was delivered to the target through the official thread-messaging tool, but no public acknowledgment or confirmed safe pause was observed.

    This update is based on a contemporaneous, privacy-redacted evidence collection as of 2026-10-10 16:25:41 UTC. It does not claim the turn remains active beyond that observation.

    Environment and limits

    • Codex Desktop, local Windows execution, PowerShell; long-lived software-construction conversation.
    • A user-reported application update and restart had completed before this continuation. Exact previous/current application versions were not captured, and update causality is not claimed.
    • Affected turn metadata reported gpt-6.1-sol with xhigh effort; no claim that these settings caused the incident.
    • The independent monitoring agent could still perform its read-only checks. This does not prove that the affected turn or its message intake was healthy.
    • No deliberate reproduction, global network/process diagnostic, permissions change, forced turn interruption, or destructive cleanup was performed.

    Timeline (October 10, 2026; UTC)

    Time Observation
    14:10:02 Official start of the affected turn after an explicit user-directed continuation from a saved checkpoint.
    14:10:34.893 Assistant publicly announced checkpoint-based continuation and fresh verification. There was some initial activity; this was not an empty turn from the outset.
    14:20:26.818 Last public assistant message found by the evidence collector, describing preparation and verification before a real helper test. Preparation is not proof of successful qualification.
    ~14:35 / 14:35:15 Local test-result artifact recorded STOP after an unexpected acknowledgment, without a final success/qualified-file list. The corresponding native helper call ultimately returned exit code 1 after 903,318 ms (~15 min 3 s) with a deadline-expiry marker. This proves the helper call terminated; it does not explain why the enclosing Codex turn stayed active.
    ~14:50 Monitor first observed the native command's failed marker; no fresh public assistant assessment of the failure was found.
    15:13:28.431 Monitoring Watchdog entered durably PAUSED. The user's instruction to pause the affected construction agent at its next safe boundary had been submitted with the official send_message_to_thread tool. Tool feedback confirmed the destination, but did not include a receipt proving that the active turn had consumed/applied the instruction. The monitoring agent did not resend it.
    16:22:59 Official read still showed active / inProgress, error: null, on the same turn, without a new public message or terminal result found.
    16:25:41 Evidence-collection cutoff: the turn had been open 2 h 15 min 39 s, including preparation and the 15-minute test; the last public message was over two hours old. Transcript metadata continued to change, but there was no confirmed safe pause, terminal outcome, or new checkpoint in the inspected public sources.

    The 2h15 duration is elapsed turn time, not a measured continuous stall. A recorded helper failure does not imply that every later process was idle. The absence of a pause acknowledgment also does not prove that the pause message was dropped or ignored: it may have remained queued, or been processed without an observable public receipt.

    Difference from #52694's original October 9 incident

    • October 9: visible Reconnecting 1/5 and 2/5 retries; turn eventually completed after 2h34 with error: null; assistant acknowledged no progress on the intended implementation.
    • October 10: no reconnection screenshot or failure attributed to transport; the turn was still inProgress at the evidence cutoff; a native helper ran and exited with failure; the separately submitted user pause had no confirmed acknowledgment/application.

    The shared, narrower concern is unreliable observability and safe recovery of prolonged turns, rather than any proved internal loop, service outage, regression, or particular model defect.

    User impact and requested investigation

    The user could not establish a verified safe stopping boundary for an overnight shutdown. Previous partial work and one-shot native effects must be preserved, not blindly replayed. The monitor stopped its own automated relays rather than forcibly terminating the affected turn.

    Please investigate:

    1. The transition from a finished native helper invocation (timeout/exit 1) to an enclosing turn that remains active / inProgress without a public assessment or final result.
    2. Whether a send_message_to_thread submission to an already active target is queued, delivered into the active turn, consumed, persisted, and/or acknowledged — and what telemetry distinguishes these states.
    3. Whether the thread/runtime should expose a bounded stall or pending-pause state and a reliable safe-stop/continuation receipt, instead of leaving the user unable to determine if it is safe to stop the machine.
    4. Recovery semantics that preserve durable checkpoints and prevent replay of already-consumed native actions.
    5. Which minimal, private correlation fields maintainers need for diagnosis. Session/account/turn UUIDs, raw logs and private project content have deliberately not been published here.

    Possibly related by symptom, not asserted to have the same underlying defect: #46479 (unresponsive Windows task/control requests) and #45967 (accepted steer persistence semantics).

    No token/credit-loss claim, regional outage claim, model-internal reasoning-loop diagnosis, or post-update regression claim is made. This comment is posted at the affected account holder's request; no full session or private identifiers are shared.

  3. Hannark commented on Oct 10, 2026

    @Hannark
    Author

    Terminal update / correction — October 10 second incident

    This update supersedes the provisional “still active / inProgress” status in my preceding comment (#issuecomment-6099759589). The monitoring agent later obtained two concordant official readings of the same turn's terminal state.

    Confirmed terminal outcome

    • Ended: 2026-10-10 16:41:36 UTC (18:41:36 Europe/Paris).
    • Turn status: failed (the conversation was returned as systemError), not completed or still active.
    • Official duration: 9,093,912 ms = 2 h 31 min 33.912 s.
    • Terminal error: invalid_request_error, param: input, code: context_length_exceeded, HTTP 400, sequence_number: 2.
    • Error text: Your input exceeds the context window of this model. Please adjust your input and try again.
    • No assistant final response and no public receipt confirming the requested safe pause were observed.

    Interpretation and limits

    This establishes the reason for the final rejected model request: input exceeded the model context window. It does not establish why the input grew, whether/when context compaction was attempted or failed, why the turn produced no useful public conclusion for so long, or whether the pending pause instruction was consumed by the active turn. The successful destination-level submission of send_message_to_thread must not be represented as confirmed delivery/application by the model. In particular, do not conclude the agent deliberately ignored the pause.

    The earlier 15-minute native helper exitCode 1 / deadline was a separate local tool outcome, not the terminal context_length_exceeded response. There is no evidence that the October 9 incident (#52694 original report) failed with the same context error.

    State of work and support request

    The collected final state retained locally saved preparation, test and partial-result artifacts (as well as a private upload file). Their presence is not proof of full qualification or a safe overnight checkpoint. No replay, recovery experiment, or destructive cleanup was performed. The separate monitoring Watchdog remains PAUSED; a verified safe-stop boundary for the broader workflow was not established by the failed inference turn alone.

    Please additionally investigate:

    1. How an extended, tool-using Desktop turn reached context_length_exceeded after more than two hours, including input construction, context-window safeguards and compaction/retry behavior.
    2. Whether pause/steer requests made to an active thread are durably queued/consumed/acknowledged while the turn approaches context exhaustion, and what evidence a user can safely rely on.
    3. How Codex can expose a clear, bounded error and safe recovery procedure that preserves checkpoint/effect provenance and does not repeat already-consumed native effects.

    The exact app build remains unverified. This is a redacted public correction; no account, project, session, turn UUID, complete logs or private payloads are disclosed.

    This is a terminal-status correction to the October 10 follow-up, not a third incident and not a claim of a shared root cause with October 9.

  4. Hannark commented on Oct 11, 2026

    @Hannark
    Author

    Follow-up — October 11, 2026: short retry fails in original conversation; compact handoff works in a new conversation

    User-reported follow-up to the confirmed October 10 terminal failure described above. This is a continuation/recovery observation, not a new diagnosis or an independently verified runtime trace.

    • October 10: The original Codex Desktop Windows turn lasted 2 h 31 min 33.912 s before ending with HTTP 400 / invalid_request_error / context_length_exceeded. The request for a safe pause had received no public acknowledgment.
    • October 11: A short continuation attempted in the same original conversation reportedly failed again with the same context_length_exceeded error, this time after 4.385 seconds (reported duration; exact timestamps and request correlation IDs not supplied).
    • Recovery comparison: A new conversation using a compact handoff was able to start successfully and resume reconciliation of previously produced work. This establishes a usable continuation path in the reported observation, not completion/qualification of the overall task or resolution of the original conversation.

    Investigative value and remaining uncertainty

    The contrasting outcomes — rapid rejection in the existing conversation versus successful initialization in a new conversation with compact handoff — suggest the maintainers should compare the two requests' effective context/input construction, conversation-history inclusion, available context budget, and compaction/continuation behavior.

    No exact defect has been established. These observations do not prove that retained history alone caused the failures, that compaction malfunctioned, that a particular model/update was at fault, or why the October 10 turn took so long. There is also no new evidence that the prior pause message was consumed by the affected turn.

    Please retain this as an additional reproducibility/recovery clue under #52694, without merging the distinct October 9 and October 10 incidents into a single assumed root cause.

    No private conversation identifiers, project details, raw logs, or payloads included.

  5. aldi949 commented on Oct 11, 2026

    @aldi949

    @Hannark the interesting part here is that the turn completed, but the actual work still wasn't proven done.

    I've been testing a small completion verifier that checks the required result instead of trusting the agent's final message.

    It's limited to Windows, Python and Codex CLI right now, so I wouldn't claim it can reproduce your Desktop issue directly.

    Any chance you have a smaller Python task where Codex stopped before producing the required result? I'd like to test it against the current version and see what happens.

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

    appIssues related to the Codex desktop appbugSomething isn't workingconnectivityIssues involving networking or endpoint connectivity problems (disconnections)model-behaviorIssues related to behaviors exhibited by the modelwindows-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