codex - 💡(How to fix) Fix Codex desktop "Control other devices" authorization fails due to account mismatch during remote control enrollment

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

2026-05-15T09:20:54.408Z info [remote-control-websocket] remote_control_client_enrollment_start_request
hasExistingEnrollment=false
headerChatGptAccountId=<account-id>
localEnrollmentAccountUserId=null
localEnrollmentClientId=null
responseAccountUserId=null
responseChallengeId=null
responseClientId=null
selectedAccountUserId=<chatgpt-user-id><account-id>
tokenAccountId=<account-id>
tokenAccountUserId=<chatgpt-user-id>
<account-id>
tokenAuthUserId=<chatgpt-user-id>
tokenSubject=<oauth-subject>

2026-05-15T09:20:55.477Z info [remote-control-websocket] remote_control_client_enrollment_start_response
hasExistingEnrollment=false
headerChatGptAccountId=<account-id>
localEnrollmentAccountUserId=null
localEnrollmentClientId=null
responseAccountUserId=<chatgpt-user-id>
responseChallengeId=<challenge-id>
responseClientId=<client-id>
selectedAccountUserId=<chatgpt-user-id><account-id>
tokenAccountId=<account-id>
tokenAccountUserId=<chatgpt-user-id>
<account-id>
tokenAuthUserId=<chatgpt-user-id>
tokenSubject=<oauth-subject>

2026-05-15T09:20:55.477Z warning [remote-control-websocket] remote_control_client_enrollment_start_account_mismatch
hasExistingEnrollment=false
headerChatGptAccountId=<account-id>
responseAccountUserId=<chatgpt-user-id>
selectedAccountUserId=<chatgpt-user-id><account-id>
tokenAccountUserId=<chatgpt-user-id>
<account-id>
tokenAuthUserId=<chatgpt-user-id>

2026-05-15T09:20:55.479Z warning [electron-message-handler] [remote-connections/settings] remote_control_authorize_failed
errorMessage="Remote control enrollment start does not match current account."
errorName=Error
errorStack="Error: Remote control enrollment start does not match current account.\n at Object.postMessage (app://-/assets/vscode-api-DH_DWhkY.js:1:57272)"

Fix Action

Fix / Workaround

A sign-out/sign-in refresh may be a possible workaround, but the observed failure is specifically the local account-id comparison after a successful enrollment start response, not a network or macOS permission failure.

Code Example

2026-05-15T09:20:54.408Z info [remote-control-websocket] remote_control_client_enrollment_start_request \
  hasExistingEnrollment=false \
  headerChatGptAccountId=<account-id> \
  localEnrollmentAccountUserId=null \
  localEnrollmentClientId=null \
  responseAccountUserId=null \
  responseChallengeId=null \
  responseClientId=null \
  selectedAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAccountId=<account-id> \
  tokenAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAuthUserId=<chatgpt-user-id> \
  tokenSubject=<oauth-subject>

2026-05-15T09:20:55.477Z info [remote-control-websocket] remote_control_client_enrollment_start_response \
  hasExistingEnrollment=false \
  headerChatGptAccountId=<account-id> \
  localEnrollmentAccountUserId=null \
  localEnrollmentClientId=null \
  responseAccountUserId=<chatgpt-user-id> \
  responseChallengeId=<challenge-id> \
  responseClientId=<client-id> \
  selectedAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAccountId=<account-id> \
  tokenAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAuthUserId=<chatgpt-user-id> \
  tokenSubject=<oauth-subject>

2026-05-15T09:20:55.477Z warning [remote-control-websocket] remote_control_client_enrollment_start_account_mismatch \
  hasExistingEnrollment=false \
  headerChatGptAccountId=<account-id> \
  responseAccountUserId=<chatgpt-user-id> \
  selectedAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAuthUserId=<chatgpt-user-id>

2026-05-15T09:20:55.479Z warning [electron-message-handler] [remote-connections/settings] remote_control_authorize_failed \
  errorMessage="Remote control enrollment start does not match current account." \
  errorName=Error \
  errorStack="Error: Remote control enrollment start does not match current account.\n    at Object.postMessage (app://-/assets/vscode-api-DH_DWhkY.js:1:57272)"

---

<chatgpt-user-id>__<account-id>

---

<chatgpt-user-id>

---

Remote control enrollment start does not match current account.
RAW_BUFFERClick to expand / collapse

What happened

In Codex Desktop, opening Settings -> Control other devices and attempting to authorize remote control fails with the UI message shown in Chinese as:

远程控制授权失败

The local logs show that the enrollment request reaches the backend and receives a challenge/client id, but Codex then rejects the response locally with an account mismatch.

Expected behavior

Remote control authorization should complete when the user is signed in with the same ChatGPT account.

Environment

  • Codex Desktop: 26.513.20950 (CFBundleVersion 2816)
  • macOS: 26.3 (25D125)
  • Architecture: arm64
  • Auth mode: ChatGPT login
  • Feature area: Control other devices / remote control enrollment

Evidence from logs

The same pattern reproduces across multiple attempts. Sensitive account ids, user ids, OAuth subject ids, challenge ids, and client ids are redacted below.

2026-05-15T09:20:54.408Z info [remote-control-websocket] remote_control_client_enrollment_start_request \
  hasExistingEnrollment=false \
  headerChatGptAccountId=<account-id> \
  localEnrollmentAccountUserId=null \
  localEnrollmentClientId=null \
  responseAccountUserId=null \
  responseChallengeId=null \
  responseClientId=null \
  selectedAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAccountId=<account-id> \
  tokenAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAuthUserId=<chatgpt-user-id> \
  tokenSubject=<oauth-subject>

2026-05-15T09:20:55.477Z info [remote-control-websocket] remote_control_client_enrollment_start_response \
  hasExistingEnrollment=false \
  headerChatGptAccountId=<account-id> \
  localEnrollmentAccountUserId=null \
  localEnrollmentClientId=null \
  responseAccountUserId=<chatgpt-user-id> \
  responseChallengeId=<challenge-id> \
  responseClientId=<client-id> \
  selectedAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAccountId=<account-id> \
  tokenAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAuthUserId=<chatgpt-user-id> \
  tokenSubject=<oauth-subject>

2026-05-15T09:20:55.477Z warning [remote-control-websocket] remote_control_client_enrollment_start_account_mismatch \
  hasExistingEnrollment=false \
  headerChatGptAccountId=<account-id> \
  responseAccountUserId=<chatgpt-user-id> \
  selectedAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAccountUserId=<chatgpt-user-id>__<account-id> \
  tokenAuthUserId=<chatgpt-user-id>

2026-05-15T09:20:55.479Z warning [electron-message-handler] [remote-connections/settings] remote_control_authorize_failed \
  errorMessage="Remote control enrollment start does not match current account." \
  errorName=Error \
  errorStack="Error: Remote control enrollment start does not match current account.\n    at Object.postMessage (app://-/assets/vscode-api-DH_DWhkY.js:1:57272)"

Why this looks like a bug

The local token and selected account use an account-scoped user identifier:

<chatgpt-user-id>__<account-id>

But the enrollment start response returns the plain ChatGPT user id:

<chatgpt-user-id>

Those appear to refer to the same user/account context, but the desktop client compares them as different values and throws:

Remote control enrollment start does not match current account.

Impact

This blocks enabling Control other devices even though the enrollment backend responds successfully.

Notes

A sign-out/sign-in refresh may be a possible workaround, but the observed failure is specifically the local account-id comparison after a successful enrollment start response, not a network or macOS permission failure.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Remote control authorization should complete when the user is signed in with the same ChatGPT account.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

codex - 💡(How to fix) Fix Codex desktop "Control other devices" authorization fails due to account mismatch during remote control enrollment