Repository navigation
[Windows App] Dragged image attachments trigger WebSocket 10054 after 26.818.8289.0 update #40608
Description
What version of the Codex App are you using?
OpenAI.Codex 26.818.8289.0 on Windows. The package was installed on 2026-08-25 at approximately 13:18 local time; bundled plugin assets refreshed around 13:21.
Platform
Windows x64, Codex desktop app.
Model
gpt-5.6-sol (high reasoning).
What issue are you seeing?
After the 26.818.8289.0 update, dragging or pasting an image directly into the Codex desktop composer can cause the turn to stop before the model starts processing. The UI reports:
An existing connection was forcibly closed by the remote host. (os error 10054)
The affected turn remains active with no assistant message and no tool marker. Direct image drag-and-drop worked normally before this update.
Reproduction
- Start a new local Codex App task on Windows.
- Confirm that text-only turns and image generation/tool-based image handling work normally.
- Drag a PNG into the composer and send a short request.
- Observe that the local session records the user message and inline
input_image, but no model token count, reasoning item, assistant message, or tool call follows. - The UI reports WebSocket / remote-host error 10054, and the turn remains stuck.
A reproduced image was:
- PNG
- 2048 × 1152
- 2,603,991 bytes on disk
- approximately 3,472,898 characters when stored as the inline image message
A second reproduction used two 3840 × 2160 PNGs; the combined inline image message was approximately 8.15 MB.
Controls
- The same new task completed a long text-only/image-generation workflow successfully before the direct attachment.
- The same local image is readable through the local image tool.
- The failure occurs before the model produces tokens or calls tools.
- After the attachment failure, a text-only retry in the same task, containing only the local image path, also produced no assistant message or tool call and was interrupted after approximately 118 seconds. This suggests the session can become unusable after the first 10054 failure.
- A previous affected task was compacted from roughly 653k tokens to about 34.8k / 828k; attachment failures still reproduced in a clean takeover task, so this is not explained only by context-window exhaustion.
Expected behavior
Dragging a normal PNG into the Windows Codex App should upload and process it reliably. If transport limits are exceeded, the app should resize/compress the image or show a clear attachment-size error rather than leaving the task stuck with WebSocket 10054.
A failed attachment turn should not poison later text-only turns in the same task.
Additional information
This appears related to, but is not identical to:
- Responses WebSocket falls back when compacted replacement_history contains large inline images #24550 — large inline images retained in compacted replacement history
- Bug: image-heavy chats repeatedly reconnect and become very slow #20805 — image-heavy chats repeatedly reconnect and become slow
- Codex CLI sessions become unrecoverable after ~37-40 minutes on Windows 11 after websocket disconnects #18723 — Windows sessions become unrecoverable after WebSocket 10054
The current case reproduces on the Windows desktop app immediately after direct attachment in a newly created takeover task. Raw session files, prompts, task IDs, local paths, and images are intentionally omitted for privacy. Redacted structural evidence can be provided if needed.
Activity
46csvwv274-dev commentedon Aug 25, 2026
Follow-up evidence from a fresh task:
custom_tool_call_outputline of 21,000,259 characters containing the four image payloads.task_completeevent followed; the task remained active/stuck.Control test:
This suggests the failure is caused by large inline multimodal tool results as well as direct composer attachments. A robust fix may need to:
No user images, prompts, task IDs, or local paths are included here.
yangjiaqi55629 commentedon Oct 12, 2026
Additional reproduction on Windows, verified on October 12, 2026.
Environment
User impact and reproduction
stream disconnected before completion: websocket closed by server before response.completedThe affected histories each retained one inline image, with no recorded compaction. The source PNGs were valid (all PNG chunk CRCs checked), both 1672 × 941:
Local traces showed successful WebSocket handshakes, followed by repeated disconnects after approximately 79–80 seconds. The client retried up to five times and then fell back to HTTP. Two fallback requests eventually returned HTTP 200; their uncompressed request bodies were approximately 2.46 MB and 2.62 MB. A later turn could start the WebSocket retry cycle again.
Controlled tests
These used separate diagnostic conversations/processes without modifying the affected chats:
Tests with unrelated capacity/routing failures were excluded from the comparison.
Limits of this evidence
This is not proof of a universal 2 MB limit, a specific WebSocket close code, or a confirmed server-side root cause. The close code/reason was not captured locally. JPEG conversion changes encoding, metadata, and payload size together. The smaller-JPEG handoff is a tested workaround for these samples, not a fix for existing affected history or a guarantee for all images.
Related reports: #44715, #38846, #28316.
Requested fixes / maintainer guidance
Normal image recognition and iterative work become unreliable, and affected conversations can stall for many minutes even on later text-only turns. Reducing preview size helps new tested conversations but does not resolve the underlying issue.
Images, conversation contents, session identifiers, local paths, account details, and raw logs are intentionally omitted for privacy.