Gemini CLI 在 YOLO 模式下出现 "Untrusted Command Flags Detected":如何解决
返回博客
文章inteligência artificialtecnologiaautomação

Gemini CLI 在 YOLO 模式下出现 "Untrusted Command Flags Detected":如何解决

Mafra2026年10月13日阅读约 4 分钟

你用 --yolo 运行 Gemini CLI,它却还是在 git diff 或 npm test 上停下来,弹出 CRITICAL SECURITY WARNING: Untrusted Command Flags Detected 要求确认。大多数情况下,这是当前稳定版 0.63.0 的误报,修复已经在 0.64.0-preview.1 中发布。

本文说明这个警告为什么出现、如何确认你遇到的就是这种情况,以及恢复工作流的两种方法。所有内容均于 2026年10月13日 对照 google-gemini/gemini-cli 仓库的源码和发布记录核对。

"Untrusted Command Flags Detected" 是什么意思?

意思是 Gemini CLI 发现,模型要执行的命令里有一个参数,也出现在对话中被标记为不可信的内容里。它把这视为可能的提示注入,即使在 YOLO 模式下也要求你确认。完整警告如下:

⚠️ CRITICAL SECURITY WARNING: Untrusted Command Flags Detected
The following flags/arguments were sourced from external untrusted input (e.g., Buganizer ticket, external document):
  • .github/workflows/testhub.yml
Executing commands with flags sourced from untrusted input can execute arbitrary code on your machine.
Carefully verify these flags before approving.

出发点没有问题:如果网页或 MCP 的返回内容建议了一个危险参数,智能体不应该自己去执行。0.63.0 的问题在于误报太多。

为什么无害的命令也会触发警告?

因为在 0.63.0 中,shell 自身的输出也被当作不可信内容,其中出现过的任何文件路径都会被视为"可疑"。智能体运行 ls,看到 package.json,下一条命令里的 package.json 就会触发警告。

在 0.63.0 的代码中,shell、web_fetch、网页搜索和 MCP 工具都会把结果包进 <untrusted_context>。追踪器把这段文本拆成词元,连路径也会按每个 / 拆开,再与下一条命令的参数比对。结果就是,项目自己的文件名也成了拦截的理由。

版本行为发布日期
0.62.0没有这项检查2026年9月29日
0.63.0(稳定版,latest 标签)新增检查,普通路径也会误报,YOLO 下同样如此2026年10月6日
0.64.0-preview.1(preview 标签)包含 PR #29672 的修复2026年10月9日
10月10日起的 0.65.0 nightly包含修复每日

为什么 YOLO 模式跳不过这个警告?

因为这项检查在审批策略之后运行。当策略判定"允许"而命令带有污染风险时,Gemini CLI 会改写决定:交互模式下变成确认提示,非交互模式(gemini -p)下直接拒绝调用。在脚本或 CI 中,它表现为工具被策略拦截,而不是弹出提示。

选择"始终允许"也没用:对于被标记为这类风险的命令,Gemini CLI 不会把这次批准保存为规则,每次都会再问一遍。

流程图:YOLO 因 Untrusted Command Flags Detected 要求确认,用 gemini --version 检查版本,用 npm install -g @google/gemini-cli@preview 安装已修复的版本;不想用预览版时,关闭自动更新后回退到 0.62.0
从警告到已修复的版本:三个步骤加一个分支。

如何确认是 0.63.0 的误报?

查看已安装的版本:

gemini --version

如果显示 0.63.0,而警告列出的是你自己项目里的路径(src/index.ts、package.json、某个 workflow 文件),那就是 issue #29682 和 #29676 描述的情况。如果列出的参数来自智能体刚刚读过的网页,请先读一遍命令再批准:这时警告是在正常工作。

如何解决 "Untrusted Command Flags Detected"?

安装已包含修复的预览版。如果你使用 npm 包:

npm install -g @google/gemini-cli@preview
gemini --version

第二行应显示 0.64.0-preview.1 或更新的版本。进入该版本的 PR #29672 不再索引路径片段,只比对真正有风险的模式(URL、绝对路径、脚本扩展名),并放行 git -C、ls -la、grep -rn 等只读参数。

不想用预览版?回退到 0.62.0

  1. 先关闭自动更新,否则 Gemini CLI 会自己升回 0.63.0。在 ~/.gemini/settings.json 中:
    {
      "general": {
        "enableAutoUpdate": false
      }
    }
    同一设置在 /settings 中显示为 Enable Auto Update。
  2. 安装上一个版本:
    npm install -g @google/gemini-cli@0.62.0
  3. 等 latest 标签超过 0.63.0 后,重新打开 enableAutoUpdate 并更新。

不要采用 issue 里流传的捷径,即修改安装包让检查函数始终返回 false。这会关掉整套保护,包括针对网页或 MCP 真正注入的参数。

"Build Configuration Was Recently Modified" 又是怎么回事?

这是同一类的另一项检查,上面的修复不涉及它。如果智能体在会话中修改了构建配置文件,随后又运行 npm、make、pytest 或其他构建、测试命令,Gemini CLI 会显示 CAUTION: Build Configuration Was Recently Modified 并要求确认。2026年10月8日提交的 issue #29687 反映这个警告每条命令都会重复出现,目前仍未关闭。

如果你想在终端里使用编程智能体,又不想操心 token 配额,Verboo Code 提供无限 token。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章