[Remote][Windows/Android] Pairing succeeds and host WebSocket is Connected, but Android attach immediately closes with `Transport unavailable`
Summary
Codex Remote on Android can successfully pair with a Windows host, and the Windows host successfully creates a fresh Remote enrollment and reaches Connected on the Remote WebSocket, but the Android client cannot attach to the host. The mobile UI reports Transport unavailable, no chats are accessible, and the Windows logs show repeated Remote client connections being immediately closed.
This began after Remote had previously worked.
Environment
- Host: Windows
- ChatGPT Desktop package:
OpenAI.ChatGPT-Desktop 1.2026.190.0 - Codex Desktop client reported in logs:
26.818.31338 - Remote controller: ChatGPT Android app
- Remote pairing: succeeds
- Mobile error:
Transport unavailable
Current behavior
The desktop host registers successfully with Remote:
remote control websocket status changed previous_status=Connecting next_status=Connected
connected to app-server remote control websocket
A completely fresh Remote identity was generated and persisted successfully:
has_enrollment=true
server_id=Some("srv_e_...")
environment_id=Some("env_e_...")
However, when the Android client tries to connect, the desktop logs show repeated immediate closures such as:
forwarding remote control connection closed transport event connection_id=ConnectionId(3)
forwarding remote control connection closed transport event connection_id=ConnectionId(4)
forwarding remote control connection closed transport event connection_id=ConnectionId(5)
forwarding remote control connection closed transport event connection_id=ConnectionId(6)
Earlier in troubleshooting, the host Remote WebSocket also logged:
remote control websocket reader disconnected, err: failed to read from websocket: IO error: An existing connection was forcibly closed by the remote host. (os error 10054)
Important diagnostic result
The original Remote enrollment and installation identity were fully rotated to rule out stale local state.
After resetting:
- A new installation ID was generated.
- The old
remote_control_enrollmentsrow was removed. - ChatGPT Desktop created a new
server_idandenvironment_id. - The new enrollment was persisted successfully in
state_5.sqlite. - The host Remote WebSocket reached
Connected. - Android re-pairing succeeded.
- Android still reports
Transport unavailableand the client-side Remote connections are immediately closed.
This appears to place the failure after host registration/WebSocket setup, at the mobile-client attach/session transport stage.
Local troubleshooting already performed
- Restarted ChatGPT/Codex Desktop
- Restarted Windows
- Signed out/in
- Removed and recreated Remote pairing
- Killed all ChatGPT/Codex processes and recreated local Remote queue/global state
- Rotated the durable Codex
installation_id - Removed the persisted
remote_control_enrollmentsentry - Verified a brand-new Remote enrollment was subsequently created
- Verified new
server_idandenvironment_idvalues were generated - Verified host Remote WebSocket reaches
Connected - Cleared all ChatGPT Android app data
- Re-authenticated Android app
- Re-paired Android device successfully
- Tested Windows host on normal Wi-Fi and on a phone hotspot
- Result is identical across networks
- Verified ordinary ChatGPT/Codex HTTPS authentication/API requests return
200 OK
Expected behavior
After successful pairing and after the Windows Remote host reaches Connected, the Android Remote client should attach to the host and display/control supported Codex chats.
Actual behavior
Pairing succeeds, the host is enrolled and connected, but Android cannot attach. The phone reports Transport unavailable, no chats are accessible, and each client connection is immediately closed on the host.
Suspected failure boundary
Observed sequence:
- Authentication: works
- Host Remote enrollment: works
- Host WebSocket connection: works (
Connected) - Android pairing: works
- Android client attach: fails immediately
- Host logs repeated
remote control connection closed transport event
This looks distinct from failures where /wham/tasks/list returns 503 or where the host itself cannot establish the Remote WebSocket.
Privacy
Account IDs, installation IDs, server/environment IDs, tokens, cookies, project content, and conversation content have been omitted/redacted. Additional sanitized log excerpts can be provided if needed.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Adding another reproduction with the same failure boundary.
Environment:
26.818.313380.144.4to0.149.0Observed behavior:
200 OK).I also fully reset the local Remote state before re-pairing. After the fresh pairing attempt, the Desktop logs repeatedly show the Remote client connection being created and then immediately closed, e.g.:
So this looks consistent with the issue described here: authentication/pairing succeeds, but Android attach/session transport fails immediately after connection creation.
Additional checks performed:
0.149.0.codex remote-control startis not a usable workaround on native Windows because it returns:codex app-server daemon lifecycle is only supported on Unix platforms.I can provide more sanitized log excerpts if useful.
Adding another confirmed reproduction with a slightly different diagnostic path.
This Windows host had Android Remote working successfully for months before the failure began. The Android phone can still Remote-control other Codex hosts normally, so this is isolated to one Windows host rather than a general mobile/account/network outage.
Observed state:
Transport unavailable.An earlier host-side issue was also found during diagnosis: Remote was enabled in persisted state, but the real desktop app-server had not started its Remote worker. Restarting the real app-server and toggling Remote caused the worker to start and the host to connect to the relay, but this did not resolve the Android attach failure. The remaining failure is therefore post-registration/post-relay initialization.
Troubleshooting already performed:
Failure boundary from host logs:
Transport unavailableNo account IDs, server/environment IDs, installation IDs, tokens, hostnames, or project content included here. Sanitized timestamps/log excerpts are available if maintainers want them.
One timing detail that may or may not be relevant: this host had previously worked for months, and the failure appeared around the time another Remote host was added to the same account. I do not have evidence that the additional host caused the issue, so treating that only as correlation.
I am seeing the same failure pattern on a Windows host with the ChatGPT mobile app: pairing succeeds, the desktop shows a recent Remote connection/heartbeat, but the phone reports
Transport unavailableand cannot access the Codex chats. It reproduces on both the normal Wi-Fi network and a cellular hotspot. Both apps are updated; QR pairing was recreated; no VPN or proxy is in use; the PC remains awake with only the display allowed to turn off. DNS and TCP 443 connectivity to chatgpt.com and ws.chatgpt.com succeed. This appears to be the same post-enrollment mobile attach/transport failure described in this issue.