Cloud composer: a reservation names the team the machine list reads
Summary
On the app server link, the first Cloud send from the composer failed with "No Cloud machine has the id vm_…". The machine was reserved in one team and looked up in another:
- The composer's
cloud.reserveand the start-chat plan's reservation bind named the active Stack team (accessTokenTeam(requested: nil)). - The app's machine list (
cloud.machine.listover the credential relay) and its creates use the install token's team claim.
For an account whose active team is not the install token's team, the reserved machine landed in the other team's CloudDO store. The list never showed it, and CloudMove.machine refused the send. It happened twice on the dev start-chat capture on 2026-11-05: vm_1b4bb0bd5d29ae672da7 and vm_e8cfd034d05f3fb17284. In both runs cloud.machines read [], and link.log was empty because no dial ever ran.
The fix is CloudService.reservationTeam(), which both the reserve and the plan's bind now use:
- On the app server link it gives the install token's team, the same team the list and creates use.
- On the classic link it keeps the active team.
Testing
cmux-ci run --class light --script scripts/ci/run-swift-testing-suites.sh --env CMUX_SWIFT_TEST_SUITES=CloudStartChatMachineTests on the fleet at 1b2f1a4acf7b: 11 of 11 passed, including the new aReservationNamesTheTeamTheAppServerListReads.
Observed / Not run
- Observed:
- The suite above passed.
- The failing captures on the base: hq runs 41942646684 (vm_1b4bb0bd5d29ae672da7) and 41953363203 (vm_e8cfd034d05f3fb17284).
- Not run yet: the dev start-chat capture on this head. That reply readback is the end-to-end proof and will be posted here.
- The new test can't fail on the base, because
reservationTeamdid not exist there. The base's red is the two captures above.
Changelog
- Fixed: A new Cloud chat started from the composer no longer fails with "No Cloud machine has the id …" when the signed-in team differs from the app's own team.
Agent session: agent session
🤖 Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes Cloud composer sends failing with "No Cloud machine has the id vm_…" when the account's active team differs from the install token's team. The composer's reservation and the start-chat plan's bind now both name the team the machine list reads, so a reserved machine always appears in the list.
Details
- Adds
CloudService.reservationTeam(): the install token's team on the app server link, the active team on the classic link. - Adds a test covering the app server, personal, and classic link cases.
- Drops a stray
prompt_delivery.rshunk so the PR touches only the Cloud composer reservation path.