Appearance
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,每个目录只需选择一次。
不信任时的限制
未信任的工作区在"安全模式"下运行,以下功能全部禁用:
- 忽略项目 settings.json:不加载
.gemini/settings.json - 忽略
.env文件:不加载项目环境变量 - 禁止扩展管理:无法安装、更新或卸载扩展
- 工具自动批准禁用:即使全局开启了自动批准,此工作区内的工具调用也必须手动确认
- 自动记忆加载禁用:不自动从本地设置指定目录加载文件到上下文
- MCP 服务器不连接:不连接项目配置的 MCP 服务器
- 自定义命令不加载:不加载
.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信任优先级(高级)
信任检查按以下顺序进行:
- IDE 信任信号:如果通过 IDE 集成启动,IDE 的信任状态优先
- 本地信任文件:检查
~/.gemini/trustedFolders.json - 弹出对话框:前两项都没有记录时,弹出信任对话框
常见问题
Q: 每次克隆新仓库都要点一次信任对话框吗?
A: 是的,每个新目录首次运行时需要确认一次,之后记录在 trustedFolders.json,不再重复弹出。如果所有项目都放在同一个父目录(如 ~/projects/),可以选择"信任父文件夹"一次性授权所有子目录。
Q: 已信任的目录被同事发现恶意代码怎么办?
A: 编辑 ~/.gemini/trustedFolders.json,删除或修改对应条目,再次运行时会重新弹出信任对话框。
Q: 这个功能和 .geminiignore 有什么区别?
A: .geminiignore 控制哪些文件被 AI 读取;Trusted Folders 控制哪些目录的配置文件(settings.json、hooks、MCP 服务器等)被加载执行。两者是不同维度的安全控制。