Skip to content

Windows: repeated stream disconnects with compaction failures and missing tool outputs (Sep 7-15 diagnostic snapshot) #47009

Open

Description

@bondgg621-web

Submission date: 2026-09-21. This report preserves the September 16 diagnostic snapshot; no claim is made about failures after that cutoff.

Codex Windows intermittent disconnections and compaction failures

Summary

During normal use, the user reports repeated conversation interruptions and connection failures. Retained local logs show 964 retry records across 155 distinct turns and 36 distinct threads. These are affected turns, NOT 964 terminal failures. Automatic recovery and final failure rates have not been established.

Environment

  • Windows 11, OS build observed in local proxy log: 22631.
  • Installed desktop package: OpenAI.Codex 26.908.9136.0 (observed on 2026-09-16, not necessarily the current version or the version of every historical event).
  • Running Codex backend binary reports: codex-cli 0.154.0-alpha.6.2.
  • A local HTTP proxy provided by v2rayN/Xray is configured on loopback port 10808.
  • Windows system proxy and the diagnostic child process HTTP_PROXY/HTTPS_PROXY/ALL_PROXY settings agree. This does not establish the environment of every running desktop process.

Observation scope

Snapshot cutoff: 2026-09-16 10:59:33 UTC+08:00.
Core retained logs start on 2026-09-06 00:53:24 UTC+08:00. Retry events in this snapshot occur September 7-15.
Desktop counts come from 75 retained files in UTC-dated September 3-16 folders. Retention and calendar-day coverage may be incomplete.
Source databases and original transcripts were not attached.

Counts

Category Records Distinct affected turns
Answer stream disconnected, retrying 796 137
Stream connection failed, waiting to retry 88 12
Remote compaction stream failed, retrying 80 32
Pre-sampling compaction failed 11 11
Missing custom tool call output 51 3

Categories overlap; turn counts must not be added. Daily counts also overlap when a turn spans midnight.
2,436 separate desktop background request-failure records were observed; 2,281 were ERR_CONNECTION_TIMED_OUT. These include background services and must not be treated as conversation failure counts.

Representative error signatures

  • stream disconnected before completion: failed to send websocket request: Connection closed normally
  • peer closed connection without sending TLS close_notify
  • Transport error: network error: error decoding response body
  • Connection failed: error sending request
  • Windows socket error 10061 (connection refused)
  • idle timeout waiting for websocket
  • remote compaction v2 stream failed; retrying request after delay
  • Failed to run pre-sampling compact
  • Custom tool call output is missing

Timestamped, pseudonymized examples and daily counts are included below.

Diagnostic tests performed on 2026-09-16

On 2026-09-16, unauthenticated curl probes through the configured proxy returned:

  • https://chatgpt.com/: HTTP 403 in 0.646 seconds; TLS handshake completed.
  • https://chatgpt.com/backend-api/wham/usage: HTTP 401 in 0.408 seconds; TLS handshake completed.
  • Direct connection to chatgpt.com without proxy: connection timeout after 8 seconds.
    401/403 establish HTTP reachability only, not successful authentication, model access, WebSocket operation, or long-stream stability. No credentials or chat content were sent by these probes.
    The local proxy port was listening and owned by Xray at inspection time.

Additional local finding

The proxy application's log records a startup and a ChangeSystemProxyAsync UI interaction exception at 2026-09-14 21:35:57 UTC+08:00. This is a possible local contributor, not proof of the cause of Codex failures. Most failures cannot yet be attributed to the local proxy, upstream network, or server.

Reproduction status and expected behavior

Intermittent behavior was observed during ordinary conversations; a deterministic minimal reproduction is not available. We have not deliberately interrupted active work to reproduce failures.
Expected: a recoverable interruption resumes cleanly; unrecoverable errors provide an actionable reason and preserve conversation/tool state.

Requested investigation

  1. Please investigate stream reconnection and compaction recovery for the timestamps below.
  2. Please clarify whether missing tool output after interruptions is a known issue and how to recover affected conversations safely.
  3. Please advise which diagnostic IDs or additional redacted traces are needed to correlate client and server failures.
  4. Please distinguish retryable network errors from terminal turn failures in the UI or exported diagnostics.

Privacy

This report contains only aggregate counts, generalized environment details, timestamps, error signatures and pseudonymized identifiers. No authentication files, API keys, account IDs, email addresses, project paths, prompts, conversation transcripts, proxy subscriptions or server credentials are included.

Official reporting guidance checked on 2026-09-16:
https://learn.chatgpt.com/docs/reference/troubleshooting
Use the feedback entry in the composer slash menu, or the issue-reporting route linked by the official documentation. Review optional session sharing before submitting.

Subscription

ChatGPT sign-in; subscription during the historical failures was not verified.

Related reports and scope

Similar symptoms appear in #46248 and #45925. This report focuses on Windows transport errors together with compaction and missing-tool-output recovery, rather than asserting the account-specific capacity issue described there. A common root cause has not been established. Please link to an existing canonical issue if appropriate.

Daily retry counts (UTC+08:00)

Date Records Distinct turns
2026-09-07 202 32
2026-09-08 244 27
2026-09-09 89 18
2026-09-10 89 8
2026-09-11 46 16
2026-09-12 23 13
2026-09-13 43 11
2026-09-14 195 26
2026-09-15 33 7

Timestamped signatures (UTC+08:00; pseudonymized identifiers)

[
  {
    "timestamp": "2026-09-07T11:30:17+08:00",
    "category": "websocket_closed",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-7b3ddd4ec7",
    "turn_alias": "turn-f3203a2ff2",
    "signature": "Connection closed normally"
  },
  {
    "timestamp": "2026-09-15T18:41:50+08:00",
    "category": "websocket_closed",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-00cb5a43b4",
    "turn_alias": "turn-fb7d35f0e7",
    "signature": "Connection closed normally"
  },
  {
    "timestamp": "2026-09-07T11:26:43+08:00",
    "category": "tls_unexpected_eof",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-518a942a7b",
    "turn_alias": "turn-fbb8501b78",
    "signature": "TLS close_notify"
  },
  {
    "timestamp": "2026-09-15T19:01:44+08:00",
    "category": "tls_unexpected_eof",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-00cb5a43b4",
    "turn_alias": "turn-fb7d35f0e7",
    "signature": "TLS close_notify"
  },
  {
    "timestamp": "2026-09-07T16:32:47+08:00",
    "category": "response_body_network_error",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-7b3ddd4ec7",
    "turn_alias": "turn-aafdbc8e6e",
    "signature": "error decoding response body"
  },
  {
    "timestamp": "2026-09-14T21:06:58+08:00",
    "category": "response_body_network_error",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-ba35daca20",
    "turn_alias": "turn-f1d6d5beee",
    "signature": "error decoding response body"
  },
  {
    "timestamp": "2026-09-07T10:08:54+08:00",
    "category": "connect_failed",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-b06bf3b5d3",
    "turn_alias": "turn-42108a4a6c",
    "signature": "stream connection failed"
  },
  {
    "timestamp": "2026-09-14T21:06:25+08:00",
    "category": "connect_failed",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-ba35daca20",
    "turn_alias": "turn-f1d6d5beee",
    "signature": "stream connection failed"
  },
  {
    "timestamp": "2026-09-07T10:08:17+08:00",
    "category": "connection_refused",
    "source_target": "codex_api::endpoint::responses_websocket",
    "thread_alias": "thread-b06bf3b5d3",
    "turn_alias": "turn-b23a6a8439",
    "signature": "os error 10061"
  },
  {
    "timestamp": "2026-09-07T16:36:57+08:00",
    "category": "connection_refused",
    "source_target": "codex_api::endpoint::responses_websocket",
    "thread_alias": "thread-518a942a7b",
    "turn_alias": "turn-8246331ad7",
    "signature": "os error 10061"
  },
  {
    "timestamp": "2026-09-07T11:31:49+08:00",
    "category": "websocket_idle_timeout",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-518a942a7b",
    "turn_alias": "turn-fbb8501b78",
    "signature": "idle timeout waiting for websocket"
  },
  {
    "timestamp": "2026-09-15T19:06:48+08:00",
    "category": "websocket_idle_timeout",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-00cb5a43b4",
    "turn_alias": "turn-fb7d35f0e7",
    "signature": "idle timeout waiting for websocket"
  },
  {
    "timestamp": "2026-09-07T11:26:43+08:00",
    "category": "compaction_retry",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-518a942a7b",
    "turn_alias": "turn-fbb8501b78",
    "signature": "remote compaction v2 stream failed"
  },
  {
    "timestamp": "2026-09-15T20:56:46+08:00",
    "category": "compaction_retry",
    "source_target": "codex_core::responses_retry",
    "thread_alias": "thread-00cb5a43b4",
    "turn_alias": "turn-af0f2ff030",
    "signature": "remote compaction v2 stream failed"
  },
  {
    "timestamp": "2026-09-07T12:45:38+08:00",
    "category": "compaction_failed",
    "source_target": "codex_core::session::turn",
    "thread_alias": "thread-7b3ddd4ec7",
    "turn_alias": "turn-31ec291573",
    "signature": "Failed to run pre-sampling compact"
  },
  {
    "timestamp": "2026-09-15T20:42:25+08:00",
    "category": "compaction_failed",
    "source_target": "codex_core::session::turn",
    "thread_alias": "thread-00cb5a43b4",
    "turn_alias": "turn-b8338e7e22",
    "signature": "Failed to run pre-sampling compact"
  },
  {
    "timestamp": "2026-09-11T18:08:42+08:00",
    "category": "missing_tool_output",
    "source_target": "codex_core::util",
    "thread_alias": "thread-681de3e10d",
    "turn_alias": "turn-88dca5e764",
    "signature": "Custom tool call output is missing"
  },
  {
    "timestamp": "2026-09-11T19:08:28+08:00",
    "category": "missing_tool_output",
    "source_target": "codex_core::util",
    "thread_alias": "thread-681de3e10d",
    "turn_alias": "turn-5bc0a3ab4f",
    "signature": "Custom tool call output is missing"
  }
]

Please reply here with any required follow-up diagnostics, recommended supported recovery steps, and any applicable fixed version.

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)
    contextIssues related to context management (including compaction)
    tool-callsIssues related to tool calling
    on Sep 21, 2026
  2. bondgg621-web commented on Sep 22, 2026

    @bondgg621-web
    Author

    Update: failures persist after the September desktop update

    Follow-up inspection on 2026-09-22 (UTC+08:00):

    • Desktop app: 26.915.4065.0; bundled core: 0.155.0-alpha.9.2.
    • From September 20 through 22, local core logs contain 31 answer-stream retry records across 23 distinct turns. The most common signatures are Connection closed normally (18), unexpected TLS EOF (6), and websocket closed by server before response.completed (5).
    • The same window has 3 remote-compaction retry records in one turn, including TLS EOF and an SSE idle timeout. There are no new missing-tool-output or pre-sampling-compaction records in that subset.

    Current built-in codex doctor checks pass for the active provider: authenticated WebSocket handshake returned HTTP 101 Switching Protocols and the HTTPS inference endpoint was reachable. This demonstrates current endpoint reachability and handshake success only; it does not demonstrate long-stream stability.

    The configured local proxy was restarted at about 12:39 on September 22. Answer-stream failures occurred both before (11:57, 12:15, 12:28, 12:34) and after (14:09, 14:21, 14:27, 17:56) that restart. The proxy is therefore not currently proven to be the sole cause, and restart did not eliminate the symptom.

    I reviewed the auto-suggested reports. #45921 is a related Windows image-heavy, task-specific idle-timeout case; #46908 is a complete connection failure even for a minimal fresh prompt; #46928 is a macOS long-task report. This issue remains distinct because it provides aggregate Windows data across ordinary answer streams and compaction, plus the missing-tool-output recovery symptom.

    No credentials, session content, raw thread IDs, or complete logs are added in this update. Please advise what further redacted diagnostic evidence would help distinguish a service-side stream close from a client/proxy transport failure.

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)contextIssues related to context management (including compaction)tool-callsIssues related to tool callingwindows-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