From 511a7ddfe307d8392b3994cbefccb04bc5842c02 Mon Sep 17 00:00:00 2001 From: Emanuele <106186915+OneStepAt4time@users.noreply.github.com> Date: Thu, 14 May 2026 15:35:30 +0200 Subject: [PATCH] fix(cli): add --accept-permissions flag to ag run and ag create (#3336, #3337) Tasks requiring file writes stall at the permission gate because neither ag run nor ag create passes permissionMode to the session. Sessions sit idle waiting for approval that never comes. New flag: --accept-permissions / -y - Sets permissionMode: 'bypassPermissions' on session creation - ag run: completes autonomously instead of timing out - ag create: no longer stalls on permission-gated operations Fixes: #3336, #3337 --- src/cli.ts | 4 +++- src/commands/run.ts | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cli.ts b/src/cli.ts index 215101b16..c40fe43ee 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -120,6 +120,8 @@ async function handleCreate(args: string[], io: CliIO): Promise { } } + const acceptPerms = args.includes('--accept-permissions') || args.includes('-y'); + if (!brief) { writeLine(io.stderr, ' ❌ Missing brief. Usage: ag create "Build a login page"'); return 1; @@ -156,7 +158,7 @@ async function handleCreate(args: string[], io: CliIO): Promise { const res = await fetch(`${baseUrl}/v1/sessions`, { method: 'POST', headers, - body: JSON.stringify({ workDir: cwd, name: sessionName }), + body: JSON.stringify({ workDir: cwd, name: sessionName, ...(acceptPerms ? { permissionMode: 'bypassPermissions' } : {}) }), }); if (!res.ok) { diff --git a/src/commands/run.ts b/src/commands/run.ts index 8ad607205..48bb200e5 100644 --- a/src/commands/run.ts +++ b/src/commands/run.ts @@ -261,6 +261,7 @@ export async function handleRun(args: string[], io: CliIO): Promise { const portOverride = portIdx !== -1 ? parseIntSafe(args[portIdx + 1], 9100) : null; const noStream = args.includes('--no-stream'); + const acceptPerms = args.includes('--accept-permissions') || args.includes('-y'); writeLine(io.stdout, ` 🚀 ag run: ${brief.slice(0, 60)}${brief.length > 60 ? '...' : ''}`); @@ -366,6 +367,7 @@ export async function handleRun(args: string[], io: CliIO): Promise { workDir: cwd, prompt: brief, name: `run-${brief.slice(0, 20).replace(/[^a-zA-Z0-9-]/g, '-').toLowerCase()}`, + ...(acceptPerms ? { permissionMode: 'bypassPermissions' } : {}), }), });