权限规则测试器
拿真实命令去试你的权限规则,看清究竟哪一条胜出。
规则和命令常常指向内部脚本与路径。一切都在浏览器里判定,不会上传。
给这些工具加上钩子
关于 权限规则测试器
权限规则看着像通配符,行为却更窄,麻烦就从这儿开始。规则是拿命令的原样去比对的,而且末尾没有隐含的通配符:能覆盖一条测试命令的规则,在同一条命令末尾多加一个参数后就覆盖不到了。拒绝胜过询问,询问胜过允许,什么都对不上的则落到当前模式的默认行为。这些道理说起来容易,写十几条规则时却很难都记在脑子里。这里可以直接试:贴上规则,贴上你打算跑的命令,逐条看到结果和拍板的那条规则。它还会找出永远不可能触发的规则,包括压在更宽的拒绝之下的允许规则。
功能特性
- 每条命令的结果,以及拍板的那条规则
- 拒绝高于询问高于允许,与真实的判定顺序一致
- 找出被更宽规则覆盖而永远不会触发的规则
- 识别被拒绝规则弄成永远够不着的允许规则
- 报告根本不是规则的行
- 没有匹配的命令如实标出,而不是替你猜
- 通配符按写法处理——没有看不见的末尾匹配
- 输出 settings.json 的权限块
如何使用 权限规则测试器
- 贴上你的允许、询问和拒绝规则
- 贴上你打算跑的命令
- 逐条看结果和拍板的规则
- 把权限块复制进 settings.json
示例
输入
Bash(npm run test)
输出
npm run test:unit — no rule matched
没有隐含通配符:这条规则只覆盖这一条命令。
常见错误与故障排除
- 我的规则没覆盖到预期的命令。 — 末尾没有通配符。Bash(npm run test) 只匹配这一条命令;要覆盖各种变体请用 Bash(npm run test:*)。
- 已经允许的命令还是会询问。 — 有优先级更高的规则也匹配上了。每条命令的所有匹配规则都会按判定顺序列出。
- 我的某条规则被标为永远够不着。 — 有一条同等或更高优先级的更宽规则已经把它全覆盖了。压在宽泛拒绝之下的允许是典型情形:拒绝总是胜出,那条允许什么都做不了。
- 某一行被报告为不是规则。 — 规则形如 Tool 或 Tool(模式)。没有工具前缀的裸命令不是规则,会被忽略。
常见问题
- 这个模式是 glob 还是正则?
- 严格说都不是。它是字面匹配,其中 * 代表任意一段字符,作用在命令的原样文本上。正则语法会被当作字面文本,所以带点号的规则只匹配点号。
- 没有任何规则匹配的命令会怎样?
- 它落到当前权限模式的默认行为,可能是询问,也可能是允许。这里如实标为"无匹配"而不是替你猜,因为答案取决于模式而不是规则。
- 多条规则同时匹配时哪条胜出?
- 先拒绝,再询问,最后允许。每条命令的全部匹配都会列出,让你直接看到什么被压过了,而不用去推断。
- 为什么会标出拒绝之下的允许?
- 因为那条允许永远不可能生效——拒绝总是胜出。人们写它是想给宽泛的拒绝开个口子,而没有任何报错告诉他们它什么都没做。
- 该主要写允许规则还是拒绝规则?
- 真正立得住的是拒绝。允许清单让日常工作变得安静;拒绝清单挡住的正是你绝不希望发生的事,而且它压过其他一切。
相关工具
- 钩子构建器 — 构建 settings.json 钩子,找出永远不会触发的匹配式。
- 子代理构建器 — 生成子代理定义文件,含工具与模型设置。
- 斜杠命令构建器 — 构建自定义命令,带参数与工具白名单。
- MCP 服务器配置 — 为 stdio、HTTP 或 SSE 生成 MCP 服务器条目。
- 项目说明构建器 — 写一份对得起每次请求开销的 CLAUDE.md。
- 技能构建器 — 编写 SKILL.md,边输入边检查 frontmatter。
更多AI 与智能体工具
查看全部AI 与智能体工具 · 全部工具