[Linux CLI / Android 1.2026.230] Pairing toast succeeds but mobile shows no connected devices and host receives no attach/claim
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
Codex Remote Control pairing appears to succeed on Android, but the device never becomes visible/connected.
The Android app shows a success toast after entering the pairing code, then immediately returns to a screen saying that no devices are connected.
The Linux host remains healthy and connected to the Remote backend throughout.
Environment
Host:
- Ubuntu 26.04 LTS
- Codex CLI: 0.150.1
- Remote Control started via CLI daemon mode
Mobile:
- Android
- ChatGPT app: 1.2026.230
Reproduction
- Start Remote Control:
codex remote-control start
Output:
Starting app-server daemon with remote control enabled...
This machine is available for remote control as <hostname>.
- Verify status:
codex remote-control start --json
Relevant result:
{
"mode": "daemon",
"status": "connected",
"environmentId": "<redacted>",
"timedOut": false,
"daemon": {
"status": "alreadyRunning",
"cliVersion": "0.150.1",
"appServerVersion": "0.150.1"
}
}
- Generate a pairing code:
codex remote-control pair
-
Enter the code in ChatGPT Android.
-
Android shows a toast indicating that pairing succeeded.
-
The Remote screen still says that no devices are connected.
-
Reopening/force-stopping the Android app does not help.
-
Repeating the test over both Wi-Fi and mobile data produces the same result.
Host-side diagnostics
With:
RUST_LOG=trace codex remote-control start
the host successfully reaches chatgpt.com, creates the pairing request, receives a valid manual pairing code and environment ID, and maintains an active WebSocket connection.
The Remote backend continues exchanging healthy:
ping
pong status="active"
ack
messages.
Example pattern:
remoteControl/pairing/start
...
connection is ready
...
pairingCode: <redacted>
manualPairingCode: <redacted>
environmentId: <redacted>
...
Received message {"type":"ping", ... "state":"background"}
Sending ... {"type":"pong","status":"active", ...}
Received message {"type":"ack", ...}
However, after Android reports "pairing succeeded", no obvious device attach / pairing claim event appears in the host trace.
Additional behavior
Sometimes running:
codex remote-control
prints:
Error: Remote control is enabled on <hostname> but the connection is errored.
while at the same time:
codex remote-control start --json
still reports:
"status": "connected"
So there may also be a state inconsistency between the interactive Remote Control command and the daemon/backend connection state.
Expected behavior
After entering the pairing code successfully, the Linux host should appear as a connected Remote device in the Android ChatGPT app.
Actual behavior
Pairing success is acknowledged by the Android UI, but the host never appears as connected.
Notes
The host-side connection appears healthy:
- pairing request succeeds
- WebSocket remains connected
- ping/pong/ack continue normally
- environment ID is stable
- changing Wi-Fi/mobile network does not affect the issue
This looks like the failure may occur after pairing acceptance, during device claim/attach/registry propagation on the Android/backend side.
Possibly related
There are other recent Remote Control reports involving:
- Android pairing/attach failures
- stale or missing Remote device lists
- regressions around ChatGPT mobile 1.2026.230
- Remote Control reporting
erroreddespite a connected backend session
I can provide a sanitized trace log if useful.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce with codex remote-control start --json and codex remote-control pair, then repeat with RUST_LOG=trace codex remote-control start. Compare the reported daemon connection state with the trace after Android reports pairing success, looking for the missing attach or claim transition. Done means a successful pairing makes the host appear as connected and the interactive and JSON status commands agree.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, rust
- Domain
- cli, mobile-dev, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100