Skip to content
Open
9 changes: 4 additions & 5 deletions docs/user/permission-modes.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,11 @@ the parent conversation with the subagent's name, so you can respond without swi
## Provider differences

Providers enforce permissions differently. Some read-only actions can proceed in **Supervised**.
**Auto** uses automatic review on Codex, Claude, Cursor, Grok, and fx; providers without an equivalent,
including OpenCode and Antigravity, fall back to asking. On Grok, commands its review blocks come
to you for approval. On fx, prompts it still sends also come to you.
**Auto** uses automatic review on Codex, Claude, Cursor, Grok, Muse Code, and fx; providers without an
equivalent, including OpenCode and Antigravity, fall back to asking. On Grok, commands its review
blocks come to you for approval. On fx, prompts it still sends also come to you.

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**.

T3 Code offers no **Auto-accept edits** or **Full access** for fx. An fx thread already set to either runs in
**Supervised**.
Expand Down
7 changes: 4 additions & 3 deletions docs/user/providers-muse.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ 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 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 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.
Expand Down
1 change: 1 addition & 0 deletions packages/provider-muse/src/server/adapter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,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({
Expand Down
5 changes: 3 additions & 2 deletions packages/provider-muse/src/server/sdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,10 @@ 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) {
return runtimeMode === "full-access" ? ":unrestricted" : ":ask-me";
if (runtimeMode === "full-access") return ":unrestricted";
return runtimeMode === "auto" ? ":auto-review" : ":ask-me";
}

export function museServeArgs(
Expand Down
4 changes: 2 additions & 2 deletions packages/provider-muse/src/server/status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ const MUSE_PRESENTATION = {
displayName: "Muse Code",
showInteractionModeToggle: false,
reportsContextWindow: true,
// Muse has no accept-edits mode; map only :ask-me and :unrestricted.
supportedRuntimeModes: ["approval-required", "full-access"],
// Muse has no accept-edits mode.
supportedRuntimeModes: ["approval-required", "auto", "full-access"],
} as const;

const FALLBACK_CAPABILITIES = museModelCapabilities();
Expand Down
Loading