Repository navigation
cmux NEXT: the app pushes an MDM-forced sessions.allowFullAccess, and the mode menu says Managed by your organization (#23322 a2) - #25540
Conversation
|
Owned by an agent session · session |
|
Bead |
|
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)
Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; NEW: green on the base a147567; do not merge until green; see lane-rules Gallery before/after for |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
…mp is no longer committed (#23915) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Found 165 test failures on Blacksmith runners: Failures
...and 155 more test failures. View all on Blacksmith: run 40460239245, run 40460239302
|
|
|
|
Review (codex gpt-6-astra xhigh, next-review): SHIP at 927f794 No blocking findings. Static review only; tests were not run. |
|
Review (codex gpt-6-astra xhigh, next-review): BLOCK at 6099fd0
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… full access (review 110, red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o manage (review 110) The managed mark bounds only the chats this Mac's daemon runs. A peer's chat comes over the local connection, so the connection origin does not say it is a peer's; its summary or its listed row does (the attach's detail names no peer). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
What (part a2 of #23322)
This is part a2 of #23322 (sessions.allowFullAccess under MDM), split out from that PR's restructure. It covers the app's push and the mode menu. #23322 (a1, landed) is the daemon's bound. #25538 (a3, approve-all), #25539 (b, agents already running in full access) and #25549 (a4, probes and the pool) follow a1. Each part lands on its own: this one only adds fields that an older daemon ignores, and reads a field an older daemon never sends.
It builds the decision on #23322, quoted word for word:
The app tells acpmux what MDM forces (
CmuxNextSettings/ChatSettings.swift). The_acpmux/chat_settingspush adds two fields:allowFullAccessManaged: whether MDM or the team policy forces the key.allowFullAccess: the forced value. Anything buttruecounts asfalse, and the field is null when nothing forces it.settings-schema.sources.sha256is regenerated for the changed source.The pane (
webviews/.../startMode.ts,ComposerPickers.tsx,direct.ts):_acpmux/start_modeanswer:"fullAccess": "managed", which a1's daemon sends. An answer without the field (MDM unset, an older daemon) clears the flag.picker.fullAccessManaged, in all locales.start_mode_changed, a pick) throughuseFullAccessProbe. That is one ask per push, not a timer or a loop. Its microtask checks aliveflag, which the effect's cleanup clears.setStartModeSource(a reconnect, another daemon) takes a new ticket and clears the mark before it tells the pane, so a late answer from the old connection changes nothing. A daemon that predates_acpmux/start_modeanswers method-not-found (-32601);direct.tsthen clears the mark, instead of keeping what the previous daemon said. Any other refusal (invalid params, an unknown harness) comes from a daemon that may still manage full access, so the mark stays (review 34).Tests
webviews/test/access-chip-refused-mode.test.tsx, four new tests:access-chip-refused-modeandstart-mode-host-refusal10/10, typecheck clean with no warnings).agent-pane-start-mode-chiptocomposer-row-layout, all pass).-32602refusal. Red at 985fee5 (run 40402638690: the daemon-refusal case fails, the chat never asked again; 14 pass). Green at 213d6e0 (run 40402736097: 15/15; typecheck run 40402736434 clean; run 40402736204: the same ten nearby suites all pass).access-chip-refused-mode,agent-options-menuandstart-mode-host-refusal24/24; typecheck run 40404705142 clean; twelve nearby suites pass).onThisMacnow also needs no peer on the chat's summary or its listed row. The review 37 test gains two cases (local origin with a summary's peer, and with only a listed row's peer). Red at 53a2592 (run 40459751233: that test fails, 14 pass). Green at d73eee5 (run 40459962162: 24/24; typecheck run 40459962521 clean;vp fmt --checkrun 40459962140 clean). e7266e5 before it only formats the test file (vp fmt), which the fast gates' web lint asked for.CmuxNextAppTestsChatSettingsPushFullAccessTests:truegoes out off;cmux-ci run ... package-test-lane.sh suite Packages/macOS/CmuxNext ChatSettingsPushFullAccessTests): red at be3e1eb (step 3365633fa314f4f4795353cc: 4 tests, 12 issues, the push carries neither key), green at 2476da5 (step 429ae48431421ed127d44396: 4/4).Visual evidence
The changed state is the mode menu's full-access row, disabled and captioned "Managed by your organization". It is the new gallery variant
permission-managed; the base menu is the unchangedpermissionvariant. The gallery visual evidence run on this PR shows both states before and after.Gallery: agent-pane.composer-pickers/permission-managed, agent-pane.composer-pickers/permission
Review: a fresh Codex gpt-6-astra xhigh review said SHIP at d73eee5.
No capture: the only native file is
ChatSettings.swift, which adds two fields to the settings push and draws nothing.Agent session: agent session
🤖 Generated with Claude Code