AI 程式設計教程中文版
官方教程中文版05 · MCP & Security

Strict Mode、Sandbox 與 URL Allowlist

基於官方文件解釋 Antigravity Strict Mode、Sandbox、URL Allowlist 和檔案訪問邊界。

Antigravity 的安全控制不是一個開關,而是一組組合:Strict Mode(嚴格模式)、browser allowlist / denylist(瀏覽器白名單 / 黑名單)、terminal sandbox(終端沙箱)、artifact review(產物稽核)、browser JavaScript review(瀏覽器 JS 稽核)、workspace file access(工作區檔案訪問)。真實專案要把這些組合起來,而不是隻開啟某一個設定。

閱讀目標:讀完本章,你應該能為真實專案建立“預設不越界、需要副作用就請求確認”的安全配置。

1. URL 訪問有 denylist 和 allowlist 兩層

官方 Allowlist / Denylist 文件說明,Browser 使用兩層安全系統控制 URL:

官方說明關鍵點
Denylist使用 Google Superroots BadUrlsChecker 服務維護和強制執行denylist 優先,server 不可用時預設拒絕
Allowlist本地可編輯文本檔案,用來顯式信任 URL初始只有 localhost,可手動增刪

當 browser 嘗試訪問不在 allowlist 的 URL 時,會彈出提示;點選 always allow 會把該 URL 加入 allowlist。即使 allowlist 裡有某 URL,只要它在 denylist 中,仍然不能訪問。

官方預設 allowlist 只有 localhost,這很合理。前端開發第一階段就應該從 localhost 驗證開始。

2. Strict Mode 會強制收緊多個設定

官方 Strict Mode 文件說明,開啟 strict mode 後會執行增強安全控制。

領域Strict Mode 行為
Browser URLexternal markdown images 和 Read URL tool 受 allowlist / denylist 控制
Terminal Auto Execution強制 Request Review,並忽略 terminal allowlist
Browser JavaScript Execution強制 Request Review
Artifact Review強制 Request Review
File System Accessrespect .gitignore,禁止 workspace 外檔案訪問

Strict Mode 的價值是把多個容易漏掉的設定一次性收緊。它適合:

  • 真實業務專案。
  • 有 secrets 的儲存庫。
  • 會訪問外部網頁或瀏覽器的任務。
  • 會執行 terminal 命令的任務。
  • 多 agent 或長任務場景。

3. Sandboxing 限制 terminal 命令執行環境

官方 Sandboxing 文件說明,terminal sandbox 為 Agent 執行的 terminal 命令提供 kernel-level isolation。當前預設停用,但未來可能變化。macOS 使用 Seatbelt,也就是 sandbox-exec;Linux 使用 nsjail

開啟後有兩個核心限制:

限制官方說明
File System命令只能寫 workspace 和必要系統位置,避免誤刪或修改專案外檔案
Network Access可以單獨用 Sandbox Allow Network 控制是否允許聯網

如果命令因 sandbox 限制失敗,官方給出兩條處理路徑:

  • 在 User Settings 裡永久關閉 sandbox。
  • 在 Request Review 模式下,對單個命令選擇 Bypass Sandbox

Sandbox 失敗不要第一反應永久關閉。先判斷命令是不是真的需要 workspace 外檔案或網路;如果只是一次性需要,優先單命令 bypass。

4. Strict Mode 與 Sandbox 的關係

官方 Sandboxing 文件說明,Strict Mode 開啟時,sandbox 會自動啟用,並且網路訪問被拒絕。

flowchart TD
  Task["Agent task"] --> Strict{"Strict Mode"}
  Strict -->|on| Request["Terminal / Browser JS / Artifact Review = Request Review"]
  Strict -->|on| Files["Respect .gitignore + workspace isolation"]
  Strict -->|on| Sandbox["Sandbox on + network denied"]
  Strict -->|off| Custom["按使用者自定義設定執行"]
  Request --> Human["等待人工確認"]
  Sandbox --> Limited["限制檔案系統和網路"]

這說明 Strict Mode 更像安全上限:一旦開啟,它會覆蓋一些更寬鬆的設定,強制把高副作用動作拉回人工審查。

5. 檔案訪問邊界

Strict Mode 會讓 Agent respect .gitignore,並關閉 workspace 外檔案訪問。這個行為對真實專案很重要,因為 .gitignore 常常包含:

  • .env
  • 構建產物。
  • 本地快取。
  • 憑據檔案。
  • 私有輸出目錄。

如果你確實需要 agent 讀取 workspace 外檔案,優先做臨時複製或最小路徑授權,不要開放整個 home 目錄。

深讀:為什麼 terminal allowlist 在 Strict Mode 下會被忽略

官方 Strict Mode 文件說明,開啟 strict mode 後 Terminal Auto Execution 被設為 Request Review,並且 terminal allowlist 會被忽略。

這個設計避免了一個常見漏洞:你以為自己進入安全模式,但之前配置過的自動執行命令仍然悄悄執行。Strict Mode 的目標是重新收緊高副作用能力,所以它必須讓 terminal 命令重新回到人工確認。

6. 推薦預設安全組合

真實專案起點可以這樣設:

設定推薦為什麼
Strict Mode開啟一次把多個高副作用動作拉回人工審查,避免設定遺漏
Terminal Sandboxing開啟命令預設只能寫 workspace,誤刪專案外檔案不會發生
Sandbox Network Access預設關閉,需要時單次放開聯網命令是供應鏈投毒的最大入口
Artifact ReviewRequest Reviewagent 改 artifact 前先停下,人看一眼 diff
Browser JavaScript ExecutionRequest ReviewJS 能呼叫任意外部 API,強制審查避免賬號被濫用
Browser URL Allowlist只放 localhost 和必要官方域名預設 allowlist 只有 localhost,先用本地驗證再擴
Non-Workspace File Access關閉配合 Strict Mode 的 .gitignore respect,secrets 不會被讀
MCP tools按任務啟用,寫操作預設 AskMCP 的 token 通常長期有效,寫許可權濫用代價高

本章自檢

完成本章後,用這 3 個問題檢查自己是否真正理解:

  1. Denylist 和 allowlist 誰優先?server 不可用時會怎樣?
  2. Strict Mode 會強制改變哪些 terminal、browser、artifact 和 file access 行為?
  3. Sandbox 和 Request Review 的職責有什麼不同?

透過標準:你能為一個含 secrets 的真實專案配置 strict mode、安全 URL 範圍和 terminal sandbox,並解釋哪些動作需要人工確認。

官方來源

接下來去哪

本頁目錄