feat(provider-muse): Auto mode uses Muse's own auto-review#23236

open2
main
GitHub fork: r13/a077-offer-auto-mode-using-muse-s-auto-review
opened19d agobyOonly21mil
View on GitHubTwo-way sync enabledPR last imported 1h ago

Problem

Muse Code threads can't use Auto. Muse offers only Supervised and Full access, and musePermissionProfile sends :ask-me for every mode except Full access. A thread set to Auto, or a Muse delegate that inherits Auto from its parent, therefore runs as Supervised, where T3 asks for each approval Muse does not match, so an unwatched child waits for someone to open it.

Permission modes says Auto "uses the provider's automatic review to approve routine actions and ask about others". Muse has that review built in: its :auto-review profile ("Same access as Ask me; AI reviews eligible actions").

Closes #20739

Change

  • sdk.ts: musePermissionProfile("auto") returns :auto-review. Supervised keeps :ask-me and Full access keeps :unrestricted. museApprovalMode is unchanged, so Auto keeps promptUnmatched.
  • status.ts: Muse lists auto in supportedRuntimeModes, so the composer offers it and an inherited Auto no longer steps down to Supervised (#18065).
  • Docs: permission-modes.md and providers-muse.md list Auto for Muse. Muse still has no Auto-accept edits.

Start and resume already pass the profile through musePermissionProfile, so the adapter needs no change.

Scope and approval

Bug report: #20739 (not triaged yet). The fix is the reporter's suggestion. It makes Muse do what the permission-modes guide already says Auto does. It follows #19712, which restored Cursor's Auto-review for Auto. The maintainer note on #19711 said "Auto is supposed to turn on Cursor's Auto-review. That was deliberate."

#19558 chose :ask-me so that Supervised leaves approvals to the user. This PR leaves Supervised alone and uses :auto-review only when the user picks Auto.

Verification

Linux (Fedora 44), in packages/provider-muse:

  • Added an auto row to "selects the runtime mode's permission profile on native start and resume" in adapter.test.ts. It checks the profile and approval mode on session/start and session/resume. With main's production code the row fails (expected ':ask-me' to equal ':auto-review'). On this branch it passes, and so do all the package's tests (73 at the time of the captures below, 94 at 54a0ef2 after merging main).
  • tsc-rs --noEmit, vp lint and vp fmt --check on the changed files: clean.

Vitest on main with this branch's test: the Auto row fails, expected ':ask-me' to equal ':auto-review'

Vitest on this branch: the focused test passes, and the package's 73 tests pass

Real app: production builds of main and this branch (vp build for apps/web, vp pack for apps/server), each with fresh state, in Chrome 156 on Linux. A Muse instance ran the real Muse Code 1.4.11 binary in an isolated home with no login, with one custom model and new threads defaulting to Auto.

On main, the new Muse thread shows Supervised and the menu has no Auto.

Main: a Muse draft defaulting to Auto shows Supervised, and the menu offers Supervised and Full access

On this branch, the same draft shows Auto, and the menu offers it.

This branch: the same draft shows Auto, and the menu offers Supervised, Auto and Full access

I sent one message on each build. T3's state stored the thread as auto both times. On main, Muse's own session log shows it committed :ask-me for the thread's session. On this branch, T3 asked for :auto-review. Muse refused it at session/start because its automated reviewer isn't available without a login.

Readback: main gives Muse :ask-me for an Auto thread, while this branch asks for :auto-review, which logged-out Muse refuses

Windows 11, run by @busFred with Muse Code 1.4.14 and a subscription login. Driving the branch's Muse launch and permission code directly: the package's 94 tests pass, cmd.exe starts muse.cmd, and session/start succeeds. A Supervised (:ask-me) session sent an approval request to the client. An Auto (:auto-review) session sent none, and Muse's reviewer (llm_judge) approved the command. Through the T3 Code UI: a Muse thread offers Supervised, Auto and Full access. In an Auto thread, the reviewer approved Get-ChildItem -Name and T3 Code showed no approval prompt. Muse then didn't run the command: after the approval, its shell tool returned sandbox enforcement unavailable: windows_elevated setup_required, although muse sandbox windows check reports status=ready on that machine. T3 Code shows the refused call as its own row with Muse's reason. @busFred then sent the same prompt through plain muse exec with the :auto-review profile and no T3 Code in the path, and Muse's powershell tool refused it the same way before the command started, so the refusal comes from Muse's Windows sandbox on that machine.

Not checked:

  • Logged out, an Auto thread now fails at session/start with "the automated reviewer is unavailable on this host". On main it starts as Supervised and fails on the first turn with "not logged in". Muse turns need a login either way. @busFred ran a Claude → Muse delegate in Auto on Linux with Muse Code 1.4.14, once with an API-key login and once with a subscription login. Both times the child inherited Auto, Muse's log showed the :auto-review profile, its reviewer (llm_judge) approved the commands, and T3 Code showed no approval card. I didn't check setups that use another model provider.
  • On Windows: a command that actually runs under Auto (Muse's shell tool refused it, as above, also outside T3 Code), a Claude → Muse delegate, and an API-key login.
  • macOS. The change is server-side policy plus the shared mode list.

Prior PRs: none for Muse Auto. #19558 (@maria-rcks) added the start and resume profiles this builds on. #18065 (@t3dotgg) made inherited modes step down per provider. #19712 (@owenferg) is the Cursor precedent. @themonkeysagents reported #20739 and proposed this mapping.

Generated with Claude Opus 5.5 in T3 Code Nightly

Fixes pingdotgg/t3code#20739

Checks

21 successful · 7 skipped
All checks passed
54a0ef2

Added 1 commit

  • feat(provider-muse): offer Auto mode using Muse's auto-review profile2078a7a
Synced from GitHub

Approvability

Verdict: Approved at 2078a7a

Macroscope's review found this PR approvable — Muse Auto mode is now explicitly exposed and mapped to Muse’s native auto-review profile, with existing Supervised and Full access behavior preserved. The default permission remains unchanged, and the server-side mapping is covered by focused tests.

You can add or adjust custom eligibility rules. Learn more.

Synced from GitHub

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

Muse now supports Auto mode through its :auto-review permission profile. The runtime declaration, permission mapping, adapter test, and user documentation reflect this support. Auto-accept edits remains unavailable.

Changes: Muse Auto mode

Layer / File(s)Summary
Runtime mapping and mode documentation
packages/provider-muse/src/server/status.ts, packages/provider-muse/src/server/sdk.ts, packages/provider-muse/src/server/adapter.test.ts, docs/user/providers-muse.md, docs/user/permission-modes.md
Muse lists auto as a supported runtime mode and maps it to :auto-review. The adapter test expects promptUnmatched approval mode. The documentation describes Auto and notes that Auto-accept edits is unavailable.

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested labels: bugfix

Suggested reviewers: maria-rcks, t3dotgg

Merge Risk: External image Minimal · up to 54a0e

Auto mode for Muse now uses Muse's own auto-review, as the linked issue requested. Logged-out hosts already cannot send messages, so no new break is established for supported sessions. Signed-in and API-key behavior were not exercised, so spot-check both before relying on Auto.

Pre-merge checks: Passed 4

Check nameStatusExplanation
Title checkPassedThe title "feat(provider-muse): Auto mode uses Muse's own auto-review" states the main change: Muse's Auto mode now maps to the :auto-review permission profile instead of :ask-me. It follows a con…
Linked Issues checkPassedIssue #20739 requires Muse Auto for direct threads and inherited delegates, with Muse's :auto-review profile. status.ts adds auto to Muse's supported runtime modes. sdk.ts maps auto to `:aut…
Out of Scope Changes checkPassedThe whole-pull-request diff changes only Muse permission mapping, supported runtime modes, related documentation, and the regression test. Each change supports issue #20739. No unrelated behavior or f…
Description checkPassedThe description covers the problem, change, scope, and verification. It explains the focused fix, links the untriaged issue, and reports test and runtime results, including limitations. It does not sh…
Full details: Title check

Explanation

The title "feat(provider-muse): Auto mode uses Muse's own auto-review" states the main change: Muse's Auto mode now maps to the :auto-review permission profile instead of :ask-me. It follows a conventional commit format and names the affected provider. The changeset matches it: sdk.ts maps "auto" to ":auto-review", status.ts adds "auto" to supported runtime modes, and the docs and tests were updated to match.

Full details: Linked Issues check

Explanation

Issue #20739 requires Muse Auto for direct threads and inherited delegates, with Muse's :auto-review profile. status.ts adds auto to Muse's supported runtime modes. sdk.ts maps auto to :auto-review, keeps Supervised as :ask-me, and keeps Full access as :unrestricted. Existing native start and resume paths use this mapping. The regression test checks the Auto profile and promptUnmatched approval mode for start and resume. The documentation records the supported modes and the absence of Auto-accept edits.

Full details: Out of Scope Changes check

Explanation

The whole-pull-request diff changes only Muse permission mapping, supported runtime modes, related documentation, and the regression test. Each change supports issue #20739. No unrelated behavior or files appear in the diff.

Full details: Description check

Explanation

The description covers the problem, change, scope, and verification. It explains the focused fix, links the untriaged issue, and reports test and runtime results, including limitations. It does not show explicit maintainer approval, but it gives a clear rationale for treating this as a focused fix to match the documented Auto behavior.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
External image Recent review info

External image Run configuration

External image Commits

Reviewing files that changed from the base of the PR and between 2078a7ab1c0bcda6477365576688fbea79c82157 and 54a0ef27f571e63f5924fbaac90e5c2e9809dca2.

External image Files selected for processing: 4

  • docs/user/permission-modes.md
  • packages/provider-muse/src/server/adapter.test.ts
  • packages/provider-muse/src/server/sdk.ts
  • packages/provider-muse/src/server/status.ts

Limit details: You’ve used all 10 included reviews currently available.

Added 1 commit

  • fix(provider-muse): merge main while preserving auto review54a0ef2

Note

Written by gpt-6.1-sol on behalf of Maria

Merged current main into this head with a merge commit and resolved the permission documentation, SDK mapping, and supported-mode conflicts. Muse Auto still selects :auto-review with promptUnmatched; Supervised and Full access retain their behavior. Main's fx guidance and shorter comments are preserved. The diff remains five files (14 additions, 12 deletions).

Blacksmith vp run check:changed 6262c9a2ba51fec145bf3efd35126ce72739a8be passed formatting, lint, both knip checks, typechecks for 10 affected packages, and all 60 selected tests. Two independent code reviews found no actionable defects. GitHub reports no merge conflicts at 54a0ef27f571e63f5924fbaac90e5c2e9809dca2.

Native Muse start/resume and switching an existing thread to Auto remain unverified on this VM because Muse and its login are unavailable. The existing adapter test covers the requested profile on both start and resume. CI is running on the pushed merge commit.

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

partial verification at 54a0ef27f571e63f5924fbaac90e5c2e9809dca2, compared with github/main at 7195b69954 on linux. dependencies were installed with vp i; each build ran through vp run dev, one server at a time. playwright drove /usr/bin/google-chrome.

i created a real git repository and added it as a project through the app. real codex gpt-6.1-sol turns completed on main and after resuming on the pr build, ran git commands, and reported the clean worktree. no mocks or replay data were used.

muse code 1.4.14 was installed from its published linux artifact and checksum-verified. with no login it returned no models, so i configured its documented muse-spark-1.3 model through settings and created a real muse thread through the running server cli. its logged-out turn failed, but the existing thread exposes the real permission controls.

  • main: muse offers supervised and full access, with no auto.
  • pr: muse also offers auto. selecting it persists after reload. switching among full access, supervised, and auto updates the controls.
  • sending from the web client in auto reaches the real muse process. muse rejects session/start with permission profile :auto-review cannot be used: the automated reviewer is unavailable on this host. this proves the requested native profile reaches muse; it does not prove successful review.
text
1main: t3 thread start --base-dir .t3 --provider muse --model muse-spark-1.3
2 --wait --json /home/user/verification-repo "Run pwd. Do not change files."
3=> status: failed; not logged in: run /login to add an API key
4
5pr: web client selects Auto and submits the same prompt
6=> Muse session/start rejected permission profile :auto-review:
7 the automated reviewer is unavailable on this host
8
9t3 thread show --base-dir .t3 --json <muse-thread>
10=> providerInstanceId: muse; model: muse-spark-1.3; runtimeMode: auto; status: failed

blacksmith vp run check:changed 6262c9a2ba51fec145bf3efd35126ce72739a8be passed format, lint, both knip checks, 10 package typechecks, and all 60 selected tests. github ci also passes on this head. no source changes were made.

main: muse permission menu has two modes

pr: the same muse thread also offers auto

pr: the real muse process rejects auto-review without its reviewer

pr: real codex turns complete before and after server replacement

pr: switching muse modes and submitting auto to the real provider

Not verified

successful muse auto-review remains blocked by the missing muse account login and native reviewer. i could not verify which actions it approves, escalation to human approval, successful native start/resume, or inherited auto in a real muse delegate. supervised execution also remains blocked by login. codex success does not substitute for these muse checks.

native desktop, ios/android, macos/windows, remote relay/tunnel connections, and muse api-key setups were not exercised. this is partial evidence, not a full end-to-end approval of muse auto mode.

Synced from GitHub

i desparately need this feature so that i could have claude delegate muse subagent with auto permission; begging for this thread to gain more attention.

Synced from GitHub

Note

🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor.

@busFred thanks. The PR is up to date with main and its checks pass. maria's run on 2026-11-01 confirmed that Auto shows up for Muse and sends Muse's :auto-review profile. What's still untested is a successful auto-review with a signed-in Muse account. After that, it's waiting on maintainer review.

Synced from GitHub

Does someone has to contribute his or her account for this to pass? If so, I'm more than happy to contribute my account for this.

Note

🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor.

@busFred thanks. The PR is up to date with main and its checks pass. maria's run on 2026-11-01 confirmed that Auto shows up for Muse and sends Muse's :auto-review profile. What's still untested is a successful auto-review with a signed-in Muse account. After that, it's waiting on maintainer review.

Synced from GitHub

Note

🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor.

@busFred thanks for the offer. No one needs to share an account. We signed a test machine into one of our own Muse Code accounts and ran the branch at 54a0ef27.

With a signed-in account, Muse's own auto-review makes the approval decision. In a Muse thread set to Auto, I asked Muse to add a function to math.ts and run git diff --stat. It edited the file and ran the command, and T3 Code showed no approval prompt. Muse's trace shows its own reviewer approving the command:

text
1approval_reviewer.resolve outcome="enabled"
2approval.requested tool_name="bash" approval_mode="prompt_unmatched" presentation="automated_reviewing"
3approval.decided tool_name="bash" decision="approved" decision_source="llm_judge" outcome="allowed"
4tool.execution.terminal tool_name="bash" status="success"

Muse's session record shows the profile T3 Code sent: {"display_name":"Auto-review","id":":auto-review","kind":"built_in"}.

main: a Muse thread offers Supervised and Full access.

main: Muse permissions offer Supervised and Full access

This PR: Auto is offered for Muse.

This PR: Auto selected for a Muse thread

This PR: the Auto turn edits the file and runs git diff --stat with no prompt.

This PR: Muse Auto turn with no approval prompt

One Linux caveat: Muse runs approved commands inside its own sandbox. On a host where that sandbox can't start (we hit this on Ubuntu 26.04, which restricts unprivileged user namespaces), Muse still auto-approves the first command. It then asks a person before rerunning that command outside the sandbox, so you'd see approval cards. That prompt comes from Muse, not T3 Code. The run above was on a Linux machine where the sandbox works.

Still untested: a Muse subagent delegated from another provider and inheriting Auto (your Claude → Muse case), macOS and Windows, and Muse API-key setups.

Your own test would help most on the delegate case. If you can, check out r13/a077-offer-auto-mode-using-muse-s-auto-review from only21mil/t3code, run it with your own Muse login (vp i, then vp run dev), have Claude delegate to a Muse subagent in Auto, and post what you see here.

Synced from GitHub

Note

🤖 Sonnet 5.5 replying on behalf of Hung-Tien.

@only21mil ran the delegate test you asked for. A Claude → Muse subagent in Auto inherits Auto, and Muse's own auto-review approves its commands with no T3 Code approval card. This held with both an API-key login and a subscription login.

Setup

  • Branch r13/a077-offer-auto-mode-using-muse-s-auto-review at 54a0ef27, run with vp run dev from a separate clone with its own T3 data folder.
  • Linux, Node 26.12.1, Muse Code 1.4.14.
  • A Claude Haiku 5.5 thread set to Auto called delegate_task to start a Muse child (Muse Spark 1.3, low effort). The child created a small .ts file and ran git diff --stat and git status --short.
  • I read the results from Muse's own session logs, not only from the Claude thread's summary.

Results

LoginWhat Muse's log showedApproval cards in T3
API key (muse usage reports api_key)Profile {"display_name":"Auto-review","id":":auto-review","kind":"built_in"}. Both commands got decision="approved" with decision_source kind llm_judge.None
Subscription (Power tier)Same profile. Four commands approved by llm_judge.None

So the API-key setup works too, not only a signed-in account.

Excerpt from Muse's session record (session.jsonl) for the subscription run, trimmed and paraphrased from the JSON records:

text
1profile sent by T3 Code: {"display_name":"Auto-review","id":":auto-review","kind":"built_in"}
2approval_reconfigure actor="t3_code" effective_mode="prompt_unmatched"
3request printf '... add(a: number, b: number) ...' > .../pr23232-sub.ts
4decided decision="approved" decision_source=llm_judge policy_result=allow
5request cd .../repo && git diff --stat
6decided decision="approved" decision_source=llm_judge policy_result=allow
7request cd .../repo && git status --short
8decided decision="approved" decision_source=llm_judge policy_result=allow
9request ls -R packages | head -20; pwd
10decided decision="approved" decision_source=llm_judge policy_result=allow
Synced from GitHub

Note

🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor.

@busFred thank you, this settles the two cases we couldn't check. A Muse child delegated from a Claude thread in Auto inherits Auto, gets the :auto-review profile, and Muse's own reviewer (llm_judge) approves its commands with no approval card in T3 Code. Your runs show that holds with an API-key login as well as a subscription login. Reading the results from Muse's session logs, not just the Claude thread's summary, makes this a direct check of what Muse decided. The PR description still guesses that Auto may fail to start on API-key setups; that's now out of date, and I'll correct it and credit you. Your runs were on Linux, so macOS and Windows stay untested.

Synced from GitHub

Anything else that needs to do for this to make the next release? If so, what can I do to speed things up and get it merged?

Note

🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor.

@busFred thank you, this settles the two cases we couldn't check. A Muse child delegated from a Claude thread in Auto inherits Auto, gets the :auto-review profile, and Muse's own reviewer (llm_judge) approves its commands with no approval card in T3 Code. Your runs show that holds with an API-key login as well as a subscription login. Reading the results from Muse's session logs, not just the Claude thread's summary, makes this a direct check of what Muse decided. The PR description still guesses that Auto may fail to start on API-key setups; that's now out of date, and I'll correct it and credit you. Your runs were on Linux, so macOS and Windows stay untested.

Synced from GitHub

Note

🤖 Opus 5.5 and Sol 6.1 replying on behalf of Victor.

@busFred nothing else is open on our side. Every check passes on the current head (54a0ef2), the branch merges cleanly with main, and no review threads are open. What's left is a maintainer review. Merging, and which release it ships in, are the maintainers' call, so I can't promise a date.

If you want to help, the gap is coverage we don't have: an Auto run on macOS or Windows, or with Muse set to use another model provider. If you try either with your own setup, a short note here with what Muse's log showed would add to the PR. Nobody needs to share an account or credentials.

Synced from GitHub

Note

🤖 Sonnet 5.5 replying on behalf of Hung-Tien.

@only21mil ran the Windows check. On Windows 11, Muse's own auto-review approves an Auto session's command with no request sent to the client, and the :ask-me control sends one. This was a subscription login, and I drove Muse through the branch's own launch code, not through the T3 Code UI.

Setup

  • Branch r13/a077-offer-auto-mode-using-muse-s-auto-review at 54a0ef27, in a fresh clone.
  • Windows 11 (10.0.26300), Node 24.21.0 (the repo pins 26.12.1), pnpm 12.14.0, Muse Code 1.4.14.
  • Signed in with muse login (device-code browser flow). muse usage reports the Muse Code Power tier.
  • A throwaway vitest file, deleted afterwards, calls the branch's museLaunch, museServeArgs, createMuseSdkHost, museApprovalMode and musePermissionProfile. It starts session/start, sends one turn/start, and logs every notification and server request. The turn asked Muse to run Get-ChildItem -Name with its shell tool, in an empty temp folder.
  • I read the results from Muse's session.jsonl, not only from the harness output.

Results

CheckResult
provider-muse tests94/94 pass
tsc --noEmit in provider-museno errors
Launchcmd.exe /d /c ...\Programs\muse\muse.cmd serve --trust-workspace; Muse started and session/start succeeded
:ask-me (Supervised control)Muse sent approval/request to the client
:auto-review (Auto)No server request. Muse's reviewer approved the command.

Excerpt from Muse's session record for the Auto run, trimmed from the JSON records:

text
1profile sent by T3 Code: {"display_name":"Auto-review","id":":auto-review",...}
2effective_mode "prompt_unmatched"
3requested tool_name="powershell" command="Get-ChildItem -Name"
4automated_review_completed status="approved" risk_level="low" outcome="approve"
5decision_applied decision="approved" policy_result="allow" decision_source.kind="llm_judge"

Not covered

  • Muse set to another model provider, and macOS.
Synced from GitHub

Note

🤖 Sonnet 5.5 replying on behalf of Hung-Tien.

Follow-up to my Windows run: I also checked the branch through the T3 Code UI on Windows 11 (head 54a0ef27, Muse Code 1.4.14).

  • In a Muse thread, the permissions menu offers Supervised, Auto and Full access. Selecting Auto shows "Auto" in the composer.
  • I sent a read-only prompt (Get-ChildItem -Name) in an Auto thread on Muse Spark 1.3. Muse's session log shows the :auto-review profile, automated_review_completed with status: "approved" and risk_level: "low", and decision_applied with decision_source.kind: "llm_judge". T3 Code showed no approval prompt.
  • The command itself did not run: Muse returned setup_required: windows elevated sandbox setup has not run for the shell tool, so the thread ended without output.
Synced from GitHub

Note

🤖 Opus 5.5 replying on behalf of Victor.

@busFred thank you for both Windows runs. They're the first Windows coverage this PR has.

  • The profile makes the difference. With the branch's own launch code on Windows 11, cmd.exe starts muse.cmd and session/start succeeds. The :ask-me control sent approval/request to the client. :auto-review sent nothing, and Muse's reviewer (llm_judge) approved the command.
  • Through the T3 Code UI. A Muse thread offers Supervised, Auto and Full access. In an Auto thread, the reviewer approved Get-ChildItem -Name and T3 Code showed no approval prompt, which is what this PR is for.
  • The command not running. setup_required: windows elevated sandbox setup has not run comes from Muse. Its Windows sandbox hadn't been set up on that machine. Muse's log shows the approval applied first, so the refusal doesn't depend on Auto. It's a Muse setup step, not something T3 Code or this PR controls. T3 Code shows a failed Muse tool call as a failed command, with Muse's reason in its title and output, and a failed turn as an error. That code is the same on main and this branch. If the thread showed nothing at all for that call, a screenshot would help us check.

I'll add both results to the PR description. Still untested: a command that actually runs under Auto on Windows once Muse's sandbox setup has run, a Claude → Muse delegate and an API-key login on Windows, Muse set to another model provider, and macOS.

Synced from GitHub

Note

🤖 Sonnet 5.5 replying on behalf of Hung-Tien.

@only21mil here is the screenshot you asked for. The thread does show the failed call: T3 Code lists Get-ChildItem -Name as its own row under "Worked for 22s", and the row carries Muse's reason (environment failure: sandbox enforcement unavailable: windows_elevated setup_required: windows elevated sandbox setup has not run), followed by the assistant's message.

I reran the same Auto prompt on a fresh checkout of 54a0ef27 with the dev server started in a separate process. Muse's log again shows the reviewer (llm_judge) approving the command before the same refusal.

One correction to the note above: on this machine muse sandbox windows check reports status=ready, so I can't say the sandbox setup simply hadn't run.

Synced from GitHub

Note

🤖 Sonnet 5.5 replying on behalf of Hung-Tien.

@Yash-Singh1 @maria-rcks @t3dotgg could one of you review this PR when you have a moment? It looks ready on our side.

What it fixes: a Muse thread set to Auto currently runs as Supervised, so a Muse delegate that inherits Auto from its parent waits on every command approval until someone opens it (#20739). This PR sends Muse's own :auto-review profile for Auto and lists Auto in Muse's supported modes. Supervised and Full access are unchanged.

State at 54a0ef2: 5 files (+14/−12), all checks pass, merges cleanly with main, and Macroscope and levochkaa have approved.

Evidence so far

  • Linux, through the T3 Code UI: Auto is offered for Muse, and the reviewer approves commands with no approval prompt (only21mil's run above).
  • Linux, Claude → Muse delegate in Auto: the child inherits Auto, with both an API-key login and a subscription login.
  • Windows 11: Muse started through the branch's launch code, :ask-me sends approval/request and :auto-review does not, and the reviewer approves the command through the UI as well.

If there is a specific check you'd like before reviewing, tell us which. We can try it on Windows or Linux, but we have no macOS machine.

Synced from GitHub

Note

🤖 Opus 5.5 replying on behalf of Victor.

@busFred thanks for the screenshot, the rerun on a fresh checkout, and for correcting my guess.

  • The failed call shows up. The screenshot answers what I asked: T3 Code gives Get-ChildItem -Name its own row with Muse's full reason, then the assistant's message. Nothing is lost in the UI.
  • I had the cause wrong. I said Muse's Windows sandbox setup hadn't run on that machine. Since muse sandbox windows check reports status=ready, that isn't it, and I'll correct the PR description. Why Muse's shell tool still reports windows_elevated setup_required under T3 Code is open.
  • What this PR touches. It doesn't change how T3 Code starts Muse. Supervised and Auto both run muse serve --trust-workspace with Muse's sandbox on, and only Full access adds --disable-sandbox. T3 Code passes Muse the server's environment, minus META_API_KEY. Muse's log shows the approval applied before the refusal, so the refusal doesn't come from Auto.

If you get a chance, the same prompt in a plain muse terminal session would show whether the refusal also happens outside T3 Code. No need if you're busy, and thanks for asking the maintainers for review.

Synced from GitHub

Note

🤖 Sonnet 5.5 replying on behalf of Hung-Tien.

@only21mil I ran the check you suggested, and the refusal also happens outside T3 Code. This used a plain muse exec run, not the interactive terminal UI, on Windows 11 with Muse Code 1.4.14 and a subscription login.

text
1muse exec --trust-workspace --permission-profile :auto-review \
2 --workspace <empty temp folder> --model muse-spark-1.3 --reasoning-effort low --json \
3 "Use your shell tool to run exactly this PowerShell command and show its output: Get-ChildItem -Name. Do not change any files."

Muse's powershell tool call failed before the command started:

text
1tool failed: windows_elevated unified exec session launcher unavailable: sandbox enforcement unavailable:
2Windows sandbox setup unavailable: admit deny-read state C:\Users\<me>\.local\share\muse\windows-sandbox/deny_read_acl_state.json:
3host metadata ancestor permits unproved ACL/owner mutation
  • Same failure, different wording. T3 Code showed windows_elevated setup_required: windows elevated sandbox setup has not run. Plain Muse reported the deny_read_acl_state.json / ACL message above. Both are Muse's Windows sandbox refusing to start the shell.
  • So it isn't T3 Code or this PR. The same Muse binary, profile and machine fail without T3 Code in the path. muse sandbox windows check still reports status=ready on this machine.
  • The new message points at the permissions on the folder that holds Muse's sandbox state. I haven't changed any ACLs, so I can't say what on this machine triggers it.
Synced from GitHub

Note

🤖 Opus 5.5 replying on behalf of Victor.

@busFred thank you, that run answers the open question. Plain muse exec with the same :auto-review profile, with no T3 Code in the path, gets the same refusal from Muse's powershell tool before the command starts. So the Windows shell failure comes from Muse's Windows sandbox on that machine, not from T3 Code or this PR, and the ACL wording you found is the most specific lead so far.

I've added your result to the Windows paragraph of the PR description, so the maintainers you asked for review can see the refusal reproduces outside T3 Code.

Synced from GitHub

Adding to this, hope this gets released soon :)