Skip to content

权限管理 (Permissions)

保护您的本地工作站、限制绝对文件路径、配置自定义的 允许/拒绝/询问 策略,并管理交互式审批。

细粒度权限 (Fine-grained permissions)

为了在启用自主工作流的同时保护您的工作站,Antigravity CLI 集成了一个强大的细粒度权限引擎 (Fine-Grained Permissions Engine)。Agent 执行的每个敏感操作都表示为一个格式为 action(target) 的权限资源。

权限是通过您全局设置中配置的三个不同访问列表来评估的:

text
~/.gemini/antigravity-cli/settings.json
deny:该操作将被立即拦截。
ask:Agent 会暂停并提示您进行明确批准,然后才能继续。
allow:该操作将被自动批准,无需提示。

[!WARNING] 优先级规则:冲突的规则会严格按照优先级顺序进行评估:Deny > Ask > Allow。例如,如果您在 ask 列表中配置了 command(*),并在 allow 列表中配置了 command(git),则 ask 规则优先,在每个命令执行前都会提示。

支持的操作与匹配规则 (Supported actions & matching rules)

细粒度权限遵循标准的模式语法:

text
action(target)

支持的操作、目标格式规范和匹配算法如下:

操作 (Action)目标格式 (Target Format)匹配行为 (Matching Behavior)默认回退 (Default Fallback)
read_fileread_file(/path)read_file(dir)read_file(*)匹配绝对路径或相对于工作空间根目录的路径。递归授予对其中包含的所有文件/文件夹的读取权限。read_file(*) 匹配系统上的所有文件。询问 (在工作空间内自动允许)
write_filewrite_file(/path)write_file(*)read_file 相同。隐式授予对完全相同目标路径的 read_file 权限。询问 (在工作空间内自动允许)
read_urlread_url(domain)read_url(*)匹配主机名和子域名(例如:google.com 覆盖 mail.google.com)。忽略 URL 路径片段。read_url(*) 匹配任何域名。询问
execute_urlexecute_url(domain)execute_url(*)触发网页元素(点击、输入)或在一个域名上驱动交互式的浏览器工作流。询问
commandcommand(prefix)command(regex)command(*)通过精确的单词/Token 前缀匹配命令。每个由空格分隔的 Token 都会被评估为一个有锚定的正则表达式(^(?:pattern)$)。例如,command(npm run (build|lint|test)) 会匹配 npm run buildnpm run test询问
unsandboxedunsandboxed(prefix)unsandboxed(*)通过精确的单词/Token 前缀匹配命令。匹配此授予的命令将在容器隔离之外执行(仅在启用终端沙箱时适用)。询问
mcpmcp(server/tool)mcp(*)匹配精确的 MCP 工具或指定服务端上的所有工具(适用于本地 MCP 服务端和远程连接)。mcp(*) 匹配任何工具。询问

全局通配符语法

在所有支持的操作类型中,传入全局通配符 *(例如 read_file(*)command(*)mcp(*))将匹配该操作命名空间下的所有目标。

隐式权限规则

  • 写隐含读 (Write implies Read):允许对某个路径执行 write_file 会自动授予对该路径的 read_file 权限。
  • 拒读隐含拒写 (Deny Read implies Deny Write):拒绝某个路径的 read_file 权限会立即拦截对该路径的 write_file 权限。

跨平台路径规范化 (Cross-platform path normalization)

无论您是在 macOS、Linux 还是 Windows 上进行开发,Jetski 都能确保您的权限规则无缝运行。在 macOS 和 Linux 上,路径使用标准正斜杠 (/)。在 Windows 上,Jetski 在规则评估之前会自动规范化路径,移除盘符(例如 C:)并将所有反斜杠 (\) 转换为正斜杠 (/)。

默认系统行为与安全护栏 (Default system behaviors & guardrails)

当某项操作未显式列在您的 allowdenyask 列表中时,系统将回退到安全系统默认设置:

  • 工作空间自动允许:在标准操作中,自动允许读取和写入您当前活跃项目目录中的文件。
  • 网页浏览默认询问read_urlexecute_url 的操作默认设为询问 (Ask)。在 Agent 导航到或在任何网页上操作之前,除非配置了 allow 规则,否则它会暂停并提示您进行审批。
  • 未配置的操作默认询问:所有其他未配置的操作(如 commandmcpexecute_url、非工作空间文件)默认设为询问 (Ask)。

交互式权限提示 (Interactive permission prompts)

当 Agent 遇到需要审批的操作时(询问模式),TUI 中会出现一个交互式提示卡片。

在确认允许文件、URL 或 MCP 权限之前,您可以直接在提示卡片中编辑目标字符串,以扩大授予的范围(例如,将对单个文件 /project/file.txt 的请求扩大为父目录 /project)。CLI 会验证您编辑后的目标是否能够安全覆盖该操作,并在该轮次的其余时间内应用扩大的授权,从而防止对相关操作进行重复提示。(注意:终端命令不支持范围编辑)。

配置示例 (Configuration examples)

将这些规则添加到您的 ~/.gemini/antigravity-cli/settings.json 文件中:

json
{
  "permissions": {
    "allow": [
      "command(git)",
      "command(npm run (build|lint|test))",
      "unsandboxed(git push)",
      "read_file(/var/log/app)",
      "write_file(src/)",
      "read_url(google.com)",
      "mcp(linter/*)"
    ],
    "deny": [
      "command(rm -rf)",
      "command(curl .*)",
      "command(sudo)",
      "write_file(.git/)",
      "write_file(/home/user/.ssh)"
    ],
    "ask": [
      "command(*)",
      "execute_url(aws.amazon.com)",
      "mcp(sql/execute_mutation)"
    ]
  }
}

参见 (See also)

  • 沙箱自定义:强制执行系统级的容器隔离边界。
  • 插件与技能:创建您自己的自定义技能和斜杠命令。
  • 设置、渲染与键绑定:自定义键盘快捷键和缓冲区。

Gemini中文文档