Skip to content

Gemini CLI 的 Trusted Folders 功能(默认禁用)在首次进入新目录时弹出信任确认对话框,防止不可信项目的 settings.json、环境变量、MCP 服务器和自定义命令被自动加载。未信任的工作区在"安全模式"下运行,禁用了项目级配置和自动工具批准。CI/CD 环境用 --skip-trust 标志或 GEMINI_CLI_TRUST_WORKSPACE=true 环境变量跳过交互。

可信文件夹(Trusted Folders)

Trusted Folders 是 Gemini CLI 的安全机制,防止恶意项目的配置文件在未经授权的情况下修改 CLI 行为。

启用方式(默认禁用)

在用户级 settings.json 中添加:

json
{
  "security": {
    "folderTrust": {
      "enabled": true
    }
  }
}

工作原理:信任对话框

启用后,第一次在新目录运行 Gemini CLI 时,会自动弹出信任确认对话框,显示该目录下发现的内容(命令、MCP 服务器、Hooks、Skills、设置覆盖项),以及安全警告。

三个选择

选项效果
信任此文件夹授予当前目录完整权限
信任父文件夹授予父目录及所有子目录权限(适合将多个项目统一放在一个目录下的场景)
不信任以受限"安全模式"运行

选择结果保存在 ~/.gemini/trustedFolders.json,每个目录只需选择一次。

不信任时的限制

未信任的工作区在"安全模式"下运行,以下功能全部禁用:

  1. 忽略项目 settings.json:不加载 .gemini/settings.json
  2. 忽略 .env 文件:不加载项目环境变量
  3. 禁止扩展管理:无法安装、更新或卸载扩展
  4. 工具自动批准禁用:即使全局开启了自动批准,此工作区内的工具调用也必须手动确认
  5. 自动记忆加载禁用:不自动从本地设置指定目录加载文件到上下文
  6. MCP 服务器不连接:不连接项目配置的 MCP 服务器
  7. 自定义命令不加载:不加载 .toml 自定义命令文件

信任后的管理

修改当前目录的信任级别:在 CLI 中运行 /permissions trust,重新弹出信任对话框。

查看所有信任规则:查看 ~/.gemini/trustedFolders.json 文件内容。

CI/CD 和自动化环境

在无界面环境(如 GitHub Actions、本地 CI)中,交互式对话框无法显示,Gemini CLI 会直接报错退出(FatalUntrustedWorkspaceError)。

两种绕过方式

bash
# 方式一:命令行标志(单次有效)
gemini --skip-trust -p "your prompt"

# 方式二:环境变量
export GEMINI_CLI_TRUST_WORKSPACE=true
gemini -p "your prompt"

两种方式都只信任当前会话,不修改 trustedFolders.json

信任文件存储位置

默认:~/.gemini/trustedFolders.json

如需更改存储路径(例如共享配置):

bash
export GEMINI_CLI_TRUSTED_FOLDERS_PATH=/custom/path/trustedFolders.json

信任优先级(高级)

信任检查按以下顺序进行:

  1. IDE 信任信号:如果通过 IDE 集成启动,IDE 的信任状态优先
  2. 本地信任文件:检查 ~/.gemini/trustedFolders.json
  3. 弹出对话框:前两项都没有记录时,弹出信任对话框

常见问题

Q: 每次克隆新仓库都要点一次信任对话框吗?

A: 是的,每个新目录首次运行时需要确认一次,之后记录在 trustedFolders.json,不再重复弹出。如果所有项目都放在同一个父目录(如 ~/projects/),可以选择"信任父文件夹"一次性授权所有子目录。

Q: 已信任的目录被同事发现恶意代码怎么办?

A: 编辑 ~/.gemini/trustedFolders.json,删除或修改对应条目,再次运行时会重新弹出信任对话框。

Q: 这个功能和 .geminiignore 有什么区别?

A: .geminiignore 控制哪些文件被 AI 读取;Trusted Folders 控制哪些目录的配置文件(settings.json、hooks、MCP 服务器等)被加载执行。两者是不同维度的安全控制。