Cloud: an agent's start-session/start-chat in a chat asks nobody by default

Merged
TE
2d ago
+76-54

Leo, on the Start / Not now card an agent's cmux cloud start-chat raised in its chat ("The agent asks to create Cloud machine chat-e42f4285 and start a claude session there. [Start] [Not now]"): "1. looks like stuff 2. shouldn't have needed to ask me". Earlier, on the same topic: "*@cmux.com can jsut make whatever freestyle vms they want".

What changes

  • cloud.agentsStartWithoutAsking is now on by default (CloudAgentStartSetting.defaultValue = true). An agent's cmux cloud start-session / start-chat run from a chat creates or takes the machine and starts the session the way a run from a terminal does: no card, no cloud.start_pending dialog, and --wait waits for the reply. The only gate left is the Cloud plan/entitlement check the backend already does on create (its refusal comes back as the run's error).
  • Why the setting stays: removing the card outright would break a documented guarantee. docs/mdm/managed-preferences.md documents cloud.agentsStartWithoutAsking as a managed preference, so an admin can require the ask. With the default flipped, a person or an MDM profile can still turn it off and get the card back. No new setting is added.
  • cmux cloud start-chat no longer appends "From an agent chat the app asks the person first…" to every app refusal from an agent chat. That hint is now wrong by default. When asking is turned back on, the app's own refusal (Not now, or no answer) already names the command to run again.
  • Docs: cmux cloud start-chat --help, the cloudStartSession action description, skills/cmux-cloud-vm/SKILL.md and references/commands.md now describe the no-ask default.
  • The settings exports (MDM schema and docs, settings schema, docs settings reference) now carry the new default.

The card

The card is no longer shown on this path, so there is no styling to fix here. The same component still renders other asks: AgentPaneToolCard through AgentToolCards (CmuxNextAgentPane). Move to Cloud's ask (CloudMoveAsks) uses it, and so does this path when the setting is turned off (CloudStartSessionAsks). This PR leaves its look alone.

Follow-ups, not in this PR:

  • The Chief's skill Native/OptChat/optchat-chief/skills/chief-cloud-machines/SKILL.md still says "The app first asks the user with a card". Fixing it changes Chief-area code, so it goes in its own PR.
  • newCloudMachine (cmux setup cloud-machine) is a separate path. This PR doesn't touch it.
  • The setting's help text still says "Only you can turn this on". It should say "off", but changing it means updating the localized string catalog (21 locales), so it gets its own PR.

Test

CloudAskDialogsTests.theDelegationIsThePersonsAndOnByDefault fails on base. On base, an empty settings root means agents ask. Here, an empty root means they don't: the descriptor's default is true, false still turns it off, and the key is still user-only. CloudStartSessionTests' two ask-path tests now turn the setting off first (askingFirst), since the card is opt-in. Fleet runs at 5eac68af: the CloudAskDialogsTests, CloudStartSessionAsksTests and CloudStartSessionTests suites pass (package-test-lane), and cargo test -p cmux-tui cloud_start_chat passes.

Exports: only this key's default is flipped in docs/mdm, schemas/settings and the docs settings reference. The fleet regeneration also showed unrelated drift already on base (agentPane.composerRing, tunables), which I left for base-autofix. schemas/defaults/cmux-next.json is bot-only (#21946), so it is left to the bot.

Risk: default change on one Cloud setting. An agent in a chat can now create a Cloud machine (billed on the person's plan) without a click. That is Leo's stated intent.

🤖 Generated with Claude Code

Agent session: agent session


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

An agent's cmux cloud start-session or start-chat run from a chat now creates or takes the machine and starts the session without a Start / Not now card, matching how a terminal run behaves. The Cloud plan's entitlement check still applies; its refusal comes back as the run's error.

  • The cloud.agentsStartWithoutAsking setting stays, so a person or an MDM profile can turn it off to restore the card.
  • cmux cloud start-chat refusals no longer claim the app asks first, since that's no longer the default.
  • Help text, skill docs, and the MDM and settings schemas now carry the new default.