Bug Report: “Always Proceed” Terminal Setting Has No Effect on Command Approval
Product: Antigravity IDE
Version: Installed at C:\Users\<USERNAME>\AppData\Local\Programs\Antigravity
OS: Windows 11 Pro (x64)
Date: 2026-02-28
Summary
The “Terminal Command Auto Execution” setting has no effect. When set to “Always Proceed” with an empty Deny List and * in the Allow List, the agent is still prompted for manual approval on every terminal command. The setting UI accepts and saves the configuration, but the command execution pipeline does not read or honor it.
Steps to Reproduce
-
Open Settings → Agent in Antigravity
-
Set Terminal Command Auto Execution to “Always Proceed”
-
Confirm Deny List Terminal Commands is empty
-
Add
*to Allow List Terminal Commands -
Start a new conversation (settings note says changes apply to new messages)
-
Ask the agent to run any command (e.g.,
Get-ComputerInfo) -
Expected: Command auto-executes without prompting
-
Actual: User is prompted to click “Run” for every command
Root Cause Analysis (Source Code Investigation)
The Antigravity application source was examined at:
-
resources/app/out/main.js (~7.6 MB, minified Electron main process)
-
resources/app/out/jetskiAgent/main.js (~10.7 MB, minified agent logic)
Finding 1: SafeToAutoRun Does Not Exist in Application Code
The LLM tool schema defines a parameter called SafeToAutoRun on the run_command tool. This parameter is what the AI agent sets to true or false to signal whether a command is safe.
However, SafeToAutoRun, safeToAutoRun, and safe_to_auto_run return zero matches in both
main.js and
jetskiAgent/main.js. The application never reads this flag. The AI agent faithfully sets it, but Antigravity ignores it entirely.
Finding 2: run_command Does Not Exist in Agent Module
The string run_command returns zero matches in
jetskiAgent/main.js. The agent module doesn’t reference the tool by this name, suggesting the tool invocation is handled by a different layer that may strip or transform tool metadata before evaluating approval.
Finding 3: Allow List Setting Is Not Read by Command Execution Logic
Searching for allowList, allow_list, userAllowlist, and USER_ALLOWLIST in
main.js:
-
Generic
ALLOWLISTappears in unrelated contexts (Node crash reporter, environment variables) -
userAllowlistandUSER_ALLOWLISTreturn zero matches -
The settings UI writes allow-list entries to
user_settings.pb (protobuf), but the command execution pipeline never reads them back
Finding 4: Approval Decision Functions Don’t Exist
Standard function names for approval logic were searched:
-
shouldAutoExecute→ 0 matches -
shouldAutoRun→ 0 matches -
needsApproval→ 0 matches -
requiresApproval→ 0 matches -
commandNeedsApproval→ 0 matches -
shouldPrompt→ 0 matches
There is no function that evaluates whether a command should be auto-approved based on user settings.
Finding 5: Enum Exists But Is Disconnected
The settings UI uses an enum (minified as Lx) with a value like Lx.AUTO (label: “Agent Decides”). The “Always Proceed” option exists in the UI, but the corresponding code path that should bypass the approval dialog appears to be missing or non-functional.
Finding 6: Approval Appears Hardcoded
The strings "Manually proceeded." and "by agent." exist in the approval flow, alongside isTurboReviewMode and artifactReviewPolicy. These suggest the approval system is primarily designed for artifact/file reviews, not terminal commands. The terminal command approval may have been added to the settings UI without a corresponding implementation in the command execution pipeline.
Architecture Diagram
┌─────────────────────┐ ┌──────────────────────────┐
│ LLM Tool Schema │ │ Antigravity Settings │
│ │ │ UI │
│ SafeToAutoRun:true ──► │ “Always Proceed” ✓ │
│ (set by AI agent) │ ✗ │ Allow List: * │
│ │ │ │ Deny List: (empty) │
└─────────┬───────────┘ │ └──────────┬───────────────┘
│ │ │
│ IGNORED │ DISCONNECTED│ Writes to
│ │ │ user_settings.pb
▼ │ ▼
┌─────────────────────┐ │ ┌──────────────────────────┐
│ Command Execution │ │ │ user_settings.pb │
│ Pipeline │ │ │ (protobuf binary) │
│ │ │ │ │
│ ► ALWAYS shows │◄─┘ │ Never read by │
│ approval dialog │ │ command pipeline │
│ ► No conditional │ │ │
│ bypass logic │ │ │
└─────────────────────┘ └──────────────────────────┘
Impact
-
Severity: Medium-High (usability)
-
Users cannot leave the agent to work autonomously, requiring constant babysitting
-
The setting exists and appears functional in the UI, creating a false expectation
-
Competitive disadvantage vs. Cursor, which respects auto-approval settings
-
Breaks the documented workflow annotation
// turbo-allfor hands-off execution
Expected Fix
-
The command execution pipeline should read the
SafeToAutoRunflag from the tool invocation -
The pipeline should read the Terminal Command Auto Execution setting from
user_settings.pb
-
When set to “Always Proceed” (and command is not in the Deny List), the approval dialog should be bypassed
-
The Allow List
*wildcard should be interpreted as “match all commands”
Environment Details
| Component | Detail |
|---|---|
| Antigravity Install | C:\Users\<USERNAME>\AppData\Local\Programs\Antigravity |
| Settings File | C:\Users\<USERNAME>\.gemini\antigravity\user_settings.pb |
| Agent Bundle | resources/app/out/jetskiAgent/main.js (10.7 MB) |
| Main Process | resources/app/out/main.js (7.6 MB) |
| Shell | PowerShell (Windows 11 Pro) |