Repository navigation
fix(next): prepare Cloud remote approvals before first chat - #31904
Conversation
|
Found 2 test failures on Blacksmith runners: Failures
|
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) web and size checks: green Shipped in:
|
|
Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base 947bb5e to this head): SHIP at dd44420 [P2] [follow-up] Packages/macOS/CmuxNext/Sources/CmuxNextApp/Cloud/CloudService+PersonKey.swift:68 - The classic |
|
Review (next-review patch-id; carried): SHIP at 22ce86e The independent SHIP at dd44420 carries to this head: the PR's own change ( |
…approvals-prepare
|
The test file |
) (#31979) The test target stopped building at a799d97: CloudApprovalsPrepareTests.swift uses UUID with no Foundation import (tip Swift suite run 41406584872, Build package and tests: cannot find 'UUID' in scope at :18, :34, :50). Agent-Session: https://cmux.com/deeplink/agent?id=aid-9124da39adbff74677d9 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Brief 13 follow-up to this merged first-Cloud-turn approval work: source review found a client-side owner boundary after key preparation. I opened draft cmux #34105: revoke cached key on |
|
Swift logic follow-up (tip watcher swift-logic row, STATUS 13027 "SWIFT LOGIC CULPRITS"; lead order). This PR raised
plans/cmux-next/layer-ownership.md says Rust owns every state, list and rule and Swift is the platform shell. Please move the new logic of this PR in a follow-up: to Rust (the crate that owns the area; the owner lists in STATUS 12147-12165 name the target per area), or at least out of the app into its package. If a declaration above is platform code (AppKit, Core Animation, OS calls, strings, tokens, DEBUG tooling), reply here and the table gets a PLATFORM row with your reason instead. The swift-logic row is a report, not a gate: nothing blocks on this comment. |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
A fresh Cloud machine now prepares the app's person key before the first chat starts, so a tool permission Allow can be relayed immediately instead of being refused until the user finds Restart with approvals.
Leo asked for Cloud to work this way: "I want us to be able to do this too." Before this change, a fresh Cloud chat's first start had no prepare callback. The keyed agent-session handshake therefore fell through to an unkeyed start, and the daemon rejected the first relayed Allow.
The Cloud path now mirrors SSH: the remote daemon's safe-to-restart decision triggers one serialized keyed restart per machine, while older daemons use a bounded status read and restart only when idle. Busy machines, shared/team machines, and keyed-start failures quietly fall back to the existing unkeyed start and its normal restart notice.
The person key still travels only through the existing keyed-start request body stream to the provider's stdin. It is never placed in the image, cloud-init, environment, argv, or a file. Team machines are not retried and do not surface a new error card.
Tests cover an idle keyed start, a busy machine with no restart, and a not-single-owner failure that returns the unkeyed fallback. The app compile is green at the merged head. The Swift test compile also exposed a missing Foundation import in the new test fixture; follow-up PR #31976 carries that one-line fix.
agent-identity footer --repo manaflow-ai/cmux