Repository navigation
cmux NEXT Cloud: owner answer on the app-server link (cmux-platform#89 C1) - #27922
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-46401afe250043061ccd
…9 part C1) The app link's cloud.machine.connect answer carries vm_kind; only the exact value "owner" marks that connect as the signed-in caller's own machine. CloudLinkSession.ownerLink gives the connect's id while its link is up and owned, so an app-started chat and a folder-trust call on a Worker machine send vm_kind owner on the same rules as the legacy link, and a down, revoke, pause or newer connect ends the answer with its link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-46401afe250043061ccd
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 03:49 — with
GitHub Actions
Inactive
Contributor
|
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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: |
…MachineSession god file Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-46401afe250043061ccd
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 04:17 — with
GitHub Actions
Inactive
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 04:17 — with
GitHub Actions
Inactive
|
Found 7 test failures on Blacksmith runners: Failures
|
…failed connect Review at d4d6b2f: decoding vm_kind as String? made a number, a bool or an object fail the whole connect answer ("not a carrier"), which connected before the field existed; it now reads as absent. The tab's owner closure is AgentTabRemoteHost.ownerLink(appLink:link:), and tests cover it across a reconnect, a revoke, a dropped connection and a teammate's answer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-46401afe250043061ccd
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 05:17 — with
GitHub Actions
Inactive
teamleaderleo
temporarily deployed
to
ci-routing-agent
October 30, 2026 05:17 — with
GitHub Actions
Inactive
Collaborator
Author
|
Review (codex gpt-6-astra high, fast, read-only): SHIP at f173f78 No findings at this head. Earlier rounds: |
lawrencecchen
added a commit
that referenced
this pull request
Oct 30, 2026
…olver's Sendable run closure can call it (base compile red since #27922)
lawrencecchen
added a commit
that referenced
this pull request
Oct 30, 2026
…olver's Sendable run closure can call it (base compile red since #27922)
Contributor
|
Shipped in:
|
Contributor
|
Shipped in:
|
This was referenced Oct 30, 2026
Closed
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Part C1 of manaflow-ai/cmux-platform#89 (the app side of the caller-ownership answer). Leo, 2026-10-30, on building the app-server cloud path now instead of after the Oct 31 demo: "well why can't we just.... do our best now?"
What
On the Cloud app-server link, every app-started chat and every folder-trust call on a Worker machine was refused with
agent_session.host_unverified("the Cloud API did not say this machine is yours"). The cause:AgentTabs+Wiring.swiftbuilt the owner closure only from the legacy link (CloudMachineSession.link), which is nil on an app-server session, soAgentSessionAttachClient.ownerAnsweralways refused (cmux#27778 review, comment 6514080989).This PR reads the owner answer on the app link, with the same rules as the legacy link:
CloudConnectOpResolverdecodesvm_kindfrom the Cloud app server'scloud.machine.connectanswer. Only the exact valueowner(the classic attach answer's value) setsCloudLinkSocket.callerOwnsVM. An absent, empty, differently cased or padded value, or any other kind, does not.CloudLinkSession.ownerLinkis the current connect's id while that link is up (ready or attached) and its answer said owner, else nil. The attach client reads it before it connects and again as it sends, so the answer never outlives its link: a newer connect gets a new id, and adownorrevokedchange, a pause (end) or a second endpoint call ends it.CloudMachineSession.ownerLinkanswers from whichever link the session has (legacy or app link).AgentTabs+Wiringuses it.Until the server side sends
vm_kind(piece A: cmux#27940 on the Worker and cmux#27943 on the Cloud app server), nothing changes: the answer stays nil and the start is refused as before. Nothing here grants owner privileges without that exact answer.Risk
risk:high(an owner/auth decision). Ownership stays a server answer, so the client can't widen it: no answer, or any value other thanowner, still refuses. The legacy path keeps the same closure.Tests
CloudAppLinkOwnerAnswerTests(CmuxNextAppTests), committed red first (2671109) before the fix:ownervalue marks the connect as owned (absent, "", "Owner", " owner", "teammate", "team", "guest" do not);CloudMachineSessionanswers for its own link.Observed / Not run
scripts/cmux-next/prepush-gate.py: no new violations (app-size warning only, +8 App lines).Changelog
none (the app-server link is a Debug-only path today)
No capture: no UI change.
🤖 Generated with Claude Code
Agent session: agent session