Verboo Code:如何用 /permissions 允许或阻止代理执行的命令
返回博客
文章verboo codetutorialagente de programaçãosegurançadev tools

Verboo Code:如何用 /permissions 允许或阻止代理执行的命令

Mafra2026年9月28日阅读约 4 分钟

代理第二十次请求确认才能运行 npm run test,你开始不看内容就按 Enter。一条错误的 rm 恰恰就是这时候溜过去的。解决办法不是关掉所有确认,而是逐条规则告诉 Verboo Code:哪些可以自己做,哪些必须先问,哪些永远不能做。这就是 /permissions 的用途。本文给出具体命令、规则语法,以及每条规则保存在哪里。

Verboo Code 的 /permissions 是做什么的?

它打开一个面板,用来创建、查看和删除代理工具的权限规则。每条规则决定某个工具(或该工具的某条具体命令)是无需询问直接放行、每次都要确认,还是一律拒绝。

该命令也可以用别名 /allowed-tools 调用。面板有五个标签:

标签作用
Recently denied列出最近被 auto 模式分类器拒绝的命令,可以批准或重试
AllowVerboo Code 使用这些工具前不再询问
AskVerboo Code 使用这些工具前总是请求确认
DenyVerboo Code 总是拒绝使用这些工具
Workspace项目之外、代理可以访问的额外目录
Verboo Code 中 /permissions 的流程图:打开面板,用 Bash(npm run test:*) 放行日常操作,用 Read(**/.env) 阻止敏感操作,规则没有生效时检查 deny、ask、allow 的判定顺序
在 Verboo Code 中配置权限的三个步骤,以及规则没有生效时要检查什么。已在 v0.15.34 源码中核实。

权限规则怎么写?

规则由工具名组成,后面可以跟一个括号内的限定符。没有括号时,规则作用于整个工具。

规则匹配范围
WebFetchWebFetch 工具的任何调用
Bash任何终端命令
Bash(npm run test:*)任何以 npm run test 开头的命令
Bash(git status)仅限命令 git status 本身
Read(**/.env)读取任意目录下的 .env 文件
WebFetch(domain:docs.python.org)WebFetch 对该域名的请求

结尾的 :* 让 Bash 规则变成前缀匹配,面板上的描述是 "Any Bash command starting with"。没有它,规则只匹配完全相同的命令。在 Read、Edit 这类文件规则中,限定符遵循 .gitignore 的模式,所以 ** 可以跨目录匹配。

如果命令里有括号,用反斜杠转义:Bash(python -c "print\(1\)")。

怎样放行一条命令,让代理不再询问?

打开面板,进入 Allow 标签,选择 Add a new rule…,输入规则:

/permissions
# Allow 标签 → Add a new rule… →
Bash(npm run test:*)

输入规则后,Verboo Code 会询问保存位置,共有三个选项:

面板中的选项文件适用场景
Project settings (local).verboo/settings.local.json只对你、只对当前项目
Project settings.verboo/settings.json整个团队,提交到 git
User settings~/.verboo/settings.json你自己,所有项目

规则也可以直接写进文件,不用打开面板。格式如下:

{
  "permissions": {
    "allow": [
      "Bash(npm run test:*)",
      "Bash(npm run lint:*)",
      "Bash(git status)",
      "Bash(git diff:*)"
    ],
    "ask": [
      "Bash(git push:*)"
    ],
    "deny": [
      "Read(**/.env)",
      "Bash(rm -rf:*)"
    ]
  }
}

为你总会批准的命令(测试、lint、只读的 git 操作)建一个简短的 allow 列表,就能去掉大部分确认,同时不放过任何危险操作。

怎样彻底阻止某个文件或命令?

把规则放进 Deny 标签。Deny 是自动拒绝:代理直接收到拒绝结果,根本不会来问你。

/permissions
# Deny 标签 → Add a new rule… →
Read(**/.env)

Read 规则作用于文件读取工具。如果你想在操作系统层面再加一层保护,可以把规则和 Verboo Code 的沙箱结合使用,它会隔离终端命令。

来自企业托管配置(managed settings)的规则会在面板中显示"不可修改"的提示,这种情况只有管理员能改。

为什么我的 allow 规则不起作用?

几乎都是因为有 deny 或 ask 规则匹配了同一条命令。Verboo Code 的判定顺序是:先 deny,再 ask,最后才是 allow。allow 永远赢不了 deny。

要检查三点:

  • 所有文件中的规则都会生效。~/.verboo/settings.json 里的 deny,即使项目的 .verboo/settings.json 放行了,依然会阻止。
  • 即使使用 --dangerously-skip-permissions,deny 依然有效。在代码中,deny 检查先于权限模式检查执行,所以连跳过确认的模式也绕不过它。
  • 没有 :* 的前缀就是精确命令。Bash(npm run test) 不会放行 npm run test -- --watch。

在列表中选中某条规则时,面板会显示它来自哪个文件,大多数问题几秒钟就能定位。

可以通过命令行传入权限吗?

可以,适合一次性会话或 CI。这些参数接受逗号或空格分隔的列表:

verboo --allowedTools "Bash(git:*) Edit" --disallowedTools "Bash(git push:*)"

如果要改变整体行为,而不只是单条规则,使用 --permission-mode。可用模式有 default、plan、acceptEdits、bypassPermissions 和 dontAsk。同样的值也可以写进 settings:

{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

怎样允许访问项目之外的目录?

在 /permissions 的 Workspace 标签中添加目录。Verboo Code 会询问只对本次会话生效,还是保存到项目的本地设置。在文件中对应的键是 additionalDirectories:

{
  "permissions": {
    "additionalDirectories": ["../shared-lib"]
  }
}

规则配好后,代理可以连续跑测试和 lint 而不用叫你,多试几次也不会多花钱:Verboo Code 提供无限 token。

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

相关文章