跳转至

基础设施-工具配置-bypassPermissions无法绕过高危命令确认

问题现象

  • 开启了 bypassPermissions 模式(状态栏显示 bypass permissions on
  • 执行 ssh news "rm -rf /www/news/log/monitor" 时仍然弹确认框:
    High risk operation detected - requires confirmation every time
    
  • 导致无人值守时任务被中断,以为在自动跑实则卡在确认

核心问题

  • 根因:CodeBuddy 权限链执行顺序导致 bypassPermissions 无法绕过的高危检查

权限链求值顺序:

Phase 2: 可信 allow 规则  → 可越过危险命令检查
Phase 3: 命令安全检查      → rm -rf/ssh/sudo 等高危命令强制 ask ← 卡在这里
Phase 5: bypassPermissions  → 短路放行
Phase 3 在 Phase 5 之前执行,所以 bypase 也绕不过去。

  • 关键区分
  • bypassPermissions:跳过普通权限审批
  • 高危命令检查:独立于 bypass,对 rm -rfsudossh 等是硬编码强制确认

解决方法

  • 在用户级 settings 添加 trusted allow 规则(Phase 2,可越过高危检查)

编辑 ~/.codebuddy/settings.json

"permissions": {
  "allow": [
    "Bash(ssh news:*)",
    "Bash(git:*)",
    "Bash(pnpm:*)",
    "Bash(venv:*)",
    "Bash(pytest:*)",
    "Bash(python:*)",
    "Bash(mkdir:*)",
    "Bash(cp:*)",
    "Bash(mv:*)",
    "Bash(ls:*)",
    "Bash(cd:*)",
    "Bash(cat:*)"
  ]
}

  • 为什么有效:用户级 settings 是 Phase 2 可信 allow,在 Phase 3 之前执行,直接放行后不再进入高危检查
  • 注意:项目级 settings(.codebuddy/settings.json不是可信来源,其 allow 规则在 Phase 6,仍会被 Phase 3 拦截。必须用用户级(~/.codebuddy/settings.json

下次防错措施

  • 快速定位:弹确认框时看提示文字,若出现 requires confirmation every time 说明是硬编码高危检查,不是普通权限不足
  • 判断策略:如果 bypass 开了还弹确认 → 100% 是高危命令检查 → 需要加 trusted allow 规则
  • 配置校验:重启 CLI 后新配置才生效,未生效前仍会弹确认