[macOS][Remote Control] Auto-update leaves selected host pointing to a stale environment ID
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
After the ChatGPT desktop app auto-updated on macOS from 26.727.51351 to 26.903.61454, Remote Control could no longer connect to this Mac. The persisted selected remote-control host ID did not match the desktop app's current local remote-control environment ID, and the selected host's cached thread list was empty.
Pairing and local execution had worked before the update: mobile-originated Codex tasks were confirmed to run on this Mac rather than in the cloud.
Environment
- ChatGPT desktop app:
26.903.61454(build8378) - Previous desktop app version:
26.727.51351 - Host: macOS
26.6.2(build25G83), arm64 - Update observed: 2026-09-10 05:32 JST
- Remote client: ChatGPT mobile Remote
Observed state
Immediately after the automatic update and restart, the persisted global state contained two different environment IDs:
selected-remote-host-id = remote-control:<stale-environment-id> # suffix 0bcc
electron-local-remote-control-environment-id = <current-environment-id> # suffix 21b4
The identifiers are intentionally redacted. The selected host's thread-list cache was an empty array. The app was therefore looking at an older host/environment instead of the current local Remote Control environment.
A newly created task became accessible later, but the two persisted IDs remain inconsistent in the current state file.
Steps to reproduce / observed sequence
- Pair ChatGPT mobile Remote with a Mac running the ChatGPT desktop app.
- Start Codex tasks from mobile and confirm they execute on the paired Mac.
- Allow the desktop app to auto-update and restart.
- Try to reconnect from mobile.
- Inspect the desktop global state.
- Observe that
selected-remote-host-idreferences a different environment thanelectron-local-remote-control-environment-id, while the selected host thread-list cache is empty.
This was observed across an automatic update; I do not yet have a deterministic way to trigger an app update on demand.
Expected behavior
After an app update, Codex should preserve or refresh the local Remote Control environment identity and reconcile the selected host. If the selected environment no longer exists, the app should clear or migrate the stale selection instead of silently showing an empty host with no usable Remote connection.
Actual behavior
The local environment identity changed or was recreated, but the selected host continued to point at the older environment. Restarting the updated app did not reconcile the two IDs.
Related issues
- #38015 reports host context being restored incorrectly after an app update, but involves a remote SSH host and hidden local pins.
- #23112 reports stale local Remote Control enrollment/environment IDs after revocation, rather than after an automatic update.
- #30329 reports restoration of a stale Remote Control host on Windows.
This report is specifically about a macOS desktop auto-update leaving selected-remote-host-id inconsistent with the current electron-local-remote-control-environment-id.
I can provide redacted state excerpts and relevant app-log records privately. I am not attaching raw logs because they contain local paths, prompts, and other potentially sensitive data.
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
Start by tracing how the persisted selected-remote-host-id and electron-local-remote-control-environment-id are restored across an auto-update and restart. Use the reported pairing and update sequence, then inspect the resulting global state and selected host thread-list cache. Done means the selected host is reconciled with the current local environment, or a stale selection is cleared or migrated instead of showing an unusable empty host.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, macos
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100