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
Remote Control stuck on "connecting" with environmentId null on macOS #38534
The status you can see is deliberately lossy: on every failed connect the daemon publishes only the bare enum RemoteControlConnectionStatus::Errored — the actual cause (HTTP status, cf-ray, error kind) goes exclusively to a tracing warn! in the daemon log (https://github.com/openai/codex/blob/1f41cc5d92/codex-rs/app-server-transport/src/transport/remote_control/websocket.rs#L775-L799). That's why --json gives you status: connecting/errored with no reason. environmentId: null just means enrollment never completed (it's only published after a successful enrollment, desired_state.rs#L168), and the pair timeout is downstream of the same dead connection — three symptoms, one failed WebSocket connect.
So the real diagnosis is in your log: look for connecting to app-server remote control websocket followed by the warn line with error / error_kind in $CODEX_HOME/log/. Given the VPN/proxy environment, a blocked or MITM'd WSS upgrade is the most likely culprit — the connect-error formatter already captures HTTP status and body when the edge rejects it.
Fix suggestion for the repo: carry a last_error: String alongside the status enum and print it in remote-control start --json, so users don't need log spelunking to see a connectivity cause.
Activity
limenglong032-commits commentedon Aug 14, 2026
github-actions commentedon Aug 14, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
remote-control pairtimes out after 2s while backend pairing request allows 30s #37698Powered by Codex Action
limenglong032-commits commentedon Aug 14, 2026
已解决,根因为 MFA + 重复实例
jdcodes1 commentedon Aug 18, 2026
Two things worth knowing from the code here.
The status you can see is deliberately lossy: on every failed connect the daemon publishes only the bare enum
RemoteControlConnectionStatus::Errored— the actual cause (HTTP status, cf-ray, error kind) goes exclusively to a tracingwarn!in the daemon log (https://github.com/openai/codex/blob/1f41cc5d92/codex-rs/app-server-transport/src/transport/remote_control/websocket.rs#L775-L799). That's why--jsongives youstatus: connecting/erroredwith no reason.environmentId: nulljust means enrollment never completed (it's only published after a successful enrollment,desired_state.rs#L168), and thepairtimeout is downstream of the same dead connection — three symptoms, one failed WebSocket connect.So the real diagnosis is in your log: look for
connecting to app-server remote control websocketfollowed by the warn line witherror/error_kindin$CODEX_HOME/log/. Given the VPN/proxy environment, a blocked or MITM'd WSS upgrade is the most likely culprit — the connect-error formatter already captures HTTP status and body when the edge rejects it.Fix suggestion for the repo: carry a
last_error: Stringalongside the status enum and print it inremote-control start --json, so users don't need log spelunking to see a connectivity cause.