iOS ChatGPT fails security setup after scanning Windows Codex QR code
Summary
iOS ChatGPT recognizes and opens the Windows Codex QR-code pairing flow, but setup always fails with:
Unable to complete security setup
The Windows host appears to recreate local remote-control IDs after each attempt, but the mobile setup never completes.
Environment
- Windows 11
- Codex for Windows latest version available in-app / Microsoft Store at time of testing
- iPhone with passcode and Face ID enabled
- iCloud Keychain enabled
- iCloud Private Relay disabled
- ChatGPT app installed from the US App Store and updated to the latest version
- Both PC and iPhone tested on the same US VPN node
- VPN set to global mode
- v2rayN TUN mode also tested on Windows
Troubleshooting already tried
- Restarted Codex on Windows
- Restarted ChatGPT on iOS
- Re-generated the QR code multiple times
- Confirmed iPhone passcode / Face ID / iCloud Keychain conditions
- Confirmed iCloud Private Relay is disabled
- Confirmed ChatGPT was installed from the US App Store
- Tested both devices on the same US VPN node
- Tested Windows VPN global mode and TUN mode
- Reset Windows Codex web cache / login state
- Cleared mobile pairing state from
.codex-global-state.json - Checked
state_5.sqlite; no matching remote enrollment table was present to clear
Observed local state behavior
After clearing local mobile/remote pairing keys and attempting setup again, these keys are recreated:
electron-local-remote-control-installation-idelectron-local-remote-control-environment-idcodex-mobile-has-connected-device
But codex-mobile-setup-completed does not appear, and iOS shows the security setup failure screen.
Expected behavior
After scanning the Windows Codex QR code in iOS ChatGPT, the security setup should complete and the iPhone should be paired with the Windows Codex host.
Actual behavior
The setup flow opens on iOS but ends with “Unable to complete security setup”; Windows Codex never becomes usable from the mobile app.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗