基础设施-工具配置-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 → 短路放行
- 关键区分:
bypassPermissions:跳过普通权限审批- 高危命令检查:独立于 bypass,对
rm -rf、sudo、ssh等是硬编码强制确认
解决方法
- 在用户级 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 后新配置才生效,未生效前仍会弹确认