From 2078a7ab1c0bcda6477365576688fbea79c82157 Mon Sep 17 00:00:00 2001 From: Victor Vogel Date: Wed, 21 Oct 2026 19:23:22 -0500 Subject: [PATCH 1/3] feat(provider-muse): offer Auto mode using Muse's auto-review profile Auto now selects Muse's `:auto-review` permission profile on session start and resume, and Muse offers Auto in the mode picker. Supervised keeps `:ask-me`; Full access keeps `:unrestricted`. Closes #20739 Co-Authored-By: Claude Opus 5.5 --- docs/user/permission-modes.md | 9 ++++----- docs/user/providers-muse.md | 9 +++++---- packages/provider-muse/src/server/adapter.test.ts | 1 + packages/provider-muse/src/server/sdk.ts | 5 +++-- packages/provider-muse/src/server/status.ts | 7 ++++--- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/user/permission-modes.md b/docs/user/permission-modes.md index 150c857db9440..e30f56e9d15c5 100644 --- a/docs/user/permission-modes.md +++ b/docs/user/permission-modes.md @@ -21,12 +21,11 @@ not prevent the agent from asking questions about the task. ## Provider differences Providers enforce permissions differently. Some read-only actions can proceed in **Supervised**. -**Auto** uses automatic review on Codex, Claude, Cursor, and Grok; providers without an equivalent, -including OpenCode and Antigravity, fall back to asking. On Grok, commands its review blocks come -to you for approval. +**Auto** uses automatic review on Codex, Claude, Cursor, Grok, and Muse Code; providers without an +equivalent, including OpenCode and Antigravity, fall back to asking. On Grok, commands its review +blocks come to you for approval. -Muse Code offers only **Supervised** and **Full access**. A Muse thread already set to another mode -runs in **Supervised**. +Muse Code offers no **Auto-accept edits**. A Muse thread already set to it runs in **Supervised**. Grok offers no **Auto-accept edits**. A Grok thread already set to it runs in **Supervised**. Grok file-change approvals offer **Allow all edits this session**. Its command approvals have no diff --git a/docs/user/providers-muse.md b/docs/user/providers-muse.md index 9013e97dfa97b..cf94aa12ad997 100644 --- a/docs/user/providers-muse.md +++ b/docs/user/providers-muse.md @@ -45,10 +45,11 @@ can use under **Custom models** in the instance settings. ## Permissions and limitations -Muse offers two [permission modes](./permission-modes.md): **Supervised** asks -before commands and edits, and **Full access** runs them without asking. Muse has -no equivalent of **Auto-accept edits** or **Auto**, so they are not offered. Muse -does not offer a separate Plan mode in T3 Code. +Muse offers three [permission modes](./permission-modes.md): **Supervised** asks +before commands and edits, **Auto** lets Muse's own auto-review decide eligible +actions, and **Full access** runs them without asking. Muse has no equivalent of +**Auto-accept edits**, so it is not offered. Muse does not offer a separate Plan +mode in T3 Code. Muse can use T3 Code's tools. If Muse cannot reach them, the turn continues without them. Switching providers can pass conversation context as a handoff. diff --git a/packages/provider-muse/src/server/adapter.test.ts b/packages/provider-muse/src/server/adapter.test.ts index 122e77a760f85..e299cc610f590 100644 --- a/packages/provider-muse/src/server/adapter.test.ts +++ b/packages/provider-muse/src/server/adapter.test.ts @@ -404,6 +404,7 @@ describe("MuseAdapterV2", () => { Effect.gen(function* () { for (const [runtimeMode, profile, approvalMode] of [ ["approval-required", ":ask-me", "promptUnmatched"], + ["auto", ":auto-review", "promptUnmatched"], ["full-access", ":unrestricted", "allowAll"], ] as const) { const policy = ProviderAdapter.ProviderAdapterV2RuntimePolicy.make({ diff --git a/packages/provider-muse/src/server/sdk.ts b/packages/provider-muse/src/server/sdk.ts index 0ae8c2b3ebd24..5bf01703e9a07 100644 --- a/packages/provider-muse/src/server/sdk.ts +++ b/packages/provider-muse/src/server/sdk.ts @@ -130,10 +130,11 @@ export function museApprovalMode(runtimeMode: RuntimeMode) { /** * The permission profile `session/start` and `session/resume` select. Without * one Muse applies its own default, which can be `:auto-review`, where an AI - * reviewer decides eligible approvals instead of the user. + * reviewer decides eligible approvals instead of the user. Only Auto asks for it. */ export function musePermissionProfile(runtimeMode: RuntimeMode) { - return runtimeMode === "full-access" ? ":unrestricted" : ":ask-me"; + if (runtimeMode === "full-access") return ":unrestricted"; + return runtimeMode === "auto" ? ":auto-review" : ":ask-me"; } export function museServeArgs( diff --git a/packages/provider-muse/src/server/status.ts b/packages/provider-muse/src/server/status.ts index bb7fcc6adecbe..2cf257c1025c1 100644 --- a/packages/provider-muse/src/server/status.ts +++ b/packages/provider-muse/src/server/status.ts @@ -24,9 +24,10 @@ const MUSE_PRESENTATION = { displayName: "Muse Code", showInteractionModeToggle: false, reportsContextWindow: true, - // Muse has no native "accept edits" mode, so T3 offers only the two it maps - // directly: :ask-me with promptUnmatched, and :unrestricted with allowAll. - supportedRuntimeModes: ["approval-required", "full-access"], + // Muse has no native "accept edits" mode, so T3 offers only the three it maps + // directly: :ask-me and :auto-review with promptUnmatched, and :unrestricted + // with allowAll. + supportedRuntimeModes: ["approval-required", "auto", "full-access"], } as const; const FALLBACK_CAPABILITIES = museModelCapabilities(); From af1a01aa0a5ea97c89b7480efe3dbe4f75d5b78c Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Wed, 11 Nov 2026 03:20:44 +0000 Subject: [PATCH 2/3] chore(provider-muse): trim runtime mode comment AI-assisted; verified with the tests and tools listed above. --- packages/provider-muse/src/server/status.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/provider-muse/src/server/status.ts b/packages/provider-muse/src/server/status.ts index ca15b47f09365..5667da250efad 100644 --- a/packages/provider-muse/src/server/status.ts +++ b/packages/provider-muse/src/server/status.ts @@ -26,7 +26,7 @@ const MUSE_PRESENTATION = { displayName: "Muse Code", showInteractionModeToggle: false, reportsContextWindow: true, - // Muse has no accept-edits mode; map only :ask-me, :auto-review, and :unrestricted. + // Muse has no accept-edits mode. supportedRuntimeModes: ["approval-required", "auto", "full-access"], } as const; From e151176f4b27b6b967f513dc57bd0cae22c03374 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Wed, 11 Nov 2026 06:27:21 +0000 Subject: [PATCH 3/3] chore(provider-muse): clarify permission profile comment AI-assisted; verified with the tests and tools listed above. --- packages/provider-muse/src/server/sdk.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/provider-muse/src/server/sdk.ts b/packages/provider-muse/src/server/sdk.ts index 97301f9a4f605..11da88d249363 100644 --- a/packages/provider-muse/src/server/sdk.ts +++ b/packages/provider-muse/src/server/sdk.ts @@ -136,7 +136,7 @@ export function museApprovalMode(runtimeMode: RuntimeMode) { return runtimeMode === "full-access" ? "allowAll" : "promptUnmatched"; } -// Select explicitly; Muse defaults may let an AI reviewer decide approvals. +// Select explicitly; Muse's default profile need not match the chosen runtime mode. export function musePermissionProfile(runtimeMode: RuntimeMode) { if (runtimeMode === "full-access") return ":unrestricted"; return runtimeMode === "auto" ? ":auto-review" : ":ask-me";