Skip to content

Codex mobile Remote Control shows only one macOS host and overwrites it with the last active desktop host #22950

@ZhenWang-BIT

Description

@ZhenWang-BIT

What version of the Codex App are you using (From “About Codex” dialog)?

Version 26.513.31313 (2867)

What subscription do you have?

ChatGPT Pro 20x

What platform is your computer?

Darwin 25.5.0 arm64 arm

What issue are you seeing?

ChatGPT iOS Codex Remote Control only shows one macOS Codex Desktop host even though two separate Macs are running Codex.

The visible host in the iOS app changes automatically depending on which Mac is active. When only Host A is running Codex, the iOS app shows Host A. When Host B starts Codex, the iOS app automatically changes the visible host from Host A to Host B without scanning a new QR code or manually re-pairing. When Host B is stopped, the iOS app automatically changes back to Host A.

This looks like a last active host wins behavior, or a single visible host slot being overwritten by whichever macOS Codex host is currently active.

Both desktop apps show the same iPhone controller. Also, if I click Revoke access on either Mac, the other Mac immediately loses access as well. This may be intentional if controller authorization is account-level or workspace-level, but host visibility should still be per machine.

The two Macs have different macOS host identities:

  • ComputerName differs
  • LocalHostName differs
  • HostName differs
  • hostname differs

The two Macs also have different Codex remote enrollment hashes from ~/.codex/state_5.sqlite.

Additional context:

  • Host A is a MacBook Pro.
  • Host B is a Mac Studio.
  • Host B was migrated from Host A using macOS Migration Assistant.
  • Real hostnames are intentionally redacted here.

What steps can reproduce the bug?

  1. Use two Macs signed into the same ChatGPT account and workspace.

    • Host A: MacBook Pro
    • Host B: Mac Studio
  2. Confirm the two Macs have different macOS host identities by running the following on both Macs:

    scutil --get ComputerName 2>/dev/null
    scutil --get LocalHostName 2>/dev/null
    scutil --get HostName 2>/dev/null
    hostname

  3. Confirm the two Macs have different Codex remote enrollment hashes by running the following on both Macs:

    sqlite3 ~/.codex/state_5.sqlite '.dump remote_control_enrollments' 2>/dev/null | shasum -a 256

  4. Quit Codex on Host B.

  5. Start Codex on Host A.

  6. On ChatGPT iOS, log out and log back in if needed, then complete the Remote Control authorization prompt.

  7. Open ChatGPT iOS Codex Connections.

    Observed:

    • The iOS app shows Host A.
  8. Keep Codex running on Host A.

  9. Start Codex on Host B.

  10. Do not scan a new QR code.
    Do not manually re-pair Host B.

  11. Wait for the iOS app to refresh.

Observed:

  • The iOS app automatically changes the visible host from Host A to Host B.
  • The iOS app still shows only one host.
  • Both macOS Codex apps show the same iPhone controller as connected.
  1. On Host B, stop Codex and related Codex remote processes:

pkill -x Codex 2>/dev/null || true
pkill -f 'codex.*remote-control' 2>/dev/null || true
pkill -f 'codex.*app-server' 2>/dev/null || true

  1. Wait for the iOS app to refresh again.

Observed:

  • The iOS app automatically changes back from Host B to Host A.
  • Again, only one host is visible.
  1. Additional observation:
  • If I click Revoke access on either Host A or Host B, the other host immediately loses access too.

What is the expected behavior?

ChatGPT iOS should show both active macOS Codex Desktop hosts, or provide a clear host switcher that lets me choose which host to control.

Expected:

  • Host A and Host B should appear as separate connected hosts.
  • Starting Codex on Host B should not silently replace Host A in the iOS host list.
  • Stopping Codex on Host B should not be required for Host A to reappear.
  • If iPhone controller authorization is intentionally account-level or workspace-level, that is fine, but host registration and host selection should still be per machine.
  • If the current mobile Remote Control preview only supports one visible macOS host at a time, the UI or documentation should make that limitation explicit.

The current behavior is risky because the iOS app silently changes the visible host depending on which desktop host is active. Since each host has different local projects, files, credentials, permissions, tools, and environment, the user may think they are controlling one Mac while the active host has silently changed to another Mac.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingiOSIssues related to the Codex iOS appremote

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions