权限管理 (Permissions)
保护您的本地工作站、限制绝对文件路径、配置自定义的 允许/拒绝/询问 策略,并管理交互式审批。
细粒度权限 (Fine-grained permissions)
为了在启用自主工作流的同时保护您的工作站,Antigravity CLI 集成了一个强大的细粒度权限引擎 (Fine-Grained Permissions Engine)。Agent 执行的每个敏感操作都表示为一个格式为 action(target) 的权限资源。
权限是通过您全局设置中配置的三个不同访问列表来评估的:
~/.gemini/antigravity-cli/settings.json
deny:该操作将被立即拦截。
ask:Agent 会暂停并提示您进行明确批准,然后才能继续。
allow:该操作将被自动批准,无需提示。[!WARNING] 优先级规则:冲突的规则会严格按照优先级顺序进行评估:
Deny > Ask > Allow。例如,如果您在ask列表中配置了command(*),并在allow列表中配置了command(git),则ask规则优先,在每个命令执行前都会提示。
支持的操作与匹配规则 (Supported actions & matching rules)
细粒度权限遵循标准的模式语法:
action(target)支持的操作、目标格式规范和匹配算法如下:
| 操作 (Action) | 目标格式 (Target Format) | 匹配行为 (Matching Behavior) | 默认回退 (Default Fallback) |
|---|---|---|---|
| read_file | read_file(/path)、read_file(dir) 或 read_file(*) | 匹配绝对路径或相对于工作空间根目录的路径。递归授予对其中包含的所有文件/文件夹的读取权限。read_file(*) 匹配系统上的所有文件。 | 询问 (在工作空间内自动允许) |
| write_file | write_file(/path) 或 write_file(*) | 与 read_file 相同。隐式授予对完全相同目标路径的 read_file 权限。 | 询问 (在工作空间内自动允许) |
| read_url | read_url(domain) 或 read_url(*) | 匹配主机名和子域名(例如:google.com 覆盖 mail.google.com)。忽略 URL 路径片段。read_url(*) 匹配任何域名。 | 询问 |
| execute_url | execute_url(domain) 或 execute_url(*) | 触发网页元素(点击、输入)或在一个域名上驱动交互式的浏览器工作流。 | 询问 |
| command | command(prefix)、command(regex) 或 command(*) | 通过精确的单词/Token 前缀匹配命令。每个由空格分隔的 Token 都会被评估为一个有锚定的正则表达式(^(?:pattern)$)。例如,command(npm run (build|lint|test)) 会匹配 npm run build 和 npm run test。 | 询问 |
| unsandboxed | unsandboxed(prefix) 或 unsandboxed(*) | 通过精确的单词/Token 前缀匹配命令。匹配此授予的命令将在容器隔离之外执行(仅在启用终端沙箱时适用)。 | 询问 |
| mcp | mcp(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)
当某项操作未显式列在您的 allow、deny 或 ask 列表中时,系统将回退到安全系统默认设置:
- 工作空间自动允许:在标准操作中,自动允许读取和写入您当前活跃项目目录中的文件。
- 网页浏览默认询问:
read_url和execute_url的操作默认设为询问 (Ask)。在 Agent 导航到或在任何网页上操作之前,除非配置了allow规则,否则它会暂停并提示您进行审批。 - 未配置的操作默认询问:所有其他未配置的操作(如
command、mcp、execute_url、非工作空间文件)默认设为询问 (Ask)。
交互式权限提示 (Interactive permission prompts)
当 Agent 遇到需要审批的操作时(询问模式),TUI 中会出现一个交互式提示卡片。
在确认允许文件、URL 或 MCP 权限之前,您可以直接在提示卡片中编辑目标字符串,以扩大授予的范围(例如,将对单个文件 /project/file.txt 的请求扩大为父目录 /project)。CLI 会验证您编辑后的目标是否能够安全覆盖该操作,并在该轮次的其余时间内应用扩大的授权,从而防止对相关操作进行重复提示。(注意:终端命令不支持范围编辑)。
配置示例 (Configuration examples)
将这些规则添加到您的 ~/.gemini/antigravity-cli/settings.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 中文文档