<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tony</title>
    <description>The latest articles on DEV Community by Tony (@tony-dev).</description>
    <link>https://dev.to/tony-dev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4171612%2F0bdf9645-070f-469c-9f15-e4dece5b866a.png</url>
      <title>DEV Community: Tony</title>
      <link>https://dev.to/tony-dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tony-dev"/>
    <language>en</language>
    <item>
      <title>Copilot YOLO mode, dissected: what --yolo, /yolo and Allow all actually skip</title>
      <dc:creator>Tony</dc:creator>
      <pubDate>Mon, 12 Oct 2026 18:02:40 +0000</pubDate>
      <link>https://dev.to/agentrq/copilot-yolo-mode-dissected-what-yolo-yolo-and-allow-all-actually-skip-4pbi</link>
      <guid>https://dev.to/agentrq/copilot-yolo-mode-dissected-what-yolo-yolo-and-allow-all-actually-skip-4pbi</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copilot CLI:&lt;/strong&gt; &lt;code&gt;copilot --yolo&lt;/code&gt; (same flag as &lt;code&gt;--allow-all&lt;/code&gt;), or &lt;code&gt;/yolo&lt;/code&gt; in a running session. It is shorthand for &lt;code&gt;--allow-all-tools&lt;/code&gt; + &lt;code&gt;--allow-all-paths&lt;/code&gt; + &lt;code&gt;--allow-all-urls&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code:&lt;/strong&gt; pick &lt;strong&gt;Allow all&lt;/strong&gt; in the chat permission picker, type &lt;code&gt;/yolo&lt;/code&gt;, or set &lt;code&gt;"chat.tools.global.autoApprove": true&lt;/code&gt; to make it permanent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it skips:&lt;/strong&gt; approval prompts. &lt;strong&gt;What it doesn't:&lt;/strong&gt; your &lt;code&gt;--deny-tool&lt;/code&gt; rules, and (in VS Code, explicitly documented) an enabled sandbox.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autopilot is a different switch.&lt;/strong&gt; It keeps the agent iterating; YOLO approves its tool calls. Unattended runs usually want both.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything here was checked on October 7, 2026 against GitHub's Copilot CLI reference, the github/copilot-cli changelog (1.0.93) and VS Code's agent docs in microsoft/vscode-docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does "YOLO" mean two different things in Copilot?
&lt;/h2&gt;

&lt;p&gt;Because Copilot ships two agent runtimes with two permission systems. The &lt;strong&gt;Copilot CLI&lt;/strong&gt; is a terminal agent with flag-driven permissions. &lt;strong&gt;Copilot Chat in VS Code&lt;/strong&gt; is an editor agent whose permissions hang off a picker and &lt;code&gt;settings.json&lt;/code&gt;. They share vocabulary (&lt;code&gt;/yolo&lt;/code&gt; exists in both) but not config. Nothing you set in VS Code changes the CLI, and vice versa.&lt;/p&gt;

&lt;p&gt;The one thing they agree on is the layering. There are three separate gates between the model and your machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model wants to act
   │
   ▼
[1] deny rules ─────────── always win, YOLO or not
   │
   ▼
[2] approval prompt ────── this is the only layer YOLO removes
   │
   ▼
[3] sandbox (if enabled) ─ still limits files + network
   │
   ▼
your shell / filesystem / network
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep that picture in mind; every flag below is about layer 2.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly does copilot --yolo turn on?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;copilot &lt;span class="nt"&gt;--yolo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--yolo&lt;/code&gt; and &lt;code&gt;--allow-all&lt;/code&gt; are the same flag, documented as "Enable all permissions (tools, paths, and URLs)". It decomposes into three narrower switches you can use on their own:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;th&gt;What stops asking&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--allow-all-tools&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;every tool call (GitHub notes this is required when you drive the CLI from a script)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--allow-all-paths&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;the check on which file paths the agent may touch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--allow-all-urls&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;URL fetch approval&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The env var &lt;code&gt;COPILOT_ALLOW_ALL=true&lt;/code&gt; does the same as &lt;code&gt;--yolo&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; trusts the current directory, which makes it the CI-friendly form: no flag plumbing through wrapper scripts.&lt;/p&gt;

&lt;p&gt;The nerdy bit worth noticing: paths and URLs are separate trust dimensions from tools. If your threat model is "the agent may run &lt;code&gt;npm test&lt;/code&gt; but must not read &lt;code&gt;~/.ssh&lt;/code&gt; or exfiltrate to random hosts", &lt;code&gt;--allow-all-tools&lt;/code&gt; alone is a materially different posture from &lt;code&gt;--yolo&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do the in-session commands map onto each other?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;/permissions&lt;/code&gt; is now the canonical command, with four arguments: &lt;code&gt;default&lt;/code&gt;, &lt;code&gt;assisted&lt;/code&gt;, &lt;code&gt;allow-all&lt;/code&gt; and &lt;code&gt;show&lt;/code&gt;. Everything else is an alias:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/yolo&lt;/code&gt; and &lt;code&gt;/allow-all&lt;/code&gt; → &lt;code&gt;/permissions allow-all&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/yolo&lt;/code&gt; also takes &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;auto&lt;/code&gt; and &lt;code&gt;show&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/reset-allowed-tools&lt;/code&gt; (or &lt;code&gt;/permissions default&lt;/code&gt;) undoes it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While it's on, the footer shows a &lt;strong&gt;YOLO&lt;/strong&gt; indicator, so you can't forget you're flying without a net.&lt;/p&gt;

&lt;p&gt;One gotcha for people coming from other agents: &lt;strong&gt;Shift+Tab does not toggle YOLO in the Copilot CLI.&lt;/strong&gt; It cycles standard → plan → autopilot. That's a mode-of-work switch, not a permission switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why isn't Autopilot the same thing as YOLO?
&lt;/h2&gt;

&lt;p&gt;Two orthogonal axes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autopilot&lt;/strong&gt; (&lt;code&gt;--autopilot&lt;/code&gt;, &lt;code&gt;/autopilot&lt;/code&gt;, or Shift+Tab) answers "should the agent keep going without checking in with me?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YOLO&lt;/strong&gt; answers "should the agent run tools without asking me?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Autopilot without YOLO: the agent keeps working, then blocks on the first approval. YOLO without Autopilot: approvals fly through, but the agent stops to check in. An unattended run usually needs both. VS Code's security docs make the same point from the other side: Autopilot "combines auto-approval with autonomous iteration" and "reduces your ability to review intermediate steps".&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I get most of the speed without approving everything?
&lt;/h2&gt;

&lt;p&gt;Yes, and this is where Copilot's design is genuinely nice. Two halfway layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pattern rules.&lt;/strong&gt; &lt;code&gt;--allow-tool&lt;/code&gt; and &lt;code&gt;--deny-tool&lt;/code&gt; take typed patterns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;copilot &lt;span class="nt"&gt;--allow-tool&lt;/span&gt; &lt;span class="s1"&gt;'shell(git:*)'&lt;/span&gt; &lt;span class="nt"&gt;--deny-tool&lt;/span&gt; &lt;span class="s1"&gt;'shell(git push)'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other shapes: &lt;code&gt;write(src/*.ts)&lt;/code&gt;, &lt;code&gt;read(.env)&lt;/code&gt;, &lt;code&gt;url(github.com)&lt;/code&gt;, &lt;code&gt;MyMCP(create_issue)&lt;/code&gt;. The rule that matters: &lt;strong&gt;a deny always wins&lt;/strong&gt;, including over &lt;code&gt;--yolo&lt;/code&gt;. That gives you a cheap "YOLO minus the footguns" profile: &lt;code&gt;--yolo --deny-tool 'shell(git push)'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assisted permissions.&lt;/strong&gt; &lt;code&gt;/permissions assisted&lt;/code&gt; puts a safety model in front of the prompt. It approves routine requests and only escalates the rest to you. It's a classifier in layer 2, not a sandbox, so it reduces prompts without adding isolation.&lt;/p&gt;

&lt;p&gt;Admins get the last word: &lt;code&gt;"disableBypassPermissionsMode": "disable"&lt;/code&gt; under &lt;code&gt;permissions&lt;/code&gt; kills all of this, and &lt;code&gt;"allow-auto-only"&lt;/code&gt; restricts users to the assisted mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does VS Code's version work?
&lt;/h2&gt;

&lt;p&gt;Copilot Chat calls it &lt;strong&gt;Allow all&lt;/strong&gt;, one of three permission levels:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Manual&lt;/strong&gt; (default)&lt;/td&gt;
&lt;td&gt;asks for each tool call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Assisted&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;a model approves routine requests (needs &lt;code&gt;chat.assistedPermissions.enabled&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allow all&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;asks for nothing; VS Code warns you the first time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three ways in:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The permission picker in the chat input.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/yolo&lt;/code&gt; or &lt;code&gt;/autoApprove&lt;/code&gt; in chat, for the current session. Undo with &lt;code&gt;/disableYolo&lt;/code&gt; or &lt;code&gt;/disableAutoApprove&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Permanently, in &lt;code&gt;settings.json&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"chat.tools.global.autoApprove"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last one approves every tool in every workspace, and VS Code's own docs flag it as a setting that "disables critical security protections". The docs recommend the session-scoped Allow all when you don't need auto-approval everywhere. The experimental &lt;code&gt;chat.permissions.default&lt;/code&gt; (&lt;code&gt;default&lt;/code&gt;, &lt;code&gt;autoApprove&lt;/code&gt;, &lt;code&gt;autopilot&lt;/code&gt;) picks the level new chats start with, and orgs can block global auto-approve with the &lt;code&gt;ChatToolsAutoApprove&lt;/code&gt; policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are terminal allowlists enough to keep me safe?
&lt;/h2&gt;

&lt;p&gt;They're the VS Code halfway option:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"chat.tools.terminal.autoApprove"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"mkdir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"/^git (status|diff|log)\\b/"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keys are prefixes or regexes. &lt;code&gt;true&lt;/code&gt; auto-approves; &lt;code&gt;false&lt;/code&gt; forces a prompt even if another rule would approve. Note that &lt;code&gt;false&lt;/code&gt; means &lt;strong&gt;ask&lt;/strong&gt;, not &lt;strong&gt;block&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But read the fine print: VS Code's security docs say auto-approval rules "use best-effort command parsing and have known limitations with shell aliases, quote concatenation, and complex shell syntax". Anyone who has written a shell parser knows why: &lt;code&gt;g'it' push&lt;/code&gt;, an alias, or &lt;code&gt;bash -c "$(…)"&lt;/code&gt; can all slip past a prefix match. Treat allowlists as a convenience, and put the real boundary somewhere that enforces it at the OS level.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the sandbox actually enforce, and what doesn't YOLO touch?
&lt;/h2&gt;

&lt;p&gt;In VS Code, turn on &lt;code&gt;chat.agent.sandbox.enabled&lt;/code&gt; (or the &lt;strong&gt;Sandboxing for terminal&lt;/strong&gt; toggle in the picker). The docs are explicit that Allow all and Autopilot skip prompts "but an enabled sandbox still restricts terminal file system and network access". Under the hood VS Code's docs list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;macOS:&lt;/strong&gt; Apple's Seatbelt, built in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux / WSL2:&lt;/strong&gt; bubblewrap for filesystem isolation plus &lt;code&gt;socat&lt;/code&gt; for network proxying (&lt;code&gt;apt-get install bubblewrap socat&lt;/code&gt;). WSL1 is out, because bubblewrap needs user namespaces.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two caveats from the same docs: outbound network stays &lt;strong&gt;on&lt;/strong&gt; by default (&lt;code&gt;chat.agent.sandbox.network.allowNetwork&lt;/code&gt; defaults to &lt;code&gt;true&lt;/code&gt;), so lock that down separately; and the sandbox is "not a virtual machine or user-account boundary". If you see the older key &lt;code&gt;chat.tools.terminal.sandbox.enabled&lt;/code&gt; in blog posts, it's no longer in VS Code's docs.&lt;/p&gt;

&lt;p&gt;The Copilot CLI has &lt;code&gt;/sandbox&lt;/code&gt; / &lt;code&gt;--sandbox&lt;/code&gt; too. GitHub's reference still marks it experimental while the changelog says it's available to everyone, and the CLI docs don't say whether &lt;code&gt;--yolo&lt;/code&gt; bypasses it. We treat it as a separate layer like VS Code's, but if you rely on it, check what &lt;code&gt;/sandbox&lt;/code&gt; reports.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can a cloned repo flip YOLO on for me?
&lt;/h2&gt;

&lt;p&gt;In VS Code, the front-line defense is Workspace Trust: an untrusted folder opens in restricted mode, which "also disables agents". So review a repo before you trust it, because trust is what unlocks agents in it at all. The global auto-approve setting is something you set yourself, and the docs steer you to the session-scoped level instead. The CLI has a notion of trusted directories too: &lt;code&gt;COPILOT_ALLOW_ALL=true&lt;/code&gt; trusts the current directory, and &lt;code&gt;/add-dir PATH&lt;/code&gt; grants file access to another directory and loads its &lt;code&gt;.github/skills&lt;/code&gt; and &lt;code&gt;.github/agents&lt;/code&gt; as trusted configuration. That's worth remembering before you point a YOLO session at a repo you haven't read.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I turn on YOLO per task or per workspace with AgentRQ?
&lt;/h2&gt;

&lt;p&gt;Copilot's YOLO is session-scoped: once on, it's on for everything that session does. If you'd rather decide &lt;strong&gt;per task&lt;/strong&gt;, and answer prompts from somewhere other than the terminal, you can route the Copilot CLI through &lt;a href="https://agentrq.com" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt; via the &lt;a href="https://agentrq.com/docs/connect-acp-agent" rel="noopener noreferrer"&gt;ACP Gateway&lt;/a&gt; (&lt;a href="https://agentrq.com/docs/agents/github-copilot" rel="noopener noreferrer"&gt;Copilot setup guide&lt;/a&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @agentrq/acp-gateway@latest &lt;span class="nt"&gt;--agent&lt;/span&gt; github-copilot-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This covers the Copilot CLI only; Copilot Chat in VS Code keeps its own picker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start Copilot without &lt;code&gt;--yolo&lt;/code&gt;.&lt;/strong&gt; The gateway moves each new session out of any mode that would approve on its own and into one where Copilot asks a person. Every permission request then lands in the AgentRQ task (web, phone or Slack) with the command or edit attached, and you answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Allow Once&lt;/strong&gt;: this call only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always Allow&lt;/strong&gt;: adds the tool to the workspace's auto-approved list, so routine calls stop asking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deny&lt;/strong&gt;: Copilot gets a refusal and carries on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If nobody answers within 30 minutes, the gateway cancels the turn rather than guessing; tune that with &lt;code&gt;--permission-timeout&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per task.&lt;/strong&gt; Flip the &lt;strong&gt;YOLO&lt;/strong&gt; toggle on a task, or set it when you create one, to put just that task in &lt;a href="https://agentrq.com/features/yolo-mode" rel="noopener noreferrer"&gt;YOLO mode&lt;/a&gt;. Every permission request in it is auto-approved and Copilot never waits, while every other task in the workspace still asks. The setting sticks to the task even if the agent disconnects and reconnects. Scheduled tasks, event triggers and workflow steps have the same switch, so the nightly job can run in YOLO while your interactive work stays supervised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per workspace.&lt;/strong&gt; Workspace settings has &lt;strong&gt;YOLO Mode (Execute All)&lt;/strong&gt; (UI warning: "Agent will not ask for permission"). Under the hood it's a default, not a global override: the approval check reads the task's own YOLO flag, and the workspace switch decides what that flag starts as. New tasks you create in the web form open with the YOLO toggle already on (you can still switch it off per task), and tasks the agent creates for itself over the workspace MCP server inherit it. Flipping the switch doesn't rewrite tasks that already exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or let a model approve and deny for you, from plain-English rules.&lt;/strong&gt; Between "ask me every time" and "approve everything" there's a third option: an &lt;a href="https://github.com/agentrq/agentrq/blob/main/docs/EXTENSIONS.md" rel="noopener noreferrer"&gt;AgentRQ desktop extension&lt;/a&gt; that reviews each permission request before it reaches you. Extensions are trusted Node modules loaded by the AgentRQ desktop app. One registers a reviewer with &lt;code&gt;ctx.hooks.add({ id, review(request) { ... } })&lt;/code&gt; and is handed the pending call: the tool name, the argument preview the harness sent, and the workspace. It answers &lt;code&gt;{ behavior: 'deny', reason }&lt;/code&gt;, &lt;code&gt;{ behavior: 'allow' }&lt;/code&gt;, or nothing at all to abstain. Point &lt;code&gt;review()&lt;/code&gt; at an external decision API such as &lt;a href="https://agentrq.com/blog/jev-system-one-models" rel="noopener noreferrer"&gt;TypeSafe's Jev&lt;/a&gt;, a "System One" model that returns a typed &lt;code&gt;choice&lt;/code&gt; with calibrated &lt;code&gt;probabilities&lt;/code&gt; and a &lt;code&gt;confidence&lt;/code&gt; in milliseconds instead of generating text. Send the tool call as the state, and your workspace's rules in plain English ("git push is fine on feature branches, never on main", "never read anything under ~/.aws") as a Choice question over allow / deny / ask me. Then threshold it: approve only on a high-confidence allow, refuse on a confident deny, and abstain on everything else so the request lands on your phone as usual. The rules can live on a per-workspace settings tab the extension draws itself; the bundled &lt;code&gt;guardrail&lt;/code&gt; example does exactly that with literal patterns.&lt;/p&gt;

&lt;p&gt;The review contract is built on one asymmetry: refusing costs a tool call, approving costs whatever the tool call does. So one refusal settles a request; silence (an abstain, an exception, or a reviewer that misses its 5-second deadline) is never an allow, the request just stays in front of you; and an extension needs the &lt;code&gt;decide&lt;/code&gt; consent level to approve, while &lt;code&gt;deny&lt;/code&gt; consent can only refuse. The install screen starts every extension at &lt;code&gt;none&lt;/code&gt;. Reviews only happen while the desktop app is open and signed in, so treat this as a fast first pass, not a security boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-off.&lt;/strong&gt; Workspace-wide is one click and zero prompts, but it outlives the job you actually trusted: the next task inherits it whether you meant to or not. Per-task YOLO expires with the task. Our default is the workspace switch off, per-task YOLO for the jobs you've vetted, &lt;strong&gt;Always Allow&lt;/strong&gt; for the boring tools, the sandbox on, and a clean git tree before every YOLO run. The tool call history keeps a record of every call, including the auto-approved ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is &lt;code&gt;copilot --yolo&lt;/code&gt; the same as &lt;code&gt;--allow-all&lt;/code&gt;?&lt;/strong&gt; Yes. Same flag: tools, paths and URLs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does &lt;code&gt;--yolo&lt;/code&gt; override &lt;code&gt;--deny-tool&lt;/code&gt;?&lt;/strong&gt; No. A deny always wins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why doesn't Shift+Tab turn on YOLO in the CLI?&lt;/strong&gt; It cycles standard, plan and autopilot. Use &lt;code&gt;/yolo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I make Allow all permanent in VS Code?&lt;/strong&gt; &lt;code&gt;"chat.tools.global.autoApprove": true&lt;/code&gt;, though the session-scoped picker level is the safer habit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Allow all disable the VS Code sandbox?&lt;/strong&gt; No. An enabled sandbox still restricts terminal filesystem and network access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Autopilot YOLO?&lt;/strong&gt; No. Autopilot keeps the agent going; YOLO approves its tool calls.&lt;/p&gt;

&lt;p&gt;For every other agent, see &lt;a href="https://agentrq.com/blog/what-is-yolo-mode-and-how-to-turn-it-on-in-every-coding-agent" rel="noopener noreferrer"&gt;what YOLO mode is and how to turn it on in every coding agent&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your turn:&lt;/strong&gt; do you run Copilot with &lt;code&gt;--yolo&lt;/code&gt; plus a couple of &lt;code&gt;--deny-tool&lt;/code&gt; guards, or do you trust the assisted classifier more than your own regexes? Tell me your setup in the comments.&lt;/p&gt;




&lt;p&gt;Originally published on &lt;a href="https://agentrq.com/guidelines/yolo-mode/github-copilot" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>vscode</category>
      <category>ai</category>
      <category>security</category>
    </item>
    <item>
      <title>Gemini CLI YOLO mode, read from the source: why settings.json can't turn it on</title>
      <dc:creator>Tony</dc:creator>
      <pubDate>Mon, 12 Oct 2026 18:01:40 +0000</pubDate>
      <link>https://dev.to/agentrq/gemini-cli-yolo-mode-read-from-the-source-why-settingsjson-cant-turn-it-on-2kma</link>
      <guid>https://dev.to/agentrq/gemini-cli-yolo-mode-read-from-the-source-why-settingsjson-cant-turn-it-on-2kma</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start YOLO with &lt;code&gt;gemini --approval-mode=yolo&lt;/code&gt;, or press &lt;strong&gt;Ctrl+Y&lt;/strong&gt; in a running session. &lt;code&gt;--yolo&lt;/code&gt; / &lt;code&gt;-y&lt;/code&gt; still work but are deprecated, and combining &lt;code&gt;--yolo&lt;/code&gt; with &lt;code&gt;--approval-mode&lt;/code&gt; is an error.&lt;/li&gt;
&lt;li&gt;You &lt;strong&gt;cannot&lt;/strong&gt; make YOLO the default in &lt;code&gt;settings.json&lt;/code&gt;. That's a deliberate design choice, and the code that enforces it is three lines long.&lt;/li&gt;
&lt;li&gt;YOLO only removes approval prompts. The sandbox (Seatbelt, Docker, Podman, gVisor, LXC) is a separate switch, and in the current source YOLO never turns it on.&lt;/li&gt;
&lt;li&gt;In an untrusted folder, any mode other than &lt;code&gt;default&lt;/code&gt; gets forced back to &lt;code&gt;default&lt;/code&gt;. If &lt;code&gt;security.disableYoloMode&lt;/code&gt; or admin secure mode is set, asking for YOLO is a fatal config error, not a silent downgrade.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything below was checked against the Gemini CLI source (google-gemini/gemini-cli, &lt;code&gt;0.65.0-nightly.20261006&lt;/code&gt;) and its docs, on October 7–8, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is this even for in late 2026?
&lt;/h2&gt;

&lt;p&gt;Short version: Gemini CLI users with a Gemini Code Assist &lt;strong&gt;Standard or Enterprise&lt;/strong&gt; license.&lt;/p&gt;

&lt;p&gt;Since June 18, 2026, Gemini CLI no longer serves Google AI Pro, Ultra or free Code Assist users. Google moved them to the Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;), which has a different YOLO story (it's &lt;code&gt;agy --dangerously-skip-permissions&lt;/code&gt;, and there's no &lt;code&gt;--yolo&lt;/code&gt; at all). Gemini CLI is still developed, though, and the approval code is worth reading on its own. It's one of the cleaner permission designs among coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does Gemini CLI actually do with an approval mode?
&lt;/h2&gt;

&lt;p&gt;There are four modes: &lt;code&gt;default&lt;/code&gt;, &lt;code&gt;auto_edit&lt;/code&gt;, &lt;code&gt;plan&lt;/code&gt; and &lt;code&gt;yolo&lt;/code&gt;. Here's how the CLI picks one at startup, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;--approval-mode &amp;lt;x&amp;gt;&lt;/code&gt; on the command line&lt;/li&gt;
&lt;li&gt;else &lt;code&gt;--yolo&lt;/code&gt; / &lt;code&gt;-y&lt;/code&gt;, which maps to &lt;code&gt;yolo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;else &lt;code&gt;general.defaultApprovalMode&lt;/code&gt; from settings, &lt;strong&gt;unless its value is &lt;code&gt;yolo&lt;/code&gt;, in which case it's skipped&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;else &lt;code&gt;default&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 3 is the interesting one. The resolver doesn't reject a &lt;code&gt;"yolo"&lt;/code&gt; value in settings. It just reads past it, as if the key weren't there. The settings schema says it outright: YOLO "can only be enabled via command line".&lt;/p&gt;

&lt;p&gt;Two gates come after the mode is resolved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kill switch.&lt;/strong&gt; If &lt;code&gt;security.disableYoloMode&lt;/code&gt; or &lt;code&gt;admin.secureModeEnabled&lt;/code&gt; is set and the resolved mode is YOLO, startup throws a &lt;code&gt;FatalConfigError&lt;/code&gt;. It doesn't quietly drop you to &lt;code&gt;default&lt;/code&gt;. You asked for something that's banned, and the CLI tells you so.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Folder trust.&lt;/strong&gt; If the current folder isn't trusted, any mode other than &lt;code&gt;default&lt;/code&gt; gets forced back to &lt;code&gt;default&lt;/code&gt;, with a warning. This one applies to &lt;code&gt;auto_edit&lt;/code&gt; and &lt;code&gt;plan&lt;/code&gt; too, not just YOLO.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why can't I just put "yolo" in settings.json?
&lt;/h2&gt;

&lt;p&gt;The threat model is a cloned repo.&lt;/p&gt;

&lt;p&gt;Gemini CLI merges settings from several layers, and one of them is the workspace's own &lt;code&gt;.gemini/settings.json&lt;/code&gt;. If a project file could set &lt;code&gt;defaultApprovalMode: "yolo"&lt;/code&gt;, then &lt;code&gt;git clone evil-repo &amp;amp;&amp;amp; cd evil-repo &amp;amp;&amp;amp; gemini&lt;/code&gt; would hand an attacker-controlled &lt;code&gt;GEMINI.md&lt;/code&gt; an agent that never asks before running a shell command. Prompt injection plus auto-approval is the worst combination in agent security.&lt;/p&gt;

&lt;p&gt;So the rule is: YOLO has to come from a human typing a flag (or a key) in this process. Settings can make you &lt;strong&gt;more&lt;/strong&gt; cautious (&lt;code&gt;disableYoloMode&lt;/code&gt;, &lt;code&gt;secureModeEnabled&lt;/code&gt;, folder trust), but never less. If you want YOLO every time, the supported answer is a shell alias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;gemini-yolo&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'gemini --approval-mode=yolo --sandbox'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compare that with Qwen Code, Gemini CLI's fork, which &lt;strong&gt;does&lt;/strong&gt; allow &lt;code&gt;tools.approvalMode: "yolo"&lt;/code&gt; in settings. It pushes the protection down to folder trust instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does YOLO turn the sandbox on?
&lt;/h2&gt;

&lt;p&gt;Not in the current code, whatever one older config page says.&lt;/p&gt;

&lt;p&gt;Gemini CLI has two independent layers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it gates&lt;/th&gt;
&lt;th&gt;Switch&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Approval mode&lt;/td&gt;
&lt;td&gt;Whether a human confirms each tool call&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--approval-mode&lt;/code&gt;, Ctrl+Y, Shift+Tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sandbox&lt;/td&gt;
&lt;td&gt;What a tool call can touch once it runs&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--sandbox&lt;/code&gt;, &lt;code&gt;GEMINI_SANDBOX&lt;/code&gt;, &lt;code&gt;tools.sandbox&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The sandbox resolver never reads the approval mode. With nothing set, it returns "no sandbox". Here's what you get when you turn it on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;macOS, &lt;code&gt;sandbox: true&lt;/code&gt;:&lt;/strong&gt; &lt;code&gt;sandbox-exec&lt;/code&gt; (Seatbelt) is picked first. The default profile is &lt;code&gt;permissive-open&lt;/code&gt;. Despite the name, it starts from &lt;code&gt;(deny default)&lt;/code&gt;, allows file reads anywhere, and allows writes only to the project dir, temp, cache, &lt;code&gt;~/.npm&lt;/code&gt;, &lt;code&gt;~/.cache&lt;/code&gt; and any &lt;code&gt;--include-directories&lt;/code&gt;. It also explicitly blocks the Docker socket and writes to &lt;code&gt;~/.gemini&lt;/code&gt; credential files (&lt;code&gt;oauth_creds.json&lt;/code&gt;, &lt;code&gt;mcp-oauth-tokens.json&lt;/code&gt;, …). Pick another built-in profile with &lt;code&gt;SEATBELT_PROFILE&lt;/code&gt;: &lt;code&gt;permissive-*&lt;/code&gt; and &lt;code&gt;restrictive-*&lt;/code&gt; come in &lt;code&gt;-open&lt;/code&gt;, &lt;code&gt;-closed&lt;/code&gt; and &lt;code&gt;-proxied&lt;/code&gt; network flavors, and &lt;code&gt;strict-*&lt;/code&gt; in &lt;code&gt;-open&lt;/code&gt; and &lt;code&gt;-proxied&lt;/code&gt;. Anything not on that list is rejected, which also stops path traversal through the variable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux/other, &lt;code&gt;sandbox: true&lt;/code&gt;:&lt;/strong&gt; Docker, then Podman, whichever exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit only:&lt;/strong&gt; &lt;code&gt;runsc&lt;/code&gt; (gVisor, Linux only, run via Docker's &lt;code&gt;--runtime=runsc&lt;/code&gt;), &lt;code&gt;lxc&lt;/code&gt; (needs a container you already have running, so it's never auto-detected) and &lt;code&gt;windows-native&lt;/code&gt; (Windows only).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A wrong value fails fast. &lt;code&gt;GEMINI_SANDBOX=runsc&lt;/code&gt; on a Mac, or &lt;code&gt;true&lt;/code&gt; with neither Docker nor Podman installed, is a fatal error, not a silent run without a sandbox.&lt;/p&gt;

&lt;p&gt;The point: YOLO plus a sandbox is a reasonable setup. YOLO without one means "run anything with my user's full privileges". Pass &lt;code&gt;--sandbox&lt;/code&gt; yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do Ctrl+Y and Shift+Tab interact?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl+Y&lt;/strong&gt; toggles between YOLO and &lt;code&gt;default&lt;/code&gt;. This is the only in-session way &lt;strong&gt;into&lt;/strong&gt; YOLO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shift+Tab&lt;/strong&gt; cycles &lt;code&gt;default → auto_edit → plan&lt;/code&gt; (plan only if it's enabled). It never lands on YOLO. If you're in YOLO and press it, you drop to &lt;code&gt;auto_edit&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small design choice, sensible result: the key you hit all the time can't take you to the dangerous mode by accident.&lt;/p&gt;

&lt;p&gt;One more thing: &lt;code&gt;--yolo&lt;/code&gt; together with &lt;code&gt;--approval-mode&lt;/code&gt; doesn't pick a winner. It's a validation error. Ambiguous intent fails at the door.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens in CI and headless runs?
&lt;/h2&gt;

&lt;p&gt;This edge case trips people up. In non-interactive mode (&lt;code&gt;gemini -p "…"&lt;/code&gt;) there's nobody to answer a prompt, and the policy engine handles that by &lt;strong&gt;translating &lt;code&gt;ask_user&lt;/code&gt; decisions into &lt;code&gt;deny&lt;/code&gt;&lt;/strong&gt;. So in headless &lt;code&gt;default&lt;/code&gt; mode, a tool call that would have asked simply doesn't run.&lt;/p&gt;

&lt;p&gt;Belt and braces: the CLI also removes &lt;code&gt;ask_user&lt;/code&gt;, the tool the model uses to ask you a question, from the toolset in headless and ACP modes. The source comment says why: so that "it can never be allowed via a high-priority policy rule when no human is present". In ACP mode the IDE or client does the asking instead.&lt;/p&gt;

&lt;p&gt;So headless, your options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--approval-mode=yolo&lt;/code&gt;, ideally with &lt;code&gt;--sandbox&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--approval-mode=auto_edit&lt;/code&gt;, plus policy rules that allow the shell commands you need&lt;/li&gt;
&lt;li&gt;or a policy file that says &lt;code&gt;allow&lt;/code&gt; for exactly the tools the job uses&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What are the halfway options?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;auto_edit&lt;/code&gt;&lt;/strong&gt; approves file edits and still asks before shell commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;tools.allowed&lt;/code&gt;&lt;/strong&gt; lists tool patterns that skip the prompt, such as &lt;code&gt;run_shell_command(git)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The policy engine&lt;/strong&gt; is the recommended route: TOML files in &lt;code&gt;~/.gemini/policies/&lt;/code&gt; with &lt;code&gt;allow&lt;/code&gt; / &lt;code&gt;deny&lt;/code&gt; / &lt;code&gt;ask_user&lt;/code&gt; rules, which can be scoped to a mode (including YOLO). &lt;code&gt;--allowed-tools&lt;/code&gt; on the command line is deprecated in its favour.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the Gemini Code Assist extension in VS Code, set &lt;code&gt;"geminicodeassist.agentYoloMode": true&lt;/code&gt; in user settings and reload the window. Note the familiar rule again: it only works in a &lt;strong&gt;trusted&lt;/strong&gt; workspace. In IntelliJ, the matching option is &lt;strong&gt;Auto-approve changes&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I turn on YOLO per task or per workspace with AgentRQ?
&lt;/h2&gt;

&lt;p&gt;Gemini CLI's switch is per process: you either started with &lt;code&gt;--approval-mode=yolo&lt;/code&gt; or you didn't. &lt;a href="https://agentrq.com" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt; moves that decision onto the task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Connect Gemini CLI.&lt;/strong&gt; It goes through the &lt;a href="https://agentrq.com/docs/connect-acp-agent" rel="noopener noreferrer"&gt;ACP Gateway&lt;/a&gt;. The &lt;a href="https://agentrq.com/docs/agents/gemini-cli" rel="noopener noreferrer"&gt;Gemini CLI setup guide&lt;/a&gt; and the &lt;a href="https://agentrq.com/blog/agentrq-acp-gateway-gemini-cli" rel="noopener noreferrer"&gt;step-by-step post&lt;/a&gt; have the details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @agentrq/acp-gateway@latest &lt;span class="nt"&gt;--agent&lt;/span&gt; gemini
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start it &lt;strong&gt;without&lt;/strong&gt; &lt;code&gt;--approval-mode=yolo&lt;/code&gt;. The gateway also moves each new session out of any mode that would approve on its own and into one where Gemini CLI asks a person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Answer from anywhere.&lt;/strong&gt; Each permission request shows up in the AgentRQ task, on the web, on your phone or in Slack, along with the command or edit it's asking about. You answer &lt;strong&gt;Allow Once&lt;/strong&gt;, &lt;strong&gt;Always Allow&lt;/strong&gt; (adds the tool to the workspace's auto-approved list) or &lt;strong&gt;Deny&lt;/strong&gt;. If nobody answers within 30 minutes, the gateway cancels the turn instead of guessing. &lt;code&gt;--permission-timeout&lt;/code&gt; changes that limit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3a. YOLO for one task.&lt;/strong&gt; Flip the &lt;strong&gt;YOLO&lt;/strong&gt; toggle on a task, or when you create it. Every permission request in that task is approved automatically, while every other task in the workspace still asks. The flag lives on the task, so it persists across agent disconnects and reconnects. &lt;a href="https://agentrq.com/features/task-scheduling" rel="noopener noreferrer"&gt;Scheduled tasks&lt;/a&gt;, &lt;a href="https://agentrq.com/features/events" rel="noopener noreferrer"&gt;event triggers&lt;/a&gt; and &lt;a href="https://agentrq.com/features/workflows" rel="noopener noreferrer"&gt;workflow&lt;/a&gt; steps have the same switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3b. YOLO for the whole workspace.&lt;/strong&gt; Workspace settings has &lt;strong&gt;YOLO Mode (Execute All)&lt;/strong&gt; (UI warning: "Agent will not ask for permission"). Under the hood it's a default, not a global override: the approval check reads the task's own YOLO flag, and the workspace switch decides what that flag starts as. New tasks you create in the web form open with the YOLO toggle already on (you can still switch it off per task), and tasks the agent creates for itself over the workspace MCP server inherit it. Flipping the switch doesn't rewrite tasks that already exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or let a model approve and deny for you, from plain-English rules.&lt;/strong&gt; Between "ask me every time" and "approve everything" there's a third option: an &lt;a href="https://github.com/agentrq/agentrq/blob/main/docs/EXTENSIONS.md" rel="noopener noreferrer"&gt;AgentRQ desktop extension&lt;/a&gt; that reviews each permission request before it reaches you. Extensions are trusted Node modules loaded by the AgentRQ desktop app. One registers a reviewer with &lt;code&gt;ctx.hooks.add({ id, review(request) { ... } })&lt;/code&gt; and is handed the pending call: the tool name, the argument preview the harness sent, and the workspace. It answers &lt;code&gt;{ behavior: 'deny', reason }&lt;/code&gt;, &lt;code&gt;{ behavior: 'allow' }&lt;/code&gt;, or nothing at all to abstain. Point &lt;code&gt;review()&lt;/code&gt; at an external decision API such as &lt;a href="https://agentrq.com/blog/jev-system-one-models" rel="noopener noreferrer"&gt;TypeSafe's Jev&lt;/a&gt;, a "System One" model that returns a typed &lt;code&gt;choice&lt;/code&gt; with calibrated &lt;code&gt;probabilities&lt;/code&gt; and a &lt;code&gt;confidence&lt;/code&gt; in milliseconds instead of generating text. Send the tool call as the state, and your workspace's rules in plain English ("git push is fine on feature branches, never on main", "never read anything under ~/.aws") as a Choice question over allow / deny / ask me. Then threshold it: approve only on a high-confidence allow, refuse on a confident deny, and abstain on everything else so the request lands on your phone as usual. The rules can live on a per-workspace settings tab the extension draws itself; the bundled &lt;code&gt;guardrail&lt;/code&gt; example does exactly that with literal patterns.&lt;/p&gt;

&lt;p&gt;The review contract is built on one asymmetry: refusing costs a tool call, approving costs whatever the tool call does. So one refusal settles a request; silence (an abstain, an exception, or a reviewer that misses its 5-second deadline) is never an allow, the request just stays in front of you; and an extension needs the &lt;code&gt;decide&lt;/code&gt; consent level to approve, while &lt;code&gt;deny&lt;/code&gt; consent can only refuse. The install screen starts every extension at &lt;code&gt;none&lt;/code&gt;. Reviews only happen while the desktop app is open and signed in, so treat this as a fast first pass, not a security boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-off.&lt;/strong&gt; Per-task YOLO is scoped trust: it ends when the job you vetted ends, and an unattended nightly job can run in YOLO while your interactive work stays supervised. Workspace-wide YOLO is easier, but it outlives any single decision you made, and every new task inherits it. The setup that holds up: leave the workspace switch off, use per-task YOLO, keep &lt;code&gt;GEMINI_SANDBOX=true&lt;/code&gt; (or &lt;code&gt;"tools": {"sandbox": true}&lt;/code&gt;) so the auto-approved commands still run in a container, start from a clean git tree, and read the &lt;a href="https://agentrq.com/features/tool-call-history" rel="noopener noreferrer"&gt;tool call history&lt;/a&gt; afterwards. More on the per-task model: &lt;a href="https://agentrq.com/features/yolo-mode" rel="noopener noreferrer"&gt;AgentRQ YOLO mode&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is &lt;code&gt;gemini --yolo&lt;/code&gt; still a thing?&lt;/strong&gt; It works, but it's deprecated. Use &lt;code&gt;--approval-mode=yolo&lt;/code&gt;, and don't pass both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I make YOLO the default in settings.json?&lt;/strong&gt; No. The resolver skips &lt;code&gt;"yolo"&lt;/code&gt; in &lt;code&gt;defaultApprovalMode&lt;/code&gt;. Use a shell alias.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does Ctrl+Y do?&lt;/strong&gt; It toggles YOLO ↔ default in the running session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does YOLO enable the sandbox?&lt;/strong&gt; Not in the current source. Add &lt;code&gt;--sandbox&lt;/code&gt; or set &lt;code&gt;GEMINI_SANDBOX&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does Gemini CLI refuse to start with &lt;code&gt;--yolo&lt;/code&gt;?&lt;/strong&gt; &lt;code&gt;security.disableYoloMode&lt;/code&gt; or &lt;code&gt;admin.secureModeEnabled&lt;/code&gt; is set. That's a fatal error by design. If it starts but drops you to &lt;code&gt;default&lt;/code&gt;, the folder isn't trusted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do my tool calls silently not run in &lt;code&gt;gemini -p&lt;/code&gt;?&lt;/strong&gt; Headless mode turns "ask" into "deny". Use YOLO (with a sandbox), &lt;code&gt;auto_edit&lt;/code&gt;, or allow rules in a policy file.&lt;/p&gt;

&lt;p&gt;For every other agent, see &lt;a href="https://agentrq.com/blog/what-is-yolo-mode-and-how-to-turn-it-on-in-every-coding-agent" rel="noopener noreferrer"&gt;what YOLO mode is and how to turn it on in every coding agent&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Over to you: do you think "YOLO only from a flag, never from settings" is the right call, or should a tool trust your user-level config the way Qwen Code does? And if you run Gemini CLI in CI, which sandbox backend did you end up on? 👇&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://agentrq.com/guidelines/yolo-mode/gemini-cli" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>cli</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Codex CLI YOLO mode: two knobs, one flag, and why --yolo also kills the sandbox</title>
      <dc:creator>Tony</dc:creator>
      <pubDate>Sat, 10 Oct 2026 15:30:53 +0000</pubDate>
      <link>https://dev.to/agentrq/codex-cli-yolo-mode-two-knobs-one-flag-and-why-yolo-also-kills-the-sandbox-13ja</link>
      <guid>https://dev.to/agentrq/codex-cli-yolo-mode-two-knobs-one-flag-and-why-yolo-also-kills-the-sandbox-13ja</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;codex --yolo&lt;/code&gt; is a short alias of &lt;code&gt;--dangerously-bypass-approvals-and-sandbox&lt;/code&gt;. It sets &lt;strong&gt;approvals to &lt;code&gt;never&lt;/code&gt;&lt;/strong&gt; &lt;em&gt;and&lt;/em&gt; &lt;strong&gt;the sandbox to &lt;code&gt;danger-full-access&lt;/code&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;That second part is unusual. Claude Code's and Gemini CLI's YOLO modes skip prompts but leave sandboxing alone. Codex's removes both.&lt;/li&gt;
&lt;li&gt;The two knobs are orthogonal: &lt;code&gt;-a never -s workspace-write&lt;/code&gt; gives you "never ask, but stay fenced", which is what most people actually want.&lt;/li&gt;
&lt;li&gt;The sandbox is real OS isolation: &lt;strong&gt;Seatbelt&lt;/strong&gt; (&lt;code&gt;sandbox-exec&lt;/code&gt;) on macOS, &lt;strong&gt;bubblewrap + seccomp&lt;/strong&gt; on Linux/WSL2, a native sandbox on Windows, and &lt;strong&gt;nothing&lt;/strong&gt; on WSL1.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;codex exec&lt;/code&gt; never asks for approval, so in CI the sandbox is the &lt;em&gt;only&lt;/em&gt; knob that matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every flag below was checked against openai/codex at commit 72c9595 (release 0.161.0), &lt;code&gt;@agentclientprotocol/codex-acp&lt;/code&gt; 2.1.1 and OpenAI's Codex docs on October 7, 2026.&lt;/p&gt;




&lt;h2&gt;
  
  
  What are the two knobs?
&lt;/h2&gt;

&lt;p&gt;Codex models safety as two independent dimensions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Knob&lt;/th&gt;
&lt;th&gt;Config key&lt;/th&gt;
&lt;th&gt;CLI flag&lt;/th&gt;
&lt;th&gt;Values&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When to ask you&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;approval_policy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;-a&lt;/code&gt; / &lt;code&gt;--ask-for-approval&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;on-request&lt;/code&gt; (default), &lt;code&gt;never&lt;/code&gt;, or a &lt;code&gt;granular&lt;/code&gt; table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What a command can reach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;-s&lt;/code&gt; / &lt;code&gt;--sandbox&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;read-only&lt;/code&gt;, &lt;code&gt;workspace-write&lt;/code&gt;, &lt;code&gt;danger-full-access&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;on-request&lt;/code&gt; means the model may stop and ask whenever it wants to do something the sandbox would block. The sandbox then decides, at the OS level, which files are writable and whether there's network.&lt;/p&gt;

&lt;p&gt;Because the knobs are independent, you get a 2×3 grid of behaviours. The interesting cells:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;-a&lt;/span&gt; never &lt;span class="nt"&gt;-s&lt;/span&gt; danger-full-access   &lt;span class="c"&gt;# == codex --yolo&lt;/span&gt;
codex &lt;span class="nt"&gt;-a&lt;/span&gt; never &lt;span class="nt"&gt;-s&lt;/span&gt; workspace-write      &lt;span class="c"&gt;# never asks, still fenced&lt;/span&gt;
codex &lt;span class="nt"&gt;-a&lt;/span&gt; on-request &lt;span class="nt"&gt;-s&lt;/span&gt; danger-full-access  &lt;span class="c"&gt;# no fence, may still ask (rarely does)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The middle one has a lovely failure mode: when a command needs more than the sandbox allows, it simply &lt;strong&gt;fails&lt;/strong&gt;, and the error goes back to the model to work around. No human in the loop, but no escape either.&lt;/p&gt;

&lt;p&gt;On the CLI, &lt;code&gt;-a&lt;/code&gt; only accepts &lt;code&gt;on-request&lt;/code&gt; and &lt;code&gt;never&lt;/code&gt;. Combining flags that both set a knob is rejected: &lt;code&gt;--yolo&lt;/code&gt; can't be combined with &lt;code&gt;-a&lt;/code&gt;, and &lt;code&gt;--approve-for-me&lt;/code&gt; can't be combined with &lt;code&gt;-a&lt;/code&gt;, &lt;code&gt;-s&lt;/code&gt; or &lt;code&gt;--yolo&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does Codex's YOLO also drop the sandbox?
&lt;/h2&gt;

&lt;p&gt;Because the flag's own help text says it's meant for environments that are &lt;strong&gt;already sandboxed from the outside&lt;/strong&gt; (it calls itself "EXTREMELY DANGEROUS"). The design assumption is: if you're telling Codex "never ask", you're probably in a container, VM or CI runner where an inner sandbox is just friction. That assumption is great in CI and terrible on your laptop.&lt;/p&gt;

&lt;p&gt;Here's what &lt;code&gt;danger-full-access&lt;/code&gt; actually means. Not "the project". Everything &lt;strong&gt;your user account&lt;/strong&gt; can reach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every file you can read or write: &lt;code&gt;~/.ssh&lt;/code&gt;, &lt;code&gt;~/.aws&lt;/code&gt;, &lt;code&gt;~/.config/gcloud&lt;/code&gt;, browser profiles, other repos, dotfiles.&lt;/li&gt;
&lt;li&gt;Unrestricted network: download-and-run, call APIs with any token it finds, exfiltrate anything.&lt;/li&gt;
&lt;li&gt;Your git identity: &lt;code&gt;.git&lt;/code&gt; is no longer protected, so history rewrites and &lt;code&gt;git push --force&lt;/code&gt; go out as you.&lt;/li&gt;
&lt;li&gt;Every exported env var in the shell that started Codex.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now add prompt injection. A malicious instruction in a README, an issue, or a fetched web page can steer the model, and with YOLO on nothing pauses to ask you.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is the sandbox actually built?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Mechanism&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;Seatbelt via &lt;code&gt;sandbox-exec&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Built into the OS, nothing to install&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;td&gt;bubblewrap + a seccomp network filter&lt;/td&gt;
&lt;td&gt;Uses &lt;code&gt;bwrap&lt;/code&gt; from &lt;code&gt;PATH&lt;/code&gt; or a bundled copy. The old Landlock backend is legacy and refused for filesystem-restricted policies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WSL2&lt;/td&gt;
&lt;td&gt;Same as Linux&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WSL1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;None&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WSL1 can't create the user namespaces bubblewrap needs, so Codex refuses sandboxed commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Native Windows&lt;/td&gt;
&lt;td&gt;Codex's own sandbox&lt;/td&gt;
&lt;td&gt;Unelevated and elevated variants; &lt;code&gt;/setup-default-sandbox&lt;/code&gt; sets up the elevated one&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Linux one is the gotcha. bubblewrap needs &lt;strong&gt;unprivileged user namespaces&lt;/strong&gt;. Inside an unprivileged container they're often unavailable, you get a startup warning, and the sandbox can't start. That's the one situation where running &lt;code&gt;--yolo&lt;/code&gt; inside a container is the normal setup rather than a shortcut: the container &lt;em&gt;is&lt;/em&gt; the sandbox.&lt;/p&gt;

&lt;p&gt;Even in &lt;code&gt;workspace-write&lt;/code&gt;, Codex keeps &lt;code&gt;.git&lt;/code&gt;, &lt;code&gt;.codex&lt;/code&gt; and &lt;code&gt;.agents&lt;/code&gt; &lt;strong&gt;read-only&lt;/strong&gt;, so it can't rewrite history or its own config without asking. That's a neat detail: the agent's own control plane is outside its write fence.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I get most of YOLO without dropping the fence?
&lt;/h2&gt;

&lt;p&gt;Most YOLO cravings come from two &lt;code&gt;workspace-write&lt;/code&gt; limits: no network, and no writes outside the project. Open them individually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;sandbox_mode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"workspace-write"&lt;/span&gt;
&lt;span class="py"&gt;approval_policy&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"never"&lt;/span&gt;

&lt;span class="nn"&gt;[sandbox_workspace_write]&lt;/span&gt;
&lt;span class="py"&gt;network_access&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;writable_roots&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"/Users/me/.cache/pip"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;network_access&lt;/code&gt; makes &lt;code&gt;npm install&lt;/code&gt;/&lt;code&gt;pip install&lt;/code&gt; work. &lt;code&gt;writable_roots&lt;/code&gt; (or &lt;code&gt;--add-dir &amp;lt;DIR&amp;gt;&lt;/code&gt; per run) adds folders. &lt;code&gt;exclude_tmpdir_env_var&lt;/code&gt; and &lt;code&gt;exclude_slash_tmp&lt;/code&gt; remove &lt;code&gt;$TMPDIR&lt;/code&gt; and &lt;code&gt;/tmp&lt;/code&gt; from the writable set if you want it tighter.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does config precedence work, and where does project trust fit?
&lt;/h2&gt;

&lt;p&gt;Codex reads &lt;code&gt;~/.codex/config.toml&lt;/code&gt; (or &lt;code&gt;$CODEX_HOME/config.toml&lt;/code&gt;). The YOLO default is just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;approval_policy&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"never"&lt;/span&gt;
&lt;span class="py"&gt;sandbox_mode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"danger-full-access"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few precedence rules worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;-c key=value&lt;/code&gt;&lt;/strong&gt; overrides any key for one run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission profiles&lt;/strong&gt;: &lt;code&gt;default_permissions = ":danger-full-access"&lt;/code&gt; (also &lt;code&gt;:workspace&lt;/code&gt;, &lt;code&gt;:read-only&lt;/code&gt;) is the newer form, and &lt;strong&gt;wins over &lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/strong&gt; when set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profiles&lt;/strong&gt;: &lt;code&gt;codex -p yolo&lt;/code&gt; layers &lt;code&gt;~/.codex/yolo.config.toml&lt;/code&gt; on top of your normal config. Keeping YOLO in a profile means it's opt-in per launch. (Old &lt;code&gt;[profiles.yolo]&lt;/code&gt; tables still load, but &lt;code&gt;-p&lt;/code&gt; now means the separate file.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed &lt;code&gt;requirements.toml&lt;/code&gt;&lt;/strong&gt;: an admin can forbid &lt;code&gt;never&lt;/code&gt; or &lt;code&gt;danger-full-access&lt;/code&gt;, and Codex falls back to the allowed default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retired value&lt;/strong&gt;: &lt;code&gt;approval_policy = "untrusted"&lt;/code&gt; is now a hard error at startup. &lt;code&gt;on-failure&lt;/code&gt; is still accepted as another name for &lt;code&gt;on-request&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project trust&lt;/strong&gt; is how Codex handles the "random cloned repo" problem. The first time you open a folder, Codex asks whether you trust it and records &lt;code&gt;trust_level = "trusted"&lt;/code&gt; under &lt;code&gt;[projects."/path"]&lt;/code&gt; in &lt;em&gt;your&lt;/em&gt; config. A trusted, version-controlled project starts in &lt;code&gt;workspace-write&lt;/code&gt; + &lt;code&gt;on-request&lt;/code&gt;; anything untrusted or not under version control starts &lt;strong&gt;read-only&lt;/strong&gt;. Trust only sets the &lt;em&gt;default&lt;/em&gt;: an explicit &lt;code&gt;--yolo&lt;/code&gt; or config key still wins. The point is that the decision lives in your home directory, not in the repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does the in-session switch work?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;/permissions&lt;/code&gt; opens a picker with three presets:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Preset&lt;/th&gt;
&lt;th&gt;Approvals&lt;/th&gt;
&lt;th&gt;Sandbox&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read Only&lt;/td&gt;
&lt;td&gt;on-request&lt;/td&gt;
&lt;td&gt;&lt;code&gt;read-only&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;on-request&lt;/td&gt;
&lt;td&gt;&lt;code&gt;workspace-write&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full Access&lt;/td&gt;
&lt;td&gt;never&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;danger-full-access&lt;/code&gt; (the YOLO preset)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;With the Auto-review experiment on, there's also an Auto-review mode that routes approvals to an automatic reviewer (the CLI equivalent is &lt;code&gt;--approve-for-me&lt;/code&gt;, hidden alias &lt;code&gt;--not-so-yolo&lt;/code&gt;, which pairs that reviewer with &lt;code&gt;workspace-write&lt;/code&gt;). &lt;code&gt;/approvals&lt;/code&gt; is gone; &lt;code&gt;/approve&lt;/code&gt; only retries one action the reviewer rejected. There's no keyboard shortcut to Full Access, which is deliberate friction.&lt;/p&gt;

&lt;p&gt;Gotcha: config is read at session start. Edit &lt;code&gt;config.toml&lt;/code&gt; mid-session and nothing changes until you restart or use &lt;code&gt;/permissions&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes in CI with codex exec?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;codex exec&lt;/code&gt; runs one task non-interactively. There's nobody to ask, so it &lt;strong&gt;never asks&lt;/strong&gt; and has no &lt;code&gt;-a&lt;/code&gt; flag. The sandbox is the only knob, and it &lt;strong&gt;defaults to read-only&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="s2"&gt;"summarize the open TODOs"&lt;/span&gt;                        &lt;span class="c"&gt;# read-only&lt;/span&gt;
codex &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;--sandbox&lt;/span&gt; workspace-write &lt;span class="s2"&gt;"fix the failing tests"&lt;/span&gt;
codex &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;--yolo&lt;/span&gt; &lt;span class="s2"&gt;"run the full release script"&lt;/span&gt;              &lt;span class="c"&gt;# no sandbox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;exec&lt;/code&gt; refuses to run outside a git repo unless you pass &lt;code&gt;--skip-git-repo-check&lt;/code&gt; (or &lt;code&gt;--yolo&lt;/code&gt;, which skips it too). &lt;code&gt;--json&lt;/code&gt; streams JSON Lines events; &lt;code&gt;-o &amp;lt;file&amp;gt;&lt;/code&gt; writes the final message. Use &lt;code&gt;CODEX_API_KEY&lt;/code&gt; scoped to that one step, not job-wide, if the workflow checks out untrusted code.&lt;/p&gt;

&lt;p&gt;On GitHub, &lt;code&gt;openai/codex-action@v1&lt;/code&gt; keeps the key behind a proxy, drops &lt;code&gt;sudo&lt;/code&gt; by default (&lt;code&gt;safety-strategy: drop-sudo&lt;/code&gt;), and takes &lt;code&gt;permission-profile: ":workspace"&lt;/code&gt;. A hosted runner is exactly the "outer sandbox" &lt;code&gt;--yolo&lt;/code&gt; assumes, but the workspace profile is usually enough.&lt;/p&gt;

&lt;p&gt;Two more things YOLO does &lt;strong&gt;not&lt;/strong&gt; skip: hooks still need to be trusted once (&lt;code&gt;--dangerously-bypass-hook-trust&lt;/code&gt; exists for automation that vets them), and &lt;code&gt;--full-auto&lt;/code&gt; is simply gone (use &lt;code&gt;-s workspace-write&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  How does YOLO map over ACP?
&lt;/h2&gt;

&lt;p&gt;Codex doesn't speak the Agent Client Protocol natively. &lt;code&gt;@agentclientprotocol/codex-acp&lt;/code&gt; is a stdio adapter that starts the Codex App Server and translates both ways. Over ACP there are no flags, just four session modes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ACP mode&lt;/th&gt;
&lt;th&gt;Approvals&lt;/th&gt;
&lt;th&gt;Sandbox&lt;/th&gt;
&lt;th&gt;CLI equivalent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;read-only&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;asks you&lt;/td&gt;
&lt;td&gt;read-only&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-s read-only&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;workspace-write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;asks you&lt;/td&gt;
&lt;td&gt;workspace-write&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/permissions&lt;/code&gt; Default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;agent&lt;/code&gt; (default)&lt;/td&gt;
&lt;td&gt;automatic reviewer&lt;/td&gt;
&lt;td&gt;workspace-write&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--approve-for-me&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agent-full-access&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;never&lt;/td&gt;
&lt;td&gt;danger-full-access&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--yolo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Note the default is &lt;code&gt;agent&lt;/code&gt;, so Codex over ACP doesn't ask you about most things even before YOLO. &lt;code&gt;INITIAL_AGENT_MODE=agent-full-access&lt;/code&gt; starts it in YOLO; &lt;code&gt;CODEX_CONFIG&lt;/code&gt; merges a JSON object into session config.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I turn on YOLO per task or per workspace with AgentRQ?
&lt;/h2&gt;

&lt;p&gt;Every Codex switch above is session-scoped. If you want YOLO for &lt;em&gt;one job&lt;/em&gt; and approvals for everything else, move the decision out of Codex and into a task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Connect Codex through the &lt;a href="https://agentrq.com/docs/connect-acp-agent" rel="noopener noreferrer"&gt;ACP Gateway&lt;/a&gt;&lt;/strong&gt; (&lt;a href="https://agentrq.com/docs/agents/codex-cli" rel="noopener noreferrer"&gt;Codex CLI ACP setup guide&lt;/a&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @agentrq/acp-gateway@latest &lt;span class="nt"&gt;--login&lt;/span&gt; &lt;span class="nt"&gt;--agent&lt;/span&gt; codex-acp   &lt;span class="c"&gt;# once&lt;/span&gt;
npx @agentrq/acp-gateway@latest &lt;span class="nt"&gt;--agent&lt;/span&gt; codex-acp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The gateway moves each new session out of any self-approving mode (Auto review, Full access) and into &lt;strong&gt;read-only&lt;/strong&gt;, so every edit and command comes to you as a permission request in the AgentRQ task, on the web, your phone or &lt;a href="https://agentrq.com/docs/integrations/slack" rel="noopener noreferrer"&gt;Slack&lt;/a&gt;. You answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Allow Once&lt;/strong&gt;: this call only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always Allow&lt;/strong&gt;: adds the tool to the workspace's auto-approved list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deny&lt;/strong&gt;: Codex gets the rejection; you can reply with what to do instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If nobody answers within 30 minutes, the gateway cancels the turn instead of guessing (&lt;code&gt;--permission-timeout&lt;/code&gt; changes it).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2a. Per task.&lt;/strong&gt; Flip the &lt;strong&gt;YOLO&lt;/strong&gt; toggle on a task, or set it at creation. Every permission request in that task is auto-approved; every other task still asks. &lt;a href="https://agentrq.com/features/task-scheduling" rel="noopener noreferrer"&gt;Scheduled tasks&lt;/a&gt;, &lt;a href="https://agentrq.com/features/events" rel="noopener noreferrer"&gt;event triggers&lt;/a&gt; and &lt;a href="https://agentrq.com/features/workflows" rel="noopener noreferrer"&gt;workflow&lt;/a&gt; steps have the same switch. The per-task flag persists across agent disconnects and reconnects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2b. Per workspace.&lt;/strong&gt; Workspace settings has &lt;strong&gt;YOLO Mode (Execute All)&lt;/strong&gt; (UI warning: "Agent will not ask for permission"). Under the hood it's a default, not a global override: the approval check reads the task's own YOLO flag, and the workspace switch decides what that flag starts as. New tasks you create in the web form open with the YOLO toggle already on (you can still switch it off per task), and tasks the agent creates for itself over the workspace MCP server inherit it. Flipping the switch doesn't rewrite tasks that already exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or let a model approve and deny for you, from plain-English rules.&lt;/strong&gt; Between "ask me every time" and "approve everything" there's a third option: an &lt;a href="https://github.com/agentrq/agentrq/blob/main/docs/EXTENSIONS.md" rel="noopener noreferrer"&gt;AgentRQ desktop extension&lt;/a&gt; that reviews each permission request before it reaches you. Extensions are trusted Node modules loaded by the AgentRQ desktop app. One registers a reviewer with &lt;code&gt;ctx.hooks.add({ id, review(request) { ... } })&lt;/code&gt; and is handed the pending call: the tool name, the argument preview the harness sent, and the workspace. It answers &lt;code&gt;{ behavior: 'deny', reason }&lt;/code&gt;, &lt;code&gt;{ behavior: 'allow' }&lt;/code&gt;, or nothing at all to abstain. Point &lt;code&gt;review()&lt;/code&gt; at an external decision API such as &lt;a href="https://agentrq.com/blog/jev-system-one-models" rel="noopener noreferrer"&gt;TypeSafe's Jev&lt;/a&gt;, a "System One" model that returns a typed &lt;code&gt;choice&lt;/code&gt; with calibrated &lt;code&gt;probabilities&lt;/code&gt; and a &lt;code&gt;confidence&lt;/code&gt; in milliseconds instead of generating text. Send the tool call as the state, and your workspace's rules in plain English ("git push is fine on feature branches, never on main", "never read anything under ~/.aws") as a Choice question over allow / deny / ask me. Then threshold it: approve only on a high-confidence allow, refuse on a confident deny, and abstain on everything else so the request lands on your phone as usual. The rules can live on a per-workspace settings tab the extension draws itself; the bundled &lt;code&gt;guardrail&lt;/code&gt; example does exactly that with literal patterns.&lt;/p&gt;

&lt;p&gt;The review contract is built on one asymmetry: refusing costs a tool call, approving costs whatever the tool call does. So one refusal settles a request; silence (an abstain, an exception, or a reviewer that misses its 5-second deadline) is never an allow, the request just stays in front of you; and an extension needs the &lt;code&gt;decide&lt;/code&gt; consent level to approve, while &lt;code&gt;deny&lt;/code&gt; consent can only refuse. The install screen starts every extension at &lt;code&gt;none&lt;/code&gt;. Reviews only happen while the desktop app is open and signed in, so treat this as a fast first pass, not a security boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-off.&lt;/strong&gt; Workspace-wide is AgentRQ's version of putting &lt;code&gt;approval_policy = "never"&lt;/code&gt; in your global config: zero friction, but it outlives the job you trusted. Per-task YOLO scopes it to one unit of work. Crucially, YOLO in AgentRQ only removes the &lt;em&gt;questions&lt;/em&gt;: Codex keeps the sandbox of the mode it's in, so it never turns into &lt;code&gt;danger-full-access&lt;/code&gt;. Concrete example: task A ("upgrade test deps and fix what breaks", YOLO on) runs to the end unattended; task B ("clean up the staging deploy script", YOLO off) pings your phone for &lt;code&gt;./deploy.sh --dry-run&lt;/code&gt; (Allow Once) and later &lt;code&gt;git push --force origin staging&lt;/code&gt; (Deny, "open a PR instead"). Same Codex, same gateway. Start YOLO tasks from a clean git tree and check the &lt;a href="https://agentrq.com/features/tool-call-history" rel="noopener noreferrer"&gt;tool call history&lt;/a&gt; afterwards. More in the &lt;a href="https://agentrq.com/features/yolo-mode" rel="noopener noreferrer"&gt;YOLO mode feature page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is &lt;code&gt;--yolo&lt;/code&gt; the same as &lt;code&gt;--dangerously-bypass-approvals-and-sandbox&lt;/code&gt;?&lt;/strong&gt; Yes, identical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I get no prompts but keep the sandbox?&lt;/strong&gt; &lt;code&gt;codex -a never -s workspace-write&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why "unexpected argument '--yolo'"?&lt;/strong&gt; Your Codex predates the alias. &lt;code&gt;npm install -g @openai/codex@latest&lt;/code&gt; or &lt;code&gt;brew upgrade --cask codex&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does Codex still ask in YOLO?&lt;/strong&gt; Config changed mid-session, only one of the two keys is set, an admin &lt;code&gt;requirements.toml&lt;/code&gt; forbids it, a hook awaits trust, or you're on ACP where the client picks the mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Codex sandbox work in WSL1?&lt;/strong&gt; No. Use WSL2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is &lt;code&gt;--full-auto&lt;/code&gt; YOLO?&lt;/strong&gt; It never was, and it's removed. Use &lt;code&gt;--sandbox workspace-write&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Comparing agents? Here's &lt;a href="https://agentrq.com/blog/what-is-yolo-mode-and-how-to-turn-it-on-in-every-coding-agent" rel="noopener noreferrer"&gt;YOLO mode in every coding agent&lt;/a&gt;, side by side.&lt;/p&gt;




&lt;p&gt;Where do you land: &lt;code&gt;--yolo&lt;/code&gt; only inside containers, or &lt;code&gt;-a never -s workspace-write&lt;/code&gt; with &lt;code&gt;network_access = true&lt;/code&gt; everywhere? And has anyone hit the bubblewrap user-namespace wall in their CI? Tell me in the comments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://agentrq.com/guidelines/yolo-mode/codex-cli" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codex</category>
      <category>security</category>
      <category>cli</category>
    </item>
    <item>
      <title>Claude Code YOLO mode: what --dangerously-skip-permissions really turns off (and what it doesn't)</title>
      <dc:creator>Tony</dc:creator>
      <pubDate>Fri, 09 Oct 2026 15:35:38 +0000</pubDate>
      <link>https://dev.to/agentrq/claude-code-yolo-mode-what-dangerously-skip-permissions-really-turns-off-and-what-it-doesnt-46h1</link>
      <guid>https://dev.to/agentrq/claude-code-yolo-mode-what-dangerously-skip-permissions-really-turns-off-and-what-it-doesnt-46h1</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code's YOLO mode is officially called &lt;strong&gt;bypass permissions&lt;/strong&gt;: &lt;code&gt;claude --dangerously-skip-permissions&lt;/code&gt;, which is exactly &lt;code&gt;claude --permission-mode bypassPermissions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It removes the &lt;strong&gt;permission prompts&lt;/strong&gt;. It does &lt;strong&gt;not&lt;/strong&gt; touch the &lt;strong&gt;Bash sandbox&lt;/strong&gt;, which is a separate, OS-enforced layer (Seatbelt on macOS, bubblewrap + socat on Linux/WSL2).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;deny&lt;/code&gt; rules, explicit &lt;code&gt;ask&lt;/code&gt; rules and the critical-path &lt;code&gt;rm&lt;/code&gt; guard still fire in bypass mode.&lt;/li&gt;
&lt;li&gt;A repo's own &lt;code&gt;.claude/settings.json&lt;/code&gt; &lt;strong&gt;cannot&lt;/strong&gt; switch YOLO on. Only user settings, managed settings or &lt;code&gt;--settings&lt;/code&gt; can.&lt;/li&gt;
&lt;li&gt;For most people, &lt;strong&gt;auto mode&lt;/strong&gt; (a classifier reviews each action) is the better "YOLO, but not stupid".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything here was checked against Anthropic's docs at code.claude.com and &lt;code&gt;claude --help&lt;/code&gt; from Claude Code 2.1.292 on October 7, 2026.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why does "skip permissions" not mean "no guardrails"?
&lt;/h2&gt;

&lt;p&gt;The first thing to internalize is that Claude Code has &lt;strong&gt;two independent safety layers&lt;/strong&gt;, and they're enforced in completely different places:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Enforced by&lt;/th&gt;
&lt;th&gt;What it gates&lt;/th&gt;
&lt;th&gt;Does YOLO remove it?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Permission prompts&lt;/td&gt;
&lt;td&gt;Claude Code itself, before a tool call runs&lt;/td&gt;
&lt;td&gt;Every tool call: Bash, Edit, Write, MCP tools…&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bash sandbox&lt;/td&gt;
&lt;td&gt;The operating system, while a command runs&lt;/td&gt;
&lt;td&gt;Filesystem writes and network egress of shell commands and their children&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The permission layer is a policy check in the agent's process: "is this tool call allowed, denied, or do I ask the human?" Bypass mode short-circuits the "ask" branch to "allow". Allow rules become irrelevant, because everything is allowed anyway.&lt;/p&gt;

&lt;p&gt;The sandbox is a different beast. When it's on, Claude Code wraps each shell command in an OS-level boundary built on Anthropic's open source &lt;code&gt;@anthropic-ai/sandbox-runtime&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;macOS:&lt;/strong&gt; the built-in &lt;strong&gt;Seatbelt&lt;/strong&gt; framework. Nothing to install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux and WSL2:&lt;/strong&gt; &lt;strong&gt;bubblewrap&lt;/strong&gt; for filesystem isolation and &lt;strong&gt;socat&lt;/strong&gt; to relay network traffic through the sandbox proxy (plus a seccomp filter; &lt;code&gt;/sandbox&lt;/code&gt; shows a Dependencies tab if any piece is missing).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native Windows:&lt;/strong&gt; no sandbox. Use WSL2.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By default a sandboxed command can write only to the working directory, a per-user temp dir and directories you've added. Network has &lt;em&gt;no direct route out&lt;/em&gt;: everything goes through a local proxy that checks each host against an allowlist that starts empty. That's why something like &lt;code&gt;curl --noproxy '*'&lt;/code&gt; just fails to resolve: there's no route around the proxy.&lt;/p&gt;

&lt;p&gt;So YOLO answers "should I ask?" and the sandbox answers "what can this process physically reach?". You can (and should) run them together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What survives bypass mode?
&lt;/h2&gt;

&lt;p&gt;Even with every prompt gone, these still apply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;deny&lt;/code&gt; rules&lt;/strong&gt; and &lt;strong&gt;explicit &lt;code&gt;ask&lt;/code&gt; rules&lt;/strong&gt; in your permission config.&lt;/li&gt;
&lt;li&gt;The guard against &lt;strong&gt;&lt;code&gt;rm&lt;/code&gt; on critical paths&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Questions Claude asks you directly&lt;/strong&gt; (it's still allowed to stop and ask).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The sandbox&lt;/strong&gt;, if you turned it on with &lt;code&gt;/sandbox&lt;/code&gt; or &lt;code&gt;"sandbox": {"enabled": true}&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's one sharp edge in that last point. When a command fails inside the sandbox (say, a tool that's incompatible with it, or a blocked host), Claude can retry it with a &lt;code&gt;dangerouslyDisableSandbox&lt;/code&gt; parameter. In &lt;code&gt;bypassPermissions&lt;/code&gt; mode, that unsandboxed retry &lt;strong&gt;runs without a prompt&lt;/strong&gt;. Two ways to close the hatch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sandbox"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allowUnsandboxedCommands"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With that set, Claude Code ignores &lt;code&gt;dangerouslyDisableSandbox&lt;/code&gt; entirely (the &lt;code&gt;/sandbox&lt;/code&gt; Overrides tab calls this &lt;strong&gt;Strict sandbox mode&lt;/strong&gt;). Alternatively, add an ask rule for &lt;code&gt;Bash(dangerouslyDisableSandbox:true)&lt;/code&gt;; per the docs it prompts even in bypass mode and beats a matching allow rule.&lt;/p&gt;

&lt;p&gt;Also worth knowing: the sandbox covers &lt;strong&gt;shell commands only&lt;/strong&gt;. Read/Edit/Write/WebFetch, hooks, local MCP servers and your status line command run outside it, governed only by permission rules. In bypass mode that means they're governed by… your deny rules. If you want one boundary around everything, run the whole &lt;code&gt;claude&lt;/code&gt; process in a container or VM.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you actually turn it on?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;Full YOLO&lt;/th&gt;
&lt;th&gt;Halfway&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CLI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude --dangerously-skip-permissions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;claude --permission-mode auto&lt;/code&gt; or &lt;code&gt;acceptEdits&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;settings.json&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"defaultMode": "bypassPermissions"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"defaultMode": "acceptEdits"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In a session&lt;/td&gt;
&lt;td&gt;Shift+Tab, if allowed at launch&lt;/td&gt;
&lt;td&gt;Shift+Tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VS Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claudeCode.allowDangerouslySkipPermissions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;mode selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rules&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"allow": ["Bash(npm test)"]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--dangerously-skip-permissions&lt;/span&gt;
&lt;span class="c"&gt;# identical to:&lt;/span&gt;
claude &lt;span class="nt"&gt;--permission-mode&lt;/span&gt; bypassPermissions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--permission-mode&lt;/code&gt; takes &lt;code&gt;manual&lt;/code&gt; (the default, spelled &lt;code&gt;default&lt;/code&gt; in config files), &lt;code&gt;acceptEdits&lt;/code&gt;, &lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;plan&lt;/code&gt;, &lt;code&gt;dontAsk&lt;/code&gt; and &lt;code&gt;bypassPermissions&lt;/code&gt;. The first interactive run shows a warning you have to accept.&lt;/p&gt;

&lt;p&gt;As a persistent default, in &lt;code&gt;~/.claude/settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"defaultMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bypassPermissions"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why can't a cloned repo flip YOLO on for you?
&lt;/h2&gt;

&lt;p&gt;This is my favourite design decision in the whole permission system. &lt;code&gt;defaultMode: "bypassPermissions"&lt;/code&gt; is honoured in &lt;strong&gt;user settings&lt;/strong&gt;, &lt;strong&gt;managed settings&lt;/strong&gt; and a file passed with &lt;strong&gt;&lt;code&gt;--settings&lt;/code&gt;&lt;/strong&gt;. It is &lt;strong&gt;ignored&lt;/strong&gt; in a project's own &lt;code&gt;.claude/settings.json&lt;/code&gt; and &lt;code&gt;.claude/settings.local.json&lt;/code&gt;: Claude Code just starts in the default mode.&lt;/p&gt;

&lt;p&gt;Think about the threat model. Project settings ship &lt;em&gt;with the repo&lt;/em&gt;. If they could set bypass mode, then &lt;code&gt;git clone evil/repo &amp;amp;&amp;amp; cd repo &amp;amp;&amp;amp; claude&lt;/code&gt; would hand an attacker an agent that runs anything without asking, and the attacker's README or issue text is right there to prompt-inject it. The rule is simple: &lt;strong&gt;only scopes you control can lower your guard.&lt;/strong&gt; The same idea shows up elsewhere in the sandbox docs, where credential-masking settings are honoured only from user/managed/&lt;code&gt;--settings&lt;/code&gt; scopes and ignored in a repo's settings.&lt;/p&gt;

&lt;p&gt;Cloud sessions ignore &lt;code&gt;bypassPermissions&lt;/code&gt; from settings files too, and admins can kill the mode org-wide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"disableBypassPermissionsMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"disable"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why won't --dangerously-skip-permissions run as root?
&lt;/h2&gt;

&lt;p&gt;On Linux and macOS, Claude Code &lt;strong&gt;refuses to start in bypass mode as root or under sudo&lt;/strong&gt;, unless it detects it's already inside a sandbox. That's the "no prompts &lt;em&gt;and&lt;/em&gt; unlimited privilege" combination it won't sign off on. If you hit this in a container, it's the container detection that matters; on a bare host, the fix is "don't be root", not "find a workaround".&lt;/p&gt;

&lt;h2&gt;
  
  
  Why isn't bypass in my Shift+Tab cycle?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Shift+Tab&lt;/strong&gt; cycles auto → default → acceptEdits → plan, then any optional modes. Bypass is only part of the cycle if the session was &lt;strong&gt;launched with permission&lt;/strong&gt; to use it. To have it available without starting in it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--allow-dangerously-skip-permissions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a nice two-step arm-then-fire design: the capability is granted at process start (a deliberate act), and only &lt;em&gt;then&lt;/em&gt; can a keystroke reach it. A stray Shift+Tab in a normal session can never land you in YOLO.&lt;/p&gt;

&lt;p&gt;In VS Code, &lt;code&gt;claudeCode.allowDangerouslySkipPermissions&lt;/code&gt; plays the same "arm" role: it adds &lt;strong&gt;Bypass permissions&lt;/strong&gt; to the mode selector. &lt;code&gt;claudeCode.initialPermissionMode&lt;/code&gt; sets what new conversations start in (&lt;code&gt;default&lt;/code&gt;, &lt;code&gt;acceptEdits&lt;/code&gt;, &lt;code&gt;plan&lt;/code&gt;, &lt;code&gt;bypassPermissions&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Is auto mode just YOLO with extra steps?
&lt;/h2&gt;

&lt;p&gt;No, and it's what I'd reach for first. In &lt;strong&gt;auto mode&lt;/strong&gt; a separate classifier model reviews each action and only stops you for the risky ones. Since 2.1.283 it's the default starting mode in the terminal and VS Code on supported models.&lt;/p&gt;

&lt;p&gt;The other halfway options compose nicely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;acceptEdits&lt;/code&gt;&lt;/strong&gt;: file edits go through, shell commands still ask.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow rules&lt;/strong&gt;: &lt;code&gt;"Bash(npm test)"&lt;/code&gt;, &lt;code&gt;"Bash(git *)"&lt;/code&gt;, &lt;code&gt;"Read"&lt;/code&gt; in &lt;code&gt;permissions.allow&lt;/code&gt;, or &lt;code&gt;--allowedTools&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sandbox auto-allow&lt;/strong&gt;: with the sandbox on, sandboxed Bash commands can run without prompts because the OS, not you, limits what they can reach. Deny rules, critical-path &lt;code&gt;rm&lt;/code&gt; and content-scoped ask rules like &lt;code&gt;Bash(git push *)&lt;/code&gt; still prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last combo is, for me, the sweet spot: zero prompts for &lt;code&gt;npm test&lt;/code&gt; and friends, but a kernel-enforced fence around writes and egress.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I turn on YOLO per task or per workspace with AgentRQ?
&lt;/h2&gt;

&lt;p&gt;Everything above is &lt;strong&gt;session-scoped&lt;/strong&gt;: you decide once, at launch or with Shift+Tab, and that decision covers every tool call until you exit. If you run Claude Code unattended (scheduled jobs, long refactors while you're away), you usually want something finer: YOLO for &lt;em&gt;this&lt;/em&gt; job, prompts for everything else. That's the gap &lt;a href="https://agentrq.com/features/yolo-mode" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt; fills by moving the approval decision out of the terminal and into a task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Connect Claude Code to a workspace.&lt;/strong&gt; Follow the &lt;a href="https://agentrq.com/docs/connect-claude-code" rel="noopener noreferrer"&gt;Claude Code setup guide&lt;/a&gt;, which adds the workspace as an MCP server and a notification channel. Alternatively, run it through the &lt;a href="https://agentrq.com/docs/connect-acp-agent" rel="noopener noreferrer"&gt;ACP Gateway&lt;/a&gt; with &lt;code&gt;--agent claude-acp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Start Claude Code without bypass.&lt;/strong&gt; Use the default mode or &lt;code&gt;acceptEdits&lt;/code&gt;, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--permission-mode&lt;/span&gt; acceptEdits
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Avoid auto mode here, otherwise the classifier answers the permission requests before they ever reach you. Each request now shows up in the AgentRQ task (web, phone or Slack) with the command or edit it's about, and you answer one of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Allow Once&lt;/strong&gt;: this call only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always Allow&lt;/strong&gt;: adds the tool to the workspace's auto-approved list, so routine calls stop asking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deny&lt;/strong&gt;: Claude Code gets a rejection and carries on with another approach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3a. YOLO for one task.&lt;/strong&gt; Flip the &lt;strong&gt;YOLO&lt;/strong&gt; toggle on a task, or set it when you create the task. Every permission request in that task is approved automatically and Claude Code never waits, while every other task in the workspace still asks. The flag is per task and persists across agent disconnects and reconnects. &lt;a href="https://agentrq.com/features/task-scheduling" rel="noopener noreferrer"&gt;Scheduled tasks&lt;/a&gt;, &lt;a href="https://agentrq.com/features/events" rel="noopener noreferrer"&gt;event triggers&lt;/a&gt; and &lt;a href="https://agentrq.com/features/workflows" rel="noopener noreferrer"&gt;workflow&lt;/a&gt; steps have the same switch, so a nightly job can run in YOLO while your interactive work stays supervised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3b. YOLO for the whole workspace.&lt;/strong&gt; Workspace settings has &lt;strong&gt;YOLO Mode (Execute All)&lt;/strong&gt; (UI warning: "Agent will not ask for permission"). Under the hood it's a default, not a global override: the approval check reads the task's own YOLO flag, and the workspace switch decides what that flag starts as. New tasks you create in the web form open with the YOLO toggle already on (you can still switch it off per task), and tasks the agent creates for itself over the workspace MCP server inherit it. Flipping the switch doesn't rewrite tasks that already exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or let a model approve and deny for you, from plain-English rules.&lt;/strong&gt; Between "ask me every time" and "approve everything" there's a third option: an &lt;a href="https://github.com/agentrq/agentrq/blob/main/docs/EXTENSIONS.md" rel="noopener noreferrer"&gt;AgentRQ desktop extension&lt;/a&gt; that reviews each permission request before it reaches you. Extensions are trusted Node modules loaded by the AgentRQ desktop app. One registers a reviewer with &lt;code&gt;ctx.hooks.add({ id, review(request) { ... } })&lt;/code&gt; and is handed the pending call: the tool name, the argument preview the harness sent, and the workspace. It answers &lt;code&gt;{ behavior: 'deny', reason }&lt;/code&gt;, &lt;code&gt;{ behavior: 'allow' }&lt;/code&gt;, or nothing at all to abstain. Point &lt;code&gt;review()&lt;/code&gt; at an external decision API such as &lt;a href="https://agentrq.com/blog/jev-system-one-models" rel="noopener noreferrer"&gt;TypeSafe's Jev&lt;/a&gt;, a "System One" model that returns a typed &lt;code&gt;choice&lt;/code&gt; with calibrated &lt;code&gt;probabilities&lt;/code&gt; and a &lt;code&gt;confidence&lt;/code&gt; in milliseconds instead of generating text. Send the tool call as the state, and your workspace's rules in plain English ("git push is fine on feature branches, never on main", "never read anything under ~/.aws") as a Choice question over allow / deny / ask me. Then threshold it: approve only on a high-confidence allow, refuse on a confident deny, and abstain on everything else so the request lands on your phone as usual. The rules can live on a per-workspace settings tab the extension draws itself; the bundled &lt;code&gt;guardrail&lt;/code&gt; example does exactly that with literal patterns.&lt;/p&gt;

&lt;p&gt;The review contract is built on one asymmetry: refusing costs a tool call, approving costs whatever the tool call does. So one refusal settles a request; silence (an abstain, an exception, or a reviewer that misses its 5-second deadline) is never an allow, the request just stays in front of you; and an extension needs the &lt;code&gt;decide&lt;/code&gt; consent level to approve, while &lt;code&gt;deny&lt;/code&gt; consent can only refuse. The install screen starts every extension at &lt;code&gt;none&lt;/code&gt;. Reviews only happen while the desktop app is open and signed in, so treat this as a fast first pass, not a security boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per task vs. workspace-wide, the trade-off:&lt;/strong&gt; the workspace switch is the AgentRQ equivalent of putting &lt;code&gt;bypassPermissions&lt;/code&gt; in your user settings: convenient, but it outlives the job you actually trusted, and it covers work you haven't seen yet. Per-task YOLO scopes the blast radius to one unit of work and expires with it. My rule: leave Execute All off, use per-task YOLO for jobs you'd happily &lt;code&gt;git reset&lt;/code&gt;, and lean on &lt;strong&gt;Always Allow&lt;/strong&gt; for boring tools (prune that list now and then). Either way, Claude Code's own layers still apply underneath:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep &lt;code&gt;/sandbox&lt;/code&gt; on, ideally with &lt;code&gt;allowUnsandboxedCommands: false&lt;/code&gt;. AgentRQ removes the questions; the sandbox still limits what an approved command can touch.&lt;/li&gt;
&lt;li&gt;Start every YOLO task from a clean git tree, so any change is one &lt;code&gt;git reset&lt;/code&gt; away.&lt;/li&gt;
&lt;li&gt;Read the &lt;a href="https://agentrq.com/features/tool-call-history" rel="noopener noreferrer"&gt;tool call history&lt;/a&gt; afterwards; it lists every call, including the auto-approved ones.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; the same as &lt;code&gt;--permission-mode bypassPermissions&lt;/code&gt;?&lt;/strong&gt; Yes, exactly the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does YOLO mode turn off the sandbox?&lt;/strong&gt; No. It only skips prompts. But unsandboxed &lt;em&gt;retries&lt;/em&gt; run without asking in bypass mode unless you set &lt;code&gt;allowUnsandboxedCommands: false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I put bypass mode in my repo's &lt;code&gt;.claude/settings.json&lt;/code&gt;?&lt;/strong&gt; You can write it, but Claude Code ignores it there. Use &lt;code&gt;~/.claude/settings.json&lt;/code&gt;, managed settings or &lt;code&gt;--settings&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does it refuse to start as root?&lt;/strong&gt; Bypass mode is blocked as root/sudo on Linux and macOS unless Claude Code detects it's already sandboxed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is bypass missing from Shift+Tab?&lt;/strong&gt; Start the session with &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; or &lt;code&gt;--allow-dangerously-skip-permissions&lt;/code&gt;, or set bypass in user settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the sandbox cover MCP servers and hooks?&lt;/strong&gt; No. They run with your full access; only shell commands are sandboxed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I approve Claude Code permissions from my phone?&lt;/strong&gt; Yes. Connect it to an AgentRQ workspace and answer Allow Once, Always Allow or Deny in the task.&lt;/p&gt;

&lt;p&gt;If you're comparing agents, here's how &lt;a href="https://agentrq.com/blog/what-is-yolo-mode-and-how-to-turn-it-on-in-every-coding-agent" rel="noopener noreferrer"&gt;YOLO mode works in every coding agent&lt;/a&gt;, side by side.&lt;/p&gt;




&lt;p&gt;So, what's your setup: full bypass inside a container, auto mode on the host, or sandbox auto-allow with a strict no-retry policy? And has the unsandboxed retry ever surprised you? Tell me in the comments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://agentrq.com/guidelines/yolo-mode/claude-code" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>security</category>
      <category>cli</category>
    </item>
    <item>
      <title>There is no agy --yolo. How YOLO mode actually works in Antigravity (IDE and CLI)</title>
      <dc:creator>Tony</dc:creator>
      <pubDate>Thu, 08 Oct 2026 15:37:53 +0000</pubDate>
      <link>https://dev.to/agentrq/there-is-no-agy-yolo-how-yolo-mode-actually-works-in-antigravity-ide-and-cli-456l</link>
      <guid>https://dev.to/agentrq/there-is-no-agy-yolo-how-yolo-mode-actually-works-in-antigravity-ide-and-cli-456l</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;agy --yolo&lt;/code&gt; is not a flag. The CLI's YOLO is &lt;code&gt;agy --dangerously-skip-permissions&lt;/code&gt;, or &lt;code&gt;"toolPermission": "always-proceed"&lt;/code&gt; in &lt;code&gt;~/.gemini/antigravity-cli/settings.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In the Antigravity IDE, YOLO is the &lt;strong&gt;Turbo&lt;/strong&gt; permission preset.&lt;/li&gt;
&lt;li&gt;The two are &lt;strong&gt;not equivalent&lt;/strong&gt;. Turbo turns off approvals &lt;strong&gt;and&lt;/strong&gt; the sandbox, and opens the whole filesystem. The CLI flag turns off approvals only, and leaves the terminal sandbox however it was, which by default means &lt;strong&gt;off&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The sane middle ground is the IDE's &lt;strong&gt;Default&lt;/strong&gt; preset, or &lt;code&gt;proceed-in-sandbox&lt;/code&gt; in the CLI with the sandbox actually enabled.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Checked against Google's Antigravity docs (antigravity.google/docs) on October 7, 2026. Antigravity is closed source and Google doesn't publish the CLI's full flag list, so everything here comes from the documentation, not the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are people typing &lt;code&gt;agy --yolo&lt;/code&gt; in the first place?
&lt;/h2&gt;

&lt;p&gt;Migration muscle memory. On June 18, 2026, Google moved free, Google AI Pro and Ultra users from Gemini CLI to the Antigravity CLI. Gemini CLI had &lt;code&gt;--yolo&lt;/code&gt; (now deprecated in favour of &lt;code&gt;--approval-mode=yolo&lt;/code&gt;). &lt;code&gt;agy&lt;/code&gt; didn't carry it over. Instead, it borrowed Claude Code's spelling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agy &lt;span class="nt"&gt;--dangerously-skip-permissions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The naming is a design statement in itself. "yolo" sounds like a fun mode. "dangerously skip permissions" says what you're giving up. Google's CLI guide lists it with &lt;code&gt;--sandbox&lt;/code&gt; as launch flags that override your saved settings for that one session, and the settings panel shows when a value came from a flag rather than the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the two layers YOLO can touch?
&lt;/h2&gt;

&lt;p&gt;Like most serious agents, Antigravity separates two questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Approval:&lt;/strong&gt; does a human confirm this tool call before it runs?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containment:&lt;/strong&gt; once it runs, what can it reach?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Where the IDE and CLI differ is in how their "YOLO" maps onto those layers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Approvals&lt;/th&gt;
&lt;th&gt;Terminal sandbox&lt;/th&gt;
&lt;th&gt;Filesystem&lt;/th&gt;
&lt;th&gt;MCP / web tools&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IDE &lt;strong&gt;Turbo&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Off&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Whole filesystem&lt;/td&gt;
&lt;td&gt;Allowed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLI &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;Unchanged (&lt;code&gt;--sandbox&lt;/code&gt; / &lt;code&gt;enableTerminalSandbox&lt;/code&gt;, default off)&lt;/td&gt;
&lt;td&gt;Unchanged&lt;/td&gt;
&lt;td&gt;Allowed (no prompts)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So "YOLO in the CLI" leaves you exactly as sandboxed as you were before. On a stock install, that's not at all. Turbo is the more honest of the two: it's labelled as the everything-off preset.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does the CLI's toolPermission work?
&lt;/h2&gt;

&lt;p&gt;The CLI keeps settings in &lt;code&gt;~/.gemini/antigravity-cli/settings.json&lt;/code&gt;, and it only writes the keys you change. The one that matters is &lt;code&gt;toolPermission&lt;/code&gt;, which takes four values. Ordered from most to least paranoid:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Behaviour&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;strict&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asks before every tool that isn't a read&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;request-review&lt;/code&gt; (default)&lt;/td&gt;
&lt;td&gt;Asks before writes, shell commands and web tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;proceed-in-sandbox&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Runs terminal commands without asking &lt;strong&gt;as long as they stay in the sandbox&lt;/strong&gt;, asks otherwise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;always-proceed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Never asks. This is YOLO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;proceed-in-sandbox&lt;/code&gt; is the interesting design. Approval depends on containment, so the prompt only appears when the command wants out. The catch is that it's only meaningful if the sandbox is on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"toolPermission"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"proceed-in-sandbox"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"enableTerminalSandbox"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In-session, &lt;code&gt;/permissions&lt;/code&gt; opens the permissions manager (mode and rules for the running session), and &lt;code&gt;/config&lt;/code&gt; or &lt;code&gt;/settings&lt;/code&gt; opens the full editor. When a &lt;strong&gt;subagent&lt;/strong&gt; is waiting on an action, &lt;code&gt;Ctrl+K&lt;/code&gt; approves just that one action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can I get something finer than a global mode?
&lt;/h2&gt;

&lt;p&gt;Yes, with rules. A &lt;code&gt;permissions&lt;/code&gt; block takes &lt;code&gt;allow&lt;/code&gt;, &lt;code&gt;ask&lt;/code&gt; and &lt;code&gt;deny&lt;/code&gt; lists:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"command(git)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command(npm test)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"write_file(src/)"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deny"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"command(rm)"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Matchers cover commands (including &lt;code&gt;command(regex:...)&lt;/code&gt;), file writes, URLs and MCP tools (&lt;code&gt;mcp(server/tool)&lt;/code&gt;). Precedence is the conservative one: &lt;strong&gt;deny beats ask, ask beats allow&lt;/strong&gt;. So a broad allow can never swallow a specific deny, and that's what lets you safely allow &lt;code&gt;command(git)&lt;/code&gt; while still denying something narrower.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do the IDE presets actually configure?
&lt;/h2&gt;

&lt;p&gt;On macOS and Linux: &lt;strong&gt;Settings → General → Permission Settings&lt;/strong&gt;. A project can override the preset or choose &lt;strong&gt;Inherit General&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Preset&lt;/th&gt;
&lt;th&gt;Sandbox&lt;/th&gt;
&lt;th&gt;Terminal commands&lt;/th&gt;
&lt;th&gt;Files&lt;/th&gt;
&lt;th&gt;MCP and web&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;On&lt;/td&gt;
&lt;td&gt;Free inside the sandbox, ask outside&lt;/td&gt;
&lt;td&gt;Workspace + temp&lt;/td&gt;
&lt;td&gt;Ask&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Request Review&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;Always ask&lt;/td&gt;
&lt;td&gt;Workspace only&lt;/td&gt;
&lt;td&gt;Ask&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Turbo&lt;/td&gt;
&lt;td&gt;Off&lt;/td&gt;
&lt;td&gt;Run without asking&lt;/td&gt;
&lt;td&gt;Whole filesystem&lt;/td&gt;
&lt;td&gt;Allowed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Look at the shape of &lt;strong&gt;Default&lt;/strong&gt;. It isn't "ask about everything". It's the IDE version of &lt;code&gt;proceed-in-sandbox&lt;/code&gt;: the agent runs freely while it's contained, and stops when it wants to leave. For most work that's the better trade than Turbo. You keep the speed, and the blast radius stays at "workspace + temp".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request Review&lt;/strong&gt; is the odd one out. It turns the sandbox &lt;strong&gt;off&lt;/strong&gt;, but makes up for it by asking about every command and limiting files to the workspace. That's human review instead of OS containment.&lt;/p&gt;

&lt;p&gt;Two more IDE knobs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Artifact review policy&lt;/strong&gt; (&lt;code&gt;asks-for-review&lt;/code&gt;, &lt;code&gt;agent-decides&lt;/code&gt;, &lt;code&gt;always-proceed&lt;/code&gt;) decides whether the agent waits for you to review its plans and other artifacts. It's YOLO for planning, separate from YOLO for tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict mode&lt;/strong&gt; is the anti-Turbo. It sends terminal commands, browser JavaScript and artifacts to review, and turns the sandbox on &lt;strong&gt;with no network&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt; still uses the older model. Set &lt;strong&gt;Terminal Command Auto Execution&lt;/strong&gt; to &lt;strong&gt;Always Proceed&lt;/strong&gt; (it still respects your deny list) and the outside-of-folder file access policy to &lt;strong&gt;Always Allow&lt;/strong&gt;. Sandbox mode is a separate toggle there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is there an "Antigravity 2.0 YOLO mode"?
&lt;/h2&gt;

&lt;p&gt;Forum posts mention "Antigravity 2.0", but we found no official 2.0 page that changes the permission model. Today's documented options are Turbo in the IDE and &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; / &lt;code&gt;always-proceed&lt;/code&gt; in &lt;code&gt;agy&lt;/code&gt;. If that changes, the doc pages above are where it'll show up first.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I turn on YOLO per task or per workspace with AgentRQ?
&lt;/h2&gt;

&lt;p&gt;Both native switches cover a whole session (or a whole IDE preset). &lt;a href="https://agentrq.com" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt; moves the decision to the task, and lets you answer prompts away from the terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Connect Antigravity&lt;/strong&gt; through the &lt;a href="https://agentrq.com/docs/connect-acp-agent" rel="noopener noreferrer"&gt;ACP Gateway&lt;/a&gt; (&lt;a href="https://agentrq.com/docs/agents/antigravity" rel="noopener noreferrer"&gt;Antigravity setup guide&lt;/a&gt;). Its registry build publishes no checksum, so the first run needs &lt;code&gt;--allow-unverified-agent&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @agentrq/acp-gateway@latest &lt;span class="nt"&gt;--agent&lt;/span&gt; antigravity-acp &lt;span class="nt"&gt;--allow-unverified-agent&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start it &lt;strong&gt;without&lt;/strong&gt; &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; or &lt;code&gt;always-proceed&lt;/code&gt;. The gateway also moves each new session out of any self-approving mode and into one where the agent asks a person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Answer from anywhere.&lt;/strong&gt; Each permission request shows up in the AgentRQ task, on the web, your phone or Slack, with the command or edit it wants to run. You answer &lt;strong&gt;Allow Once&lt;/strong&gt;, &lt;strong&gt;Always Allow&lt;/strong&gt; (adds the tool to the workspace's auto-approved list) or &lt;strong&gt;Deny&lt;/strong&gt;. If nobody answers within 30 minutes, the gateway cancels the turn instead of guessing. &lt;code&gt;--permission-timeout&lt;/code&gt; changes the limit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3a. YOLO for one task.&lt;/strong&gt; Flip the &lt;strong&gt;YOLO&lt;/strong&gt; toggle on a task, or when you create it. Every request in that task is auto-approved, and every other task still asks. The flag lives on the task, so it survives agent disconnects and reconnects. &lt;a href="https://agentrq.com/features/task-scheduling" rel="noopener noreferrer"&gt;Scheduled tasks&lt;/a&gt;, &lt;a href="https://agentrq.com/features/events" rel="noopener noreferrer"&gt;event triggers&lt;/a&gt; and &lt;a href="https://agentrq.com/features/workflows" rel="noopener noreferrer"&gt;workflow&lt;/a&gt; steps have the same switch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3b. YOLO for the whole workspace.&lt;/strong&gt; Workspace settings has &lt;strong&gt;YOLO Mode (Execute All)&lt;/strong&gt; (UI warning: "Agent will not ask for permission"). Under the hood it's a default, not a global override: the approval check reads the task's own YOLO flag, and the workspace switch decides what that flag starts as. New tasks you create in the web form open with the YOLO toggle already on (you can still switch it off per task), and tasks the agent creates for itself over the workspace MCP server inherit it. Flipping the switch doesn't rewrite tasks that already exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or let a model approve and deny for you, from plain-English rules.&lt;/strong&gt; Between "ask me every time" and "approve everything" there's a third option: an &lt;a href="https://github.com/agentrq/agentrq/blob/main/docs/EXTENSIONS.md" rel="noopener noreferrer"&gt;AgentRQ desktop extension&lt;/a&gt; that reviews each permission request before it reaches you. Extensions are trusted Node modules loaded by the AgentRQ desktop app. One registers a reviewer with &lt;code&gt;ctx.hooks.add({ id, review(request) { ... } })&lt;/code&gt; and is handed the pending call: the tool name, the argument preview the harness sent, and the workspace. It answers &lt;code&gt;{ behavior: 'deny', reason }&lt;/code&gt;, &lt;code&gt;{ behavior: 'allow' }&lt;/code&gt;, or nothing at all to abstain. Point &lt;code&gt;review()&lt;/code&gt; at an external decision API such as &lt;a href="https://agentrq.com/blog/jev-system-one-models" rel="noopener noreferrer"&gt;TypeSafe's Jev&lt;/a&gt;, a "System One" model that returns a typed &lt;code&gt;choice&lt;/code&gt; with calibrated &lt;code&gt;probabilities&lt;/code&gt; and a &lt;code&gt;confidence&lt;/code&gt; in milliseconds instead of generating text. Send the tool call as the state, and your workspace's rules in plain English ("git push is fine on feature branches, never on main", "never read anything under ~/.aws") as a Choice question over allow / deny / ask me. Then threshold it: approve only on a high-confidence allow, refuse on a confident deny, and abstain on everything else so the request lands on your phone as usual. The rules can live on a per-workspace settings tab the extension draws itself; the bundled &lt;code&gt;guardrail&lt;/code&gt; example does exactly that with literal patterns.&lt;/p&gt;

&lt;p&gt;The review contract is built on one asymmetry: refusing costs a tool call, approving costs whatever the tool call does. So one refusal settles a request; silence (an abstain, an exception, or a reviewer that misses its 5-second deadline) is never an allow, the request just stays in front of you; and an extension needs the &lt;code&gt;decide&lt;/code&gt; consent level to approve, while &lt;code&gt;deny&lt;/code&gt; consent can only refuse. The install screen starts every extension at &lt;code&gt;none&lt;/code&gt;. Reviews only happen while the desktop app is open and signed in, so treat this as a fast first pass, not a security boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-off.&lt;/strong&gt; Per-task YOLO is scoped trust: it ends with the job you vetted, so a nightly scheduled run can be YOLO while your interactive tasks stay supervised. Workspace-wide YOLO is less friction, but every future task inherits it. With Antigravity in particular, remember the layering above. AgentRQ's YOLO only answers the &lt;strong&gt;approval&lt;/strong&gt; question, so set &lt;code&gt;"enableTerminalSandbox": true&lt;/code&gt; and auto-approved commands still run inside the sandbox. Add a clean git tree before each YOLO task and a look at the &lt;a href="https://agentrq.com/features/tool-call-history" rel="noopener noreferrer"&gt;tool call history&lt;/a&gt; afterwards. More: &lt;a href="https://agentrq.com/features/yolo-mode" rel="noopener noreferrer"&gt;AgentRQ YOLO mode&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does &lt;code&gt;agy --yolo&lt;/code&gt; exist?&lt;/strong&gt; No. Use &lt;code&gt;agy --dangerously-skip-permissions&lt;/code&gt;, or &lt;code&gt;"toolPermission": "always-proceed"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between Turbo and the agy flag?&lt;/strong&gt; Turbo also turns off the sandbox and opens the whole filesystem. The CLI flag only skips approvals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the agy terminal sandbox on by default?&lt;/strong&gt; No. Enable it with &lt;code&gt;--sandbox&lt;/code&gt; or &lt;code&gt;"enableTerminalSandbox": true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the safest "fast" setting?&lt;/strong&gt; The IDE's Default preset, or &lt;code&gt;proceed-in-sandbox&lt;/code&gt; with the sandbox on in the CLI: no prompts while contained, a prompt when the agent wants out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do deny rules still work with always-proceed?&lt;/strong&gt; The docs say Windows' Always Proceed respects the deny list. For rules in general, deny beats ask beats allow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I approve Antigravity commands from my phone?&lt;/strong&gt; Connect it to &lt;a href="https://agentrq.com" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt; through the ACP Gateway. Permission requests show up in the task.&lt;/p&gt;

&lt;p&gt;For every other agent, see &lt;a href="https://agentrq.com/blog/what-is-yolo-mode-and-how-to-turn-it-on-in-every-coding-agent" rel="noopener noreferrer"&gt;what YOLO mode is and how to turn it on in every coding agent&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Question for the comments: is "approve automatically &lt;strong&gt;only while sandboxed&lt;/strong&gt;" (Default / &lt;code&gt;proceed-in-sandbox&lt;/code&gt;) the pattern every agent should copy, or does it just move the trust problem into the sandbox config? 👇&lt;/p&gt;

&lt;p&gt;Originally published on &lt;a href="https://agentrq.com/guidelines/yolo-mode/antigravity" rel="noopener noreferrer"&gt;AgentRQ&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>cli</category>
      <category>google</category>
    </item>
  </channel>
</rss>
