diff --git a/src/headless.ts b/src/headless.ts index 0e35a6f4e..cb946a92e 100644 --- a/src/headless.ts +++ b/src/headless.ts @@ -200,6 +200,7 @@ export interface HeadlessOptions { eventFilter?: Set; // filter JSONL output to specific event types resumeSession?: string; // session ID to resume (--resume ) bare?: boolean; // --bare: suppress CLAUDE.md/AGENTS.md, user skills, project preferences + yolo?: boolean; // --yolo / -y: activate YOLO mode (build+autonomous+deep+unrestricted) } /** @@ -381,7 +382,9 @@ export function parseHeadlessArgs(argv: string[]): HeadlessOptions { const arg = args[i]; if (arg === "headless") continue; - if (arg.startsWith("--")) { + if (arg === "-y") { + options.yolo = true; + } else if (arg.startsWith("--")) { if (arg === "--timeout" && i + 1 < args.length) { options.timeout = parseInt(args[++i], 10); if (Number.isNaN(options.timeout) || options.timeout < 0) { @@ -460,6 +463,8 @@ export function parseHeadlessArgs(argv: string[]): HeadlessOptions { options.resumeSession = args[++i]; } else if (arg === "--bare") { options.bare = true; + } else if (arg === "--yolo") { + options.yolo = true; } else if (commandSeen) { options.commandArgs.push(arg); } @@ -864,6 +869,7 @@ async function runHeadlessOnce( clientOptions.env = { ...((clientOptions.env as Record) || {}), SF_HEADLESS: "1", + ...(options.yolo ? { SF_YOLO: "1" } : {}), }; // Propagate --bare to the child process if (options.bare) { diff --git a/src/resources/extensions/sf/auto/session.js b/src/resources/extensions/sf/auto/session.js index f8074289d..eb7fc346e 100644 --- a/src/resources/extensions/sf/auto/session.js +++ b/src/resources/extensions/sf/auto/session.js @@ -118,6 +118,10 @@ export class AutoSession { // Always stamp surface from env: persisted value reflects previous launch's // surface and should not override the current surface detection. this.surface = detectSurface(); + // Auto-activate YOLO when SF_YOLO=1 (set by --yolo / -y CLI flag) + if (process.env.SF_YOLO === "1" && !this.yolo) { + this.toggleYolo(); + } } // ── Lifecycle ────────────────────────────────────────────────────────────