Revoked remote control access for a device, connections remain on ChatGPT mobile app without a way to delete, cannot pair again
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.513.20950 (2816)
What subscription do you have?
Pro 20x
What platform is your computer?
Darwin 25.4.0 arm64 arm
What issue are you seeing?
I paired my ChatGPT iOS app with the CLI and Desktop apps in that order. First by running 'codex remote-control' from the CLI and pairing my ChatGPT iOS app, then by launching the Codex desktop app and going through pairing with the iOS app there.
I later revoked access to my phone via the Codex desktop app. The two connections remain on my iOS app, even after deleting and re-installing. There is no way to remove them in the UI.
I attempted to re-pair the phone with the Codex desktop app by clicking 'Add' in the desktop app and having my phone scan the QR code and launch the iOS app. However, nothing happens. The existing connections show 'No workspace' and a list full of 'New chat':
<img width="645" height="1398" alt="Image" src="https://github.com/user-attachments/assets/3afa4632-0858-4d3d-815e-92a45d4e14d3" />
Clicking any chat shows a screen like this:
<img width="645" height="1398" alt="Image" src="https://github.com/user-attachments/assets/0e93db54-56dd-462c-ad20-cce3230a2227" />
As of right now the only way to use codex remotely from my phone is to setup a SSH connection. I cannot get either the desktop or CLI connection to remove or pair again.
What steps can reproduce the bug?
- Pair the iOS app with the Codex desktop app
- Revoke the pairing
- Attempt to pair again
What is the expected behavior?
Revoked connections would be removed from the iOS app, or provide a deletion option, re-pairing would work properly.
Additional information
_No response_
24 Comments
ditto. having same issue right now.
Adding to this - I was able to enroll my iPad and access the connected codex desktop and cli app just fine. I just have no way to re-enroll a previously revoked device, and no way to remove connected codex instances.
And one more possibly related issue on this. Attempting to enroll the desktop app to control other devices shows this:
<img width="517" height="1067" alt="Image" src="https://github.com/user-attachments/assets/b9ca93a6-c108-4015-9f4a-45be434f2633" />
'Failed to authorize remote control'
Yeah same here, it's kind of annoying as it did load the chat titles but never made it into a thread. Then trying to re-auth has me also stuck with the machine I cant delete from the iOS app. There is no exposed way to delete a connection on the app.
Same here, and for some reason the revoked device can still access chats lists and get status updates, but clicking in any chat would result in a 403 error
I've encountered this situation too, is there a temporary workaround?
Same
@ronething @Astrisle @flyespresso I did find a workaround for re-pairing a revoked client. You simply have to logout on the phone and log back in again (not simply logging in after a reinstall - you must log out while logged in). After doing that it requested permission to pair and showed up on the account again.
There's a workaround I found here to list and delete the connected environments, however please inspect the files and use at your own risk: https://gist.github.com/sirmalloc/fefef0b65729d9644794a3c67d1a28b9
They simply create the same headers as the desktop Codex app and issue requests that were already built in but not wired.
Same issue. I'm fully unable to pair from my phone.
Im actually scared how can a company claiming to have the best coding agent...
Ok screw that do you not have a testing team 😂😂😂
Adding another repro from a Mac mini + iOS setup. This matches the stale/revoked mobile connection behavior, with an additional 403/thread/project access symptom.
Environment:
26.513.20950, build2816(com.openai.codex)codex-cli 0.131.0-alpha.926.4.1(25E253), arm64Observed behavior:
Matthews-Mac-mini.localwith a spinner, then it turns red/offline after timing out.403.Local desktop evidence:
~/.codex/state_5.sqlitetableremote_control_enrollmentsfor the same host name.targeted_connections=1and__slingshot_backend_thread_list__being sent to the remote client.errorCode=-32600/thread not loadedfor one stale pinned thread id. Removing that stale pinned id from~/.codex/.codex-global-state.jsonfixed the local stale pinned-thread read error, but did not fix iOS remote access.remote_control_enrollmentsrow and restarting Codex did not resolve the stale iOS connection behavior. The desktop re-enrolled, but iOS still showed/used the broken connection state.Expected:
Actual:
This feels related to stale server-side mobile/desktop connection state rather than only local desktop state, because local enrollment reset + iOS reinstall did not remove the broken connection from the mobile app.
@gravity-clms I've had success getting it working again after logging out of the mobile app and logging back in. Doing a logout clears some persistent state (likely shared keychain) that deleting the app won't even get rid of.
Edit: For clarity - just deleting the app, installing it again, then logging in is not enough. You must logout while logged in.
Same here, uninstalling the app doesn't solve the problem, but logging out does.
This works for me, thanks
https://github.com/openai/codex/issues/22700#issuecomment-4456720432
I am seeing the same stale remote-control host state after revoking the pairing from Codex Desktop.
Environment/context:
Settings > Connections > Control this Mac(Devices that can control this Macis empty).Allow other devices to connectis still enabled on the Mac.Codex Desktop / Macconnection as connected.Observed error on iOS:
Additional observations:
Codex Desktop / Macentry remains visible in ChatGPT iOS under Codex > Connections.Expected behavior:
Forget/remove hostaction on iOS.This looks like the mobile/relay-side host list is not being invalidated after Mac-side authorization removal.
@fmnisme Instead of reinstalling the app and logging in again, try logging out of the app using the logout option and then logging in again. This was the only thing that worked for me, even deleting / reinstalling / logging in again didn't fix it. You have to actually do a logout.
@sirmalloc Update: signing out and signing back in fixed the stale connection state for me.
After re-login, I was able to use Codex mobile remote control again / re-pair successfully. So this may be a workable temporary workaround for this issue.
I am seeing what looks like the same issue, with one additional detail: the stale connection was created after accidentally pairing Codex Mobile with the wrong Mac.
Environment:
Scenario:
Codex > Connections, the old Codex Desktop entry remains, shown as something likemy-macbook-pro-16.local.Expected:
Actual:
This appears related to #23078, #22781, and #23090 as well.
I am currently experiencing this same issue. tried using codex cli - created a new connection using same hostname and also won't resolve.
unable to fully delete connections on the iOS app unless they are connections I created using the app (ssh).
Ideally - you could remove connections on the iOS app which would reset the auth state and then be able to reconnect via QR code again.
signing out and signing in on iphone app worked, still I do not see the approved iphone in the mac-side (which is concerning if I were in enterprise environment) but able to connect.
This looks like a lifecycle-state bug rather than only a pairing UI bug.
A revoked or stale connection needs an explicit server-side terminal state, not just removal from one local desktop table or one mobile install. The mobile UI is showing that some account-level binding still exists: it can list metadata/status, but thread access fails with 403 and re-pairing gets routed back into the stale entry.
The product needs a per-connection "forget this host/device" action with a visible receipt: connection id, host/device label, revoked_at, and whether relay/account state was removed. Otherwise users cannot tell whether they revoked the phone, revoked the desktop, removed only local state, or left a stale server-side binding behind.
the same
Same, doing the login/logout did not solve the problem. Also, I remove the computer connection and now I'm stuck because it's still showing the in the app connection while it does not exists anymore
Same issue, login/logout doesn't work either.
Yep, quite broken