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 URL | external 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 Access | respect .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 Review | Request Review | agent 改 artifact 前先停下,人看一眼 diff |
| Browser JavaScript Execution | Request Review | JS 能调用任意外部 API,强制审查避免账号被滥用 |
| Browser URL Allowlist | 只放 localhost 和必要官方域名 | 默认 allowlist 只有 localhost,先用本地验证再扩 |
| Non-Workspace File Access | 关闭 | 配合 Strict Mode 的 .gitignore respect,secrets 不会被读 |
| MCP tools | 按任务启用,写操作默认 Ask | MCP 的 token 通常长期有效,写权限滥用代价高 |
本章自检
完成本章后,用这 3 个问题检查自己是否真正理解:
- Denylist 和 allowlist 谁优先?server 不可用时会怎样?
- Strict Mode 会强制改变哪些 terminal、browser、artifact 和 file access 行为?
- Sandbox 和 Request Review 的职责有什么不同?
通过标准:你能为一个含 secrets 的真实项目配置 strict mode、安全 URL 范围和 terminal sandbox,并解释哪些动作需要人工确认。
官方来源
- Google Antigravity Allowlist / Denylist —— 官方说明 browser URL denylist、allowlist、localhost 初始状态和 denylist 优先级。
- Google Antigravity Strict Mode —— 官方说明 strict mode 对 URL、terminal、browser JavaScript、artifact review 和 file access 的强制收紧。
- Google Antigravity Sandboxing Terminal Commands —— 官方说明 macOS / Linux sandbox、文件系统限制、网络限制、bypass 和 strict mode 关系。