Repository navigation
Cloud: copying the Mac's Claude/Codex login to a machine is DEV and dogfood only, card recovery included - #30183
Conversation
Copying the Mac's Claude/Codex login to a Cloud machine is DEV and dogfood only (Leo: "IN THE ACTUAL PRODUCTION APP IT MAY BE AGAINST TOS"). CloudStartChat.passesHarnessLogin(isDebugBuild:setting:) is now the one switch: the cmux.cloud.passHarnessLogin default wins when set (-bool NO makes a DEV build behave as production), else on in Debug, off in release. cloudCredentialTransferIsAvailable requires it too, so the turn card's recovery (Claude setup-token and the Codex broker), its handshake flag and the new-workspace setup are off in production builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by Shipped in:
|
|
Owned by an agent session · session |
…ed switch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
|
Review (subagent opus-5.5 medium): SHIP at b36a6f1 The switch is Follow-ups:
|
… points at the machine's sign-in (#30204) The NEXT nightly is dogfood (only the team uses NEXT Cloud), so the cmux.cloud.passHarnessLogin switch now defaults on in any DevTools.isEnabled build (a Debug compile or a NIGHTLY bundle), off in the shipping app; the setting still wins. With the switch off, the new-workspace setup says to sign in on the VM from its chat instead of "Provider credential setup is unavailable with this Cloud connection." (review follow-up on #30183). Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Leo: "IN THE ACTUAL PRODUCTION APP IT MAY BE AGAINST TOS" (copying the Mac's Claude/Codex login to a user's Cloud machine), and on 2026-11-01: "yes those are important".
What changed
CloudStartChat.passesHarnessLogin(isDebugBuild:setting:)is the one switch for every Mac-to-machine login transfer:setting ?? isDebugBuild. Thecmux.cloud.passHarnessLogindefault wins when set (true on, false off); unset, it is on in a Debug/DEV build and off in release.passesHarnessLoginHerereads it for this process. Before, a Debug build could not turn it off (isDebugBuild || optedIn).AgentTabStore.cloudCredentialTransferIsAvailablenow also requires the switch (isSignedIn && passesLogin). That one function feeds:cloudCredentialRecoveryAvailable(the webview card's "Transfer" offer),syncCloudCredentialTransferAvailability(the native recovery callback),CloudPresenter.recoverCredentials's guard (Claudesetup-tokenand the Codex broker),CredentialAvailability, Claude and Codex broker).cloud.startChat's pre-first-prompt pass reads the same switch.Production-config DEV build:
defaults write com.cmuxterm.app.debug.next cmux.cloud.passHarnessLogin -bool NO("cmux NEXT DEV"; a tagged DEV build uses its owncom.cmuxterm.app.debug.<tag>), then relaunch.defaults delete <bundle id> cmux.cloud.passHarnessLoginreturns to the build default. The NEXT nightly (com.cmuxterm.app.nightly.cmux-next) is a release build, so it is off unless set-bool YES.Risk
Production (release) builds stop offering the Mac transfer from the card, the start-chat pass and the new-workspace setup. With it off, the card falls back to the on-machine sign-in being built in parallel (acpmux + webview card); until that lands, a release build's card shows no transfer button. The wizard then shows its existing "Provider credential setup is unavailable with this Cloud connection." note (follow-up: wording). The switch is read when availability syncs (launch, sign-in/account change), so flipping the default takes effect on relaunch.
Swift stays thin: one pure static function plus its call sites, no new logic. Minimal overlap with #29962 (held), which edits other lines of CloudStartChat+Login.swift.
Agent session: agent session
🤖 Generated with Claude Code