From e22c8339eb22ede8e1dce895bd88a7c72b779783 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 21 Jun 2026 18:53:42 -0400 Subject: [PATCH 1/7] feat(tui): add yolo permission mode --- packages/opencode/src/cli/cmd/run.ts | 5 +++-- packages/opencode/src/cli/cmd/tui.ts | 7 +++++++ packages/tui/src/context/args.tsx | 1 + packages/tui/src/context/local.tsx | 22 +++++++++++++++++++--- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 6f4508cb0b0a..425aef947827 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -228,7 +228,8 @@ export const RunCommand = effectCmd({ describe: "run in direct interactive split-footer mode", default: false, }) - .option("dangerously-skip-permissions", { + .option("yolo", { + alias: ["dangerously-skip-permissions"], type: "boolean", describe: "auto-approve permissions that are not explicitly denied (dangerous!)", default: false, @@ -732,7 +733,7 @@ export const RunCommand = effectCmd({ const permission = event.properties if (permission.sessionID !== sessionID) continue - if (args["dangerously-skip-permissions"]) { + if (args.yolo) { await client.permission.reply({ requestID: permission.id, reply: "once", diff --git a/packages/opencode/src/cli/cmd/tui.ts b/packages/opencode/src/cli/cmd/tui.ts index 68941e976ac6..660f580f27f6 100644 --- a/packages/opencode/src/cli/cmd/tui.ts +++ b/packages/opencode/src/cli/cmd/tui.ts @@ -103,6 +103,12 @@ export const TuiThreadCommand = cmd({ .option("agent", { type: "string", describe: "agent to use", + }) + .option("yolo", { + alias: ["dangerously-skip-permissions"], + type: "boolean", + describe: "auto-approve permissions that are not explicitly denied (dangerous!)", + default: false, }), handler: async (args) => { const unguard = win32InstallCtrlCGuard() @@ -207,6 +213,7 @@ export const TuiThreadCommand = cmd({ model: args.model, prompt, fork: args.fork, + yolo: args.yolo, }, }), ) diff --git a/packages/tui/src/context/args.tsx b/packages/tui/src/context/args.tsx index 8a229ffaba69..c7a5c20ca89f 100644 --- a/packages/tui/src/context/args.tsx +++ b/packages/tui/src/context/args.tsx @@ -7,6 +7,7 @@ export interface Args { continue?: boolean sessionID?: string fork?: boolean + yolo?: boolean } export const { use: useArgs, provider: ArgsProvider } = createSimpleContext({ diff --git a/packages/tui/src/context/local.tsx b/packages/tui/src/context/local.tsx index 39e7bc111d55..279bde80dcb7 100644 --- a/packages/tui/src/context/local.tsx +++ b/packages/tui/src/context/local.tsx @@ -23,6 +23,8 @@ export type LocalTheme = { info: RGBA } +export type PermissionMode = "auto" | "normal" + export function parseModel(model: string) { const [providerID, ...rest] = model.split("/") return { @@ -56,6 +58,8 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const theme = useTheme().theme const route = useRoute() const paths = useTuiPaths() + const args = useArgs() + const event = useEvent() function isModelValid(model: { providerID: string; modelID: string }) { const provider = sync.data.provider.find((item) => item.id === model.providerID) @@ -190,7 +194,6 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ if (state.pending) save() }) - const args = useArgs() const fallbackModel = createMemo(() => { if (args.model) { const { providerID, modelID } = parseModel(args.model) @@ -446,8 +449,6 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ if (state.pending) save() }) - const event = useEvent() - const slots = createMemo(() => { const existing = new Set(sync.data.session.filter((x) => x.parentID === undefined).map((x) => x.id)) return sessionStore.pinned.filter((id) => existing.has(id)).slice(0, 9) @@ -518,6 +519,20 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ }, } + const permission: { mode: PermissionMode } = { + mode: args.yolo ? "auto" : "normal", + } + + event.on("permission.asked", (evt, metadata) => { + if (permission.mode !== "auto") return + void sdk.client.permission.reply({ + requestID: evt.properties.id, + reply: "once", + directory: metadata.directory, + workspace: metadata.workspace, + }) + }) + createEffect(() => { const value = agent.current() if (!value?.model) return @@ -534,6 +549,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ agent, mcp, session, + permission, } return result }, From 7280223e2345a026a35ad818edc691232105b151 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 21 Jun 2026 18:55:36 -0400 Subject: [PATCH 2/7] feat(tui): toggle permission mode from palette --- packages/tui/src/app.tsx | 10 ++++++++++ packages/tui/src/context/local.tsx | 13 ++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/tui/src/app.tsx b/packages/tui/src/app.tsx index 17a9a554c2e4..d5f2baf906ac 100644 --- a/packages/tui/src/app.tsx +++ b/packages/tui/src/app.tsx @@ -920,6 +920,16 @@ function App(props: { onSnapshot?: () => Promise; pluginHost: TuiPlugi dialog.clear() }, }, + { + name: "permission.mode", + title: + local.permission.mode === "auto" ? "Disable auto-approve permissions" : "Enable auto-approve permissions", + category: "System", + run: () => { + local.permission.toggle() + dialog.clear() + }, + }, ].map((command) => ({ namespace: "palette", ...command, diff --git a/packages/tui/src/context/local.tsx b/packages/tui/src/context/local.tsx index 279bde80dcb7..9446eac11abc 100644 --- a/packages/tui/src/context/local.tsx +++ b/packages/tui/src/context/local.tsx @@ -519,8 +519,19 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ }, } - const permission: { mode: PermissionMode } = { + const [permissionStore, setPermissionStore] = createStore<{ mode: PermissionMode }>({ mode: args.yolo ? "auto" : "normal", + }) + const permission = { + get mode() { + return permissionStore.mode + }, + set(mode: PermissionMode) { + setPermissionStore("mode", mode) + }, + toggle() { + setPermissionStore("mode", (mode) => (mode === "auto" ? "normal" : "auto")) + }, } event.on("permission.asked", (evt, metadata) => { From 33b866d615ea1c5199f7bd53e82405ff3c609470 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 21 Jun 2026 18:57:54 -0400 Subject: [PATCH 3/7] fix(tui): avoid auto-approve permission flicker --- packages/tui/src/context/local.tsx | 1 + packages/tui/src/context/sync.tsx | 29 ++++++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/packages/tui/src/context/local.tsx b/packages/tui/src/context/local.tsx index 9446eac11abc..8d7c22b38a31 100644 --- a/packages/tui/src/context/local.tsx +++ b/packages/tui/src/context/local.tsx @@ -536,6 +536,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ event.on("permission.asked", (evt, metadata) => { if (permission.mode !== "auto") return + sync.permission.remove(evt.properties.sessionID, evt.properties.id) void sdk.client.permission.reply({ requestID: evt.properties.id, reply: "once", diff --git a/packages/tui/src/context/sync.tsx b/packages/tui/src/context/sync.tsx index 03db8784de49..bad8473eec65 100644 --- a/packages/tui/src/context/sync.tsx +++ b/packages/tui/src/context/sync.tsx @@ -171,17 +171,7 @@ export const { void bootstrap() break case "permission.replied": { - const requests = store.permission[event.properties.sessionID] - if (!requests) break - const match = search(requests, event.properties.requestID, (r) => r.id) - if (!match.found) break - setStore( - "permission", - event.properties.sessionID, - produce((draft) => { - draft.splice(match.index, 1) - }), - ) + removePermission(event.properties.sessionID, event.properties.requestID) break } @@ -428,6 +418,20 @@ export const { } }) + function removePermission(sessionID: string, requestID: string) { + const requests = store.permission[sessionID] + if (!requests) return + const match = search(requests, requestID, (request) => request.id) + if (!match.found) return + setStore( + "permission", + sessionID, + produce((draft) => { + draft.splice(match.index, 1) + }), + ) + } + const exit = useExit() const args = useArgs() @@ -551,6 +555,9 @@ export const { get path() { return project.instance.path() }, + permission: { + remove: removePermission, + }, session: { get(sessionID: string) { const match = search(store.session, sessionID, (s) => s.id) From 55bae336d6d0f8efc60d0d4f9fa67bfddcfec903 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 21 Jun 2026 19:00:58 -0400 Subject: [PATCH 4/7] refactor(tui): separate permission mode context --- packages/tui/src/app.tsx | 55 ++++++++++--------- packages/tui/src/context/local.tsx | 30 +--------- packages/tui/src/context/permission.tsx | 26 +++++++++ packages/tui/src/context/sync.tsx | 42 +++++++------- .../tui/test/cli/cmd/tui/sync-fixture.tsx | 28 ++++++---- 5 files changed, 97 insertions(+), 84 deletions(-) create mode 100644 packages/tui/src/context/permission.tsx diff --git a/packages/tui/src/app.tsx b/packages/tui/src/app.tsx index d5f2baf906ac..64f8037811de 100644 --- a/packages/tui/src/app.tsx +++ b/packages/tui/src/app.tsx @@ -36,6 +36,7 @@ import { StartupLoading } from "./component/startup-loading" import { SyncProvider, useSync } from "./context/sync" import { DataProvider } from "./context/data" import { LocalProvider, useLocal } from "./context/local" +import { PermissionProvider } from "./context/permission" import { DialogModel } from "./component/dialog-model" import { useConnected } from "./component/use-connected" import { DialogMcp } from "./component/dialog-mcp" @@ -292,32 +293,34 @@ export const run = Effect.fn("Tui.run")(function* (input: TuiInput) { headers={input.headers} events={input.events} > - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/tui/src/context/local.tsx b/packages/tui/src/context/local.tsx index 8d7c22b38a31..a05d315166ed 100644 --- a/packages/tui/src/context/local.tsx +++ b/packages/tui/src/context/local.tsx @@ -12,6 +12,7 @@ import { readJson, writeJsonAtomic } from "../util/persistence" import { useTheme } from "./theme" import { useToast } from "../ui/toast" import { useRoute } from "./route" +import { usePermission } from "./permission" export type LocalTheme = { secondary: RGBA @@ -23,8 +24,6 @@ export type LocalTheme = { info: RGBA } -export type PermissionMode = "auto" | "normal" - export function parseModel(model: string) { const [providerID, ...rest] = model.split("/") return { @@ -60,6 +59,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ const paths = useTuiPaths() const args = useArgs() const event = useEvent() + const permission = usePermission() function isModelValid(model: { providerID: string; modelID: string }) { const provider = sync.data.provider.find((item) => item.id === model.providerID) @@ -519,32 +519,6 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({ }, } - const [permissionStore, setPermissionStore] = createStore<{ mode: PermissionMode }>({ - mode: args.yolo ? "auto" : "normal", - }) - const permission = { - get mode() { - return permissionStore.mode - }, - set(mode: PermissionMode) { - setPermissionStore("mode", mode) - }, - toggle() { - setPermissionStore("mode", (mode) => (mode === "auto" ? "normal" : "auto")) - }, - } - - event.on("permission.asked", (evt, metadata) => { - if (permission.mode !== "auto") return - sync.permission.remove(evt.properties.sessionID, evt.properties.id) - void sdk.client.permission.reply({ - requestID: evt.properties.id, - reply: "once", - directory: metadata.directory, - workspace: metadata.workspace, - }) - }) - createEffect(() => { const value = agent.current() if (!value?.model) return diff --git a/packages/tui/src/context/permission.tsx b/packages/tui/src/context/permission.tsx new file mode 100644 index 000000000000..f88f40db033c --- /dev/null +++ b/packages/tui/src/context/permission.tsx @@ -0,0 +1,26 @@ +import { createStore } from "solid-js/store" +import { useArgs } from "./args" +import { createSimpleContext } from "./helper" + +export type PermissionMode = "auto" | "normal" + +export const { use: usePermission, provider: PermissionProvider } = createSimpleContext({ + name: "Permission", + init: () => { + const args = useArgs() + const [store, setStore] = createStore<{ mode: PermissionMode }>({ + mode: args.yolo ? "auto" : "normal", + }) + return { + get mode() { + return store.mode + }, + set(mode: PermissionMode) { + setStore("mode", mode) + }, + toggle() { + setStore("mode", (mode) => (mode === "auto" ? "normal" : "auto")) + }, + } + }, +}) diff --git a/packages/tui/src/context/sync.tsx b/packages/tui/src/context/sync.tsx index bad8473eec65..d0511c5183e4 100644 --- a/packages/tui/src/context/sync.tsx +++ b/packages/tui/src/context/sync.tsx @@ -31,6 +31,7 @@ import { useArgs } from "./args" import { batch, onMount } from "solid-js" import path from "path" import { useKV } from "./kv" +import { usePermission } from "./permission" const emptyConsoleState: ConsoleState = { consoleManagedProviders: [], @@ -59,6 +60,7 @@ export const { init: () => { const startup = useTuiStartup() const kv = useKV() + const permission = usePermission() const [store, setStore] = createStore<{ status: "loading" | "partial" | "complete" provider: Provider[] @@ -165,18 +167,37 @@ export const { .then((x) => (x.data ?? []).toSorted((a, b) => a.id.localeCompare(b.id))) } - event.subscribe((event, { workspace }) => { + event.subscribe((event, { directory, workspace }) => { switch (event.type) { case "server.instance.disposed": void bootstrap() break case "permission.replied": { - removePermission(event.properties.sessionID, event.properties.requestID) + const requests = store.permission[event.properties.sessionID] + if (!requests) break + const match = search(requests, event.properties.requestID, (r) => r.id) + if (!match.found) break + setStore( + "permission", + event.properties.sessionID, + produce((draft) => { + draft.splice(match.index, 1) + }), + ) break } case "permission.asked": { const request = event.properties + if (permission.mode === "auto") { + void sdk.client.permission.reply({ + requestID: request.id, + reply: "once", + directory, + workspace, + }) + break + } const requests = store.permission[request.sessionID] if (!requests) { setStore("permission", request.sessionID, [request]) @@ -418,20 +439,6 @@ export const { } }) - function removePermission(sessionID: string, requestID: string) { - const requests = store.permission[sessionID] - if (!requests) return - const match = search(requests, requestID, (request) => request.id) - if (!match.found) return - setStore( - "permission", - sessionID, - produce((draft) => { - draft.splice(match.index, 1) - }), - ) - } - const exit = useExit() const args = useArgs() @@ -555,9 +562,6 @@ export const { get path() { return project.instance.path() }, - permission: { - remove: removePermission, - }, session: { get(sessionID: string) { const match = search(store.session, sessionID, (s) => s.id) diff --git a/packages/tui/test/cli/cmd/tui/sync-fixture.tsx b/packages/tui/test/cli/cmd/tui/sync-fixture.tsx index a212f5be1db1..fbc1dba3c508 100644 --- a/packages/tui/test/cli/cmd/tui/sync-fixture.tsx +++ b/packages/tui/test/cli/cmd/tui/sync-fixture.tsx @@ -6,6 +6,8 @@ import { KVProvider, useKV } from "../../../../src/context/kv" import { ProjectProvider, useProject } from "../../../../src/context/project" import { SDKProvider } from "../../../../src/context/sdk" import { SyncProvider, useSync } from "../../../../src/context/sync" +import { PermissionProvider } from "../../../../src/context/permission" +import { ExitProvider } from "../../../../src/context/exit" import { createEventSource, createFetch, type FetchHandler, directory } from "../../../fixture/tui-sdk" import { TestTuiContexts } from "../../../fixture/tui-environment" export { createEventSource, createFetch, directory, eventSource, json, worktree } from "../../../fixture/tui-sdk" @@ -44,17 +46,21 @@ export async function mount(override?: FetchHandler, state?: string) { const app = await testRender(() => ( - - - - - - - - - - - + {}}> + + + + + + + + + + + + + + )) From 36eb9cd96701c2c7dbcf5153ce3b3685167511c1 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 21 Jun 2026 19:02:52 -0400 Subject: [PATCH 5/7] feat(tui): indicate auto permission mode --- packages/opencode/src/cli/cmd/run.ts | 4 ++-- packages/opencode/src/cli/cmd/tui.ts | 4 ++-- packages/tui/src/component/prompt/index.tsx | 4 +++- packages/tui/src/context/args.tsx | 2 +- packages/tui/src/context/permission.tsx | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 425aef947827..f199fcbe6e45 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -228,7 +228,7 @@ export const RunCommand = effectCmd({ describe: "run in direct interactive split-footer mode", default: false, }) - .option("yolo", { + .option("auto", { alias: ["dangerously-skip-permissions"], type: "boolean", describe: "auto-approve permissions that are not explicitly denied (dangerous!)", @@ -733,7 +733,7 @@ export const RunCommand = effectCmd({ const permission = event.properties if (permission.sessionID !== sessionID) continue - if (args.yolo) { + if (args.auto) { await client.permission.reply({ requestID: permission.id, reply: "once", diff --git a/packages/opencode/src/cli/cmd/tui.ts b/packages/opencode/src/cli/cmd/tui.ts index 660f580f27f6..6b09d4ff9cce 100644 --- a/packages/opencode/src/cli/cmd/tui.ts +++ b/packages/opencode/src/cli/cmd/tui.ts @@ -104,7 +104,7 @@ export const TuiThreadCommand = cmd({ type: "string", describe: "agent to use", }) - .option("yolo", { + .option("auto", { alias: ["dangerously-skip-permissions"], type: "boolean", describe: "auto-approve permissions that are not explicitly denied (dangerous!)", @@ -213,7 +213,7 @@ export const TuiThreadCommand = cmd({ model: args.model, prompt, fork: args.fork, - yolo: args.yolo, + auto: args.auto, }, }), ) diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx index aa002080b1dd..1129c43e3f54 100644 --- a/packages/tui/src/component/prompt/index.tsx +++ b/packages/tui/src/component/prompt/index.tsx @@ -1439,7 +1439,9 @@ export function Prompt(props: PromptProps) { {(agent) => ( <> - {store.mode === "shell" ? "Shell" : Locale.titlecase(agent().name)} + {store.mode === "shell" + ? "Shell" + : Locale.titlecase(agent().name) + (local.permission.mode === "auto" ? "[auto]" : "")} diff --git a/packages/tui/src/context/args.tsx b/packages/tui/src/context/args.tsx index c7a5c20ca89f..9a528f2f0ece 100644 --- a/packages/tui/src/context/args.tsx +++ b/packages/tui/src/context/args.tsx @@ -7,7 +7,7 @@ export interface Args { continue?: boolean sessionID?: string fork?: boolean - yolo?: boolean + auto?: boolean } export const { use: useArgs, provider: ArgsProvider } = createSimpleContext({ diff --git a/packages/tui/src/context/permission.tsx b/packages/tui/src/context/permission.tsx index f88f40db033c..13a6ba822339 100644 --- a/packages/tui/src/context/permission.tsx +++ b/packages/tui/src/context/permission.tsx @@ -9,7 +9,7 @@ export const { use: usePermission, provider: PermissionProvider } = createSimple init: () => { const args = useArgs() const [store, setStore] = createStore<{ mode: PermissionMode }>({ - mode: args.yolo ? "auto" : "normal", + mode: args.auto ? "auto" : "normal", }) return { get mode() { From 9f18483e4ecaecec4eb1162e0000450954fae91d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 21 Jun 2026 19:04:16 -0400 Subject: [PATCH 6/7] docs: document auto permission mode --- packages/tui/src/component/prompt/index.tsx | 7 ++++--- packages/web/src/content/docs/cli.mdx | 3 ++- packages/web/src/content/docs/permissions.mdx | 20 +++++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/tui/src/component/prompt/index.tsx b/packages/tui/src/component/prompt/index.tsx index 1129c43e3f54..b883b7eb32fd 100644 --- a/packages/tui/src/component/prompt/index.tsx +++ b/packages/tui/src/component/prompt/index.tsx @@ -1439,10 +1439,11 @@ export function Prompt(props: PromptProps) { {(agent) => ( <> - {store.mode === "shell" - ? "Shell" - : Locale.titlecase(agent().name) + (local.permission.mode === "auto" ? "[auto]" : "")} + {store.mode === "shell" ? "Shell" : Locale.titlecase(agent().name)} + + auto + ยท diff --git a/packages/web/src/content/docs/cli.mdx b/packages/web/src/content/docs/cli.mdx index 0f9e5e3b1f48..b44a27f4e1d2 100644 --- a/packages/web/src/content/docs/cli.mdx +++ b/packages/web/src/content/docs/cli.mdx @@ -37,6 +37,7 @@ opencode [project] | {"--prompt"} | | Prompt to use | | {"--model"} | `-m` | Model to use in the form of provider/model | | {"--agent"} | | Agent to use | +| {"--auto"} | | Auto-approve permissions that are not explicitly denied | | {"--port"} | | Port to listen on | | {"--hostname"} | | Hostname to listen on | | {"--mdns"} | | Enable mDNS discovery | @@ -380,7 +381,7 @@ opencode run --attach http://localhost:4096 "Explain async/await in JavaScript" | {"--port"} | | Port for the local server (defaults to random port) | | {"--variant"} | | Model variant (provider-specific reasoning effort) | | {"--thinking"} | | Show thinking blocks | -| {"--dangerously-skip-permissions"} | | Auto-approve permissions that are not explicitly denied (dangerous!) | +| {"--auto"} | | Auto-approve permissions that are not explicitly denied | --- diff --git a/packages/web/src/content/docs/permissions.mdx b/packages/web/src/content/docs/permissions.mdx index 19182e27491b..ccc4034dc696 100644 --- a/packages/web/src/content/docs/permissions.mdx +++ b/packages/web/src/content/docs/permissions.mdx @@ -19,6 +19,26 @@ Each permission rule resolves to one of: --- +## Auto mode + +Start OpenCode with `--auto` to automatically approve permission requests that are not explicitly denied. + +```bash +opencode --auto +``` + +You can also use auto mode with [`opencode run`](/docs/cli#run). + +```bash +opencode run --auto "Refactor this module" +``` + +Explicit `"deny"` rules are still enforced. Auto mode only changes requests that would otherwise ask for approval. + +In the TUI, open the command palette and select **Enable auto-approve permissions** or **Disable auto-approve permissions** to change modes. When auto mode is active, the prompt displays a muted `auto` indicator next to the current agent. + +--- + ## Configuration You can set permissions globally (with `*`), and override specific tools. From 12221a0b652e05cc4e9757c94f90a04f2c3b6409 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Mon, 29 Jun 2026 23:59:31 -0500 Subject: [PATCH 7/7] fix(cli): add yolo permission alias --- packages/opencode/src/cli/cmd/run.ts | 2 +- packages/opencode/src/cli/cmd/tui.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index f199fcbe6e45..8f0ac9d53844 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -229,7 +229,7 @@ export const RunCommand = effectCmd({ default: false, }) .option("auto", { - alias: ["dangerously-skip-permissions"], + alias: ["yolo", "dangerously-skip-permissions"], type: "boolean", describe: "auto-approve permissions that are not explicitly denied (dangerous!)", default: false, diff --git a/packages/opencode/src/cli/cmd/tui.ts b/packages/opencode/src/cli/cmd/tui.ts index 6b09d4ff9cce..802f981bf787 100644 --- a/packages/opencode/src/cli/cmd/tui.ts +++ b/packages/opencode/src/cli/cmd/tui.ts @@ -105,7 +105,7 @@ export const TuiThreadCommand = cmd({ describe: "agent to use", }) .option("auto", { - alias: ["dangerously-skip-permissions"], + alias: ["yolo", "dangerously-skip-permissions"], type: "boolean", describe: "auto-approve permissions that are not explicitly denied (dangerous!)", default: false,