claude-code - 💡(How to fix) Fix [BUG] `/remote-control` fails in desktop-app-embedded Claude Code with "no org UUID", and there is no user-facing remediation

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…

Running /remote-control inside Claude Code embedded in the macOS desktop app fails with Remote Control failed to connect: /login. The debug log shows the bridge is bailing because no organization UUID is present. The user cannot fix this themselves — /login is disabled in this environment, and restarting the desktop app does not repopulate oauthAccount in ~/.claude.json.

Error Message

  1. Improve the user-facing error: "Remote Control failed to connect: /login" should not surface an internal reason label that looks like a command the user can run, especially when that command is disabled in this environment.

Error Messages/Logs

Root Cause

Summary

Running /remote-control inside Claude Code embedded in the macOS desktop app fails with Remote Control failed to connect: /login. The debug log shows the bridge is bailing because no organization UUID is present. The user cannot fix this themselves — /login is disabled in this environment, and restarting the desktop app does not repopulate oauthAccount in ~/.claude.json.

Fix Action

Workaround

Install the standalone Claude Code CLI (outside the desktop app), run /login there to populate ~/.claude.json → oauthAccount, then return to the desktop app.


Anything you want me to tighten before you send it?

Code Example

Remote Control failed to connect: /login

---

/login
<local-command-stdout>/login isn't available in this environment.</local-command-stdout>

---

2026-05-26T21:17:37.918Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T21:17:37.918Z [DEBUG] [bridge:sdk] State change: failed — /login
...
2026-05-26T22:51:46.926Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T22:51:46.926Z [DEBUG] [bridge:sdk] State change: failed — /login

---

keys: ['cachedExperimentFeatures','cachedExtraUsageDisabledReason',
       'cachedGrowthBookFeatures','firstStartTime','migrationVersion',
       'opusProMigrationComplete','projects','seenNotifications',
       'skillUsage','sonnet1m45MigrationComplete',
       'unpinOpus47LaunchEffort','userID']
oauthAccount: None

---

2026-05-26T21:17:37.918Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T21:17:37.918Z [DEBUG] [bridge:sdk] State change: failed — /login
...
2026-05-26T22:51:46.926Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T22:51:46.926Z [DEBUG] [bridge:sdk] State change: failed — /login

The second occurrence is from after a full quit-and-relaunch of the desktop app.

### Root cause (from inspection)
`~/.claude.json` is missing `oauthAccount`:

keys: ['cachedExperimentFeatures','cachedExtraUsageDisabledReason',
       'cachedGrowthBookFeatures','firstStartTime','migrationVersion',
       'opusProMigrationComplete','projects','seenNotifications',
       'skillUsage','sonnet1m45MigrationComplete',
       'unpinOpus47LaunchEffort','userID']
oauthAccount: None

So the embedded Claude Code has a `userID` but no OAuth grant carrying an `organization_uuid`. The Remote Control bridge requires that org UUID to enroll the device, so it short-circuits with `Skipping: no org UUID`.

The host app *advertises* the capability to provide it (`CLAUDE_CODE_SDK_HAS_HOST_AUTH_REFRESH=1`), but the org UUID never actually arrives in the embedded Claude Code's state — neither at startup nor after a quit-and-relaunch.
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

Got fresh evidence — identical failure at 22:51:46 (post-restart) to the original at 21:17:37. Reliably reproducible. Here's the bug report — copy/paste:


Bug: /remote-control fails in desktop-app-embedded Claude Code with "no org UUID", and there is no user-facing remediation

Summary

Running /remote-control inside Claude Code embedded in the macOS desktop app fails with Remote Control failed to connect: /login. The debug log shows the bridge is bailing because no organization UUID is present. The user cannot fix this themselves — /login is disabled in this environment, and restarting the desktop app does not repopulate oauthAccount in ~/.claude.json.

Environment

  • macOS Claude desktop app: 1.8555.2
  • Claude Code (embedded): 2.1.149 (build suffix seen in attribution: 2.1.149.59d and 2.1.149.8c8)
  • cc_entrypoint=claude-desktop
  • Relevant env vars present:
    • CLAUDE_CODE_SDK_HAS_OAUTH_REFRESH=1
    • CLAUDE_CODE_SDK_HAS_HOST_AUTH_REFRESH=1
    • ANTHROPIC_API_KEY= (empty)
    • ANTHROPIC_BASE_URL=https://api.anthropic.com
  • User state: signed in to Claude on the desktop app (chat history, projects, Claude Dispatch all work normally); mobile app signed in to the same account, Code tab shows "No sessions found" with prompt to "Run /remote-control from Claude Code".

Reproducer

  1. Open Claude desktop app, sign in as a Pro/Max user, open Claude Code.
  2. Run /remote-control at the prompt.

Expected

Bridge enrolls the device, pairs with the mobile app's Code tab, and the session appears under "No sessions found".

Actual

The prompt returns:

Remote Control failed to connect: /login

The trailing /login is the failure-state label from [bridge:sdk], not a runnable command. /login itself is disabled in this environment:

/login
<local-command-stdout>/login isn't available in this environment.</local-command-stdout>

Debug log (~/.claude/debug/<session>.txt) — two attempts, same pattern

2026-05-26T21:17:37.918Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T21:17:37.918Z [DEBUG] [bridge:sdk] State change: failed — /login
...
2026-05-26T22:51:46.926Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T22:51:46.926Z [DEBUG] [bridge:sdk] State change: failed — /login

The second occurrence is from after a full quit-and-relaunch of the desktop app.

Root cause (from inspection)

~/.claude.json is missing oauthAccount:

keys: ['cachedExperimentFeatures','cachedExtraUsageDisabledReason',
       'cachedGrowthBookFeatures','firstStartTime','migrationVersion',
       'opusProMigrationComplete','projects','seenNotifications',
       'skillUsage','sonnet1m45MigrationComplete',
       'unpinOpus47LaunchEffort','userID']
oauthAccount: None

So the embedded Claude Code has a userID but no OAuth grant carrying an organization_uuid. The Remote Control bridge requires that org UUID to enroll the device, so it short-circuits with Skipping: no org UUID.

The host app advertises the capability to provide it (CLAUDE_CODE_SDK_HAS_HOST_AUTH_REFRESH=1), but the org UUID never actually arrives in the embedded Claude Code's state — neither at startup nor after a quit-and-relaunch.

Why the user can't fix this

  • /login would be the obvious remediation, but it's blocked in claude-desktop entrypoint (/login isn't available in this environment).
  • Restarting the desktop app does not trigger the host → embedded OAuth/org handoff (oauthAccount stays None and the next /remote-control produces the same Skipping: no org UUID line).
  • There is no Settings UI in the desktop app to sign Claude Code in separately, or to manually pick an org.

Suggested fixes

  1. On desktop-app launch (or on entry into Claude Code), have the host actually forward the signed-in account's organization_uuid into the embedded Claude Code's state (oauthAccount) instead of just setting the HAS_HOST_AUTH_REFRESH=1 flag.
  2. Alternatively, make the bridge proactively request the org UUID from the host via the host-auth-refresh channel when it encounters no org UUID, rather than failing silently.
  3. Improve the user-facing error: "Remote Control failed to connect: /login" should not surface an internal reason label that looks like a command the user can run, especially when that command is disabled in this environment.

Workaround

Install the standalone Claude Code CLI (outside the desktop app), run /login there to populate ~/.claude.json → oauthAccount, then return to the desktop app.


Anything you want me to tighten before you send it?

What Should Happen?

I should be able to connect to a remote-control session on my phone.

Error Messages/Logs

2026-05-26T21:17:37.918Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T21:17:37.918Z [DEBUG] [bridge:sdk] State change: failed — /login
...
2026-05-26T22:51:46.926Z [DEBUG] [bridge:repl] Skipping: no org UUID
2026-05-26T22:51:46.926Z [DEBUG] [bridge:sdk] State change: failed — /login

The second occurrence is from after a full quit-and-relaunch of the desktop app.

### Root cause (from inspection)
`~/.claude.json` is missing `oauthAccount`:

keys: ['cachedExperimentFeatures','cachedExtraUsageDisabledReason',
       'cachedGrowthBookFeatures','firstStartTime','migrationVersion',
       'opusProMigrationComplete','projects','seenNotifications',
       'skillUsage','sonnet1m45MigrationComplete',
       'unpinOpus47LaunchEffort','userID']
oauthAccount: None

So the embedded Claude Code has a `userID` but no OAuth grant carrying an `organization_uuid`. The Remote Control bridge requires that org UUID to enroll the device, so it short-circuits with `Skipping: no org UUID`.

The host app *advertises* the capability to provide it (`CLAUDE_CODE_SDK_HAS_HOST_AUTH_REFRESH=1`), but the org UUID never actually arrives in the embedded Claude Code's state — neither at startup nor after a quit-and-relaunch.

Steps to Reproduce

Reproducer

  1. Open Claude desktop app, sign in as a Pro/Max user, open Claude Code.
  2. Run /remote-control at the prompt.

Claude Model

None

Is this a regression?

No, this never worked

Last Working Version

No response

Claude Code Version

Claude Code (embedded): 2.1.149 (build suffix seen in attribution: 2.1.149.59d and 2.1.149.8c8)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

No response

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING