ArrayKit

权限规则测试器

拿真实命令去试你的权限规则,看清究竟哪一条胜出。

权限规则测试器

拿真实命令去试你的权限规则,看清究竟哪一条胜出。

规则和命令常常指向内部脚本与路径。一切都在浏览器里判定,不会上传。

给这些工具加上钩子

关于 权限规则测试器

权限规则看着像通配符,行为却更窄,麻烦就从这儿开始。规则是拿命令的原样去比对的,而且末尾没有隐含的通配符:能覆盖一条测试命令的规则,在同一条命令末尾多加一个参数后就覆盖不到了。拒绝胜过询问,询问胜过允许,什么都对不上的则落到当前模式的默认行为。这些道理说起来容易,写十几条规则时却很难都记在脑子里。这里可以直接试:贴上规则,贴上你打算跑的命令,逐条看到结果和拍板的那条规则。它还会找出永远不可能触发的规则,包括压在更宽的拒绝之下的允许规则。

功能特性

  • 每条命令的结果,以及拍板的那条规则
  • 拒绝高于询问高于允许,与真实的判定顺序一致
  • 找出被更宽规则覆盖而永远不会触发的规则
  • 识别被拒绝规则弄成永远够不着的允许规则
  • 报告根本不是规则的行
  • 没有匹配的命令如实标出,而不是替你猜
  • 通配符按写法处理——没有看不见的末尾匹配
  • 输出 settings.json 的权限块

如何使用 权限规则测试器

  1. 贴上你的允许、询问和拒绝规则
  2. 贴上你打算跑的命令
  3. 逐条看结果和拍板的规则
  4. 把权限块复制进 settings.json

示例

输入

Bash(npm run test)

输出

npm run test:unit — no rule matched

没有隐含通配符:这条规则只覆盖这一条命令。

常见错误与故障排除

  • 我的规则没覆盖到预期的命令。 — 末尾没有通配符。Bash(npm run test) 只匹配这一条命令;要覆盖各种变体请用 Bash(npm run test:*)。
  • 已经允许的命令还是会询问。 — 有优先级更高的规则也匹配上了。每条命令的所有匹配规则都会按判定顺序列出。
  • 我的某条规则被标为永远够不着。 — 有一条同等或更高优先级的更宽规则已经把它全覆盖了。压在宽泛拒绝之下的允许是典型情形:拒绝总是胜出,那条允许什么都做不了。
  • 某一行被报告为不是规则。 — 规则形如 Tool 或 Tool(模式)。没有工具前缀的裸命令不是规则,会被忽略。

常见问题

这个模式是 glob 还是正则?
严格说都不是。它是字面匹配,其中 * 代表任意一段字符,作用在命令的原样文本上。正则语法会被当作字面文本,所以带点号的规则只匹配点号。
没有任何规则匹配的命令会怎样?
它落到当前权限模式的默认行为,可能是询问,也可能是允许。这里如实标为"无匹配"而不是替你猜,因为答案取决于模式而不是规则。
多条规则同时匹配时哪条胜出?
先拒绝,再询问,最后允许。每条命令的全部匹配都会列出,让你直接看到什么被压过了,而不用去推断。
为什么会标出拒绝之下的允许?
因为那条允许永远不可能生效——拒绝总是胜出。人们写它是想给宽泛的拒绝开个口子,而没有任何报错告诉他们它什么都没做。
该主要写允许规则还是拒绝规则?
真正立得住的是拒绝。允许清单让日常工作变得安静;拒绝清单挡住的正是你绝不希望发生的事,而且它压过其他一切。

相关工具

更多AI 与智能体工具

查看全部AI 与智能体工具 · 全部工具