Gemini CLI沙箱修复:trap包裹命令致per-command规则失效

MauroDruwel · ghdev · 2026-10-13

这是 google-gemini/gemini-cli 的一个 PR(#29726),修复 POSIX 平台(Linux/macOS)上 sandbox.toml 中 per-command 规则和会话权限审批从不生效的 bug。

根因:为监控后台任务,Shell 工具会用带 EXIT trap 的 subshell 包裹用户命令,而此前沙箱命令解析的 root 过滤只跳过 shopt 和 set,导致命令名被错误识别为 trap,配置的规则(如 [commands.gradlew])匹配失败,出现只读文件系统或无网络等报错。

修复方式是把 IGNOREDCOMMANDROOTS(shopt/set/trap)集中到 shell-utils.ts,并在各平台 SandboxManager、commandUtils.getCommandName 等处统一使用,同时补齐了覆盖包裹命令与 per-command 权限的单元测试。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →