策略引擎与企业配置
用策略引擎对工具调用做细粒度允许、拒绝或询问;用系统设置文件、白名单、MCP 目录、强制沙箱和代理做企业部署。
策略引擎
Gemini CLI 的策略引擎提供对工具执行的细粒度控制:让用户和管理员定义规则,决定某个工具调用应该被允许、拒绝还是需要用户确认。
快速开始
-
创建策略目录(如果还不存在):
mkdir -p ~/.gemini/policies(Windows PowerShell 用New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.gemini\policies") -
创建策略文件,如
~/.gemini/policies/my-rules.toml(任何以.toml结尾的文件名都行,该目录里所有这类文件都会被加载并合并):[[rule]] toolName = "run_shell_command" commandPrefix = "rm -rf" decision = "deny" priority = 100 -
运行触发该策略的命令(例如让 Gemini CLI 执行
rm -rf /),工具现在会被自动阻止
核心概念
策略引擎基于一组规则运行,每条规则是条件和结果决定的组合。大语言模型要执行某个工具时,策略引擎评估所有规则,找出匹配该工具调用的最高优先级规则。规则由这些部分组成:
- 条件:工具调用必须满足的标准,可以包括工具的名称、提供的参数或当前的审批模式
toolName:必须匹配被调用工具的名字;支持通配符:*(匹配任何工具,内置或 MCP)、mcp_server_*(匹配某个 MCP 服务器的任何工具)、mcp_*_toolName(匹配所有 MCP 服务器上的某个特定工具名)、mcp_*(匹配任何 MCP 服务器的任何工具)。官方推荐对 MCP 工具使用 TOML 规则里的mcpName字段argsPattern:指定后,工具参数被转换为稳定的 JSON 字符串,再用提供的正则表达式测试,参数不匹配该模式时规则不适用interactive:指定后,规则只在 CLI 的执行环境匹配该布尔值时适用(true仅交互模式,false仅非交互/无头模式,省略则两者都适用)
- 决定:三种可能:
allow(工具调用自动执行,无需用户交互)、deny(工具调用被阻止且不执行;对没有argsPattern的全局规则,被拒绝的工具会完全从模型的记忆里排除,模型甚至看不到该工具作为选项,更安全也节省上下文窗口空间)、ask_user(提示用户批准或拒绝;在非交互模式下被当作deny) - 优先级:数字决定规则的优先顺序,数字越大优先级越高
deny 决定是排除工具的推荐方式;settings.json 里旧的 tools.exclude 设置已弃用,改用带 deny 决定的策略规则。官方文档还介绍了策略层级(默认、用户、管理员等)、MCP 工具的特殊语法和审批模式相关规则,以官方原文为准。
企业配置
官方「Gemini CLI for the enterprise」页给出在企业环境里部署和管理 Gemini CLI 的配置模式和最佳实践:管理员通过系统级设置可以强制安全策略、管理工具访问并保证所有用户的一致体验。
官方警告:这些模式旨在帮助管理员创建更受控、更安全的环境,但不应被视为万无一失的安全边界。在本机有足够权限的坚决用户仍可能绕过这些配置。这些措施的设计目的是防止意外误用并在受管环境里强制执行公司政策,而不是防御拥有本地管理员权限的恶意行为者。
集中配置:系统设置文件
最强大的企业管理工具是系统范围的设置文件,让你定义基线配置(system-defaults.json)和一组应用于机器上所有用户的覆盖(settings.json)。设置从四个文件合并,单值设置(如 theme)的优先顺序:
- 系统默认值(
system-defaults.json) - 用户设置(
~/.gemini/settings.json) - 工作区设置(
<项目>/.gemini/settings.json) - 系统覆盖(
settings.json)
所以系统覆盖文件有最终决定权。对数组(如 includeDirectories)或对象(如 mcpServers)类型的设置,值会被合并。系统设置文件的路径可以用 GEMINI_CLI_SYSTEM_SETTINGS_PATH 环境变量覆盖;官方还给出用包装脚本强制该环境变量的做法,以及共享环境里的用户隔离。
其他企业控制(见官方原文)
- 限制工具访问:用
coreTools白名单;用excludeTools黑名单(已弃用);禁用 YOLO 模式 - 管理自定义工具(MCP 服务器):MCP 服务器配置如何合并、强制一个工具目录、限制 MCP 服务器里的工具(官方指出省略白名单是较不安全的模式)
- 强制沙箱以保证安全
- 通过代理控制网络访问
- 遥测和审计
- 认证:包括把登录限制到公司域名
官方页末给出一个把这些放在一起的系统 settings.json 示例。