权限裁决漏斗
同一个工具调用,Hook、规则、模式、分类器都插得上手——到底谁说了算?点一个测试调用,看它逐关走完四层漏斗:Hook 先表态但 allow 不终审,deny 是任何模式都翻不掉的一票否决,ask 点名必问,模式只定「没人管时问不问」的基线。allow 从来不是通行证,deny 才是法律。
纯前端确定性模拟:裁决逻辑与知识库《权限机制》动手节 decide() 六步伪代码逐字对齐,零 API、零随机。
一次工具调用进闸,四层漏斗层层收窄:预检硬底线 → 第 1 关 Hook → 第 2 关规则(deny 一票否决 → ask 点名必问)→ 第 3 关模式基线,末了 allow 白名单速通、canUseTool 兜底。拧下面三组开关,点一个测试调用看它逐关怎么走。
模式档位 · 没人管时问不问(第 3 关基线)
deny · 拉黑一票否决
ask · 点名必问
allow · 白名单速通
提交一次测试调用
文章走查主例:Hook 的 allow 被 deny 否掉
裁决之路 · 逐关判词
git push --force00预检 · 硬底线横切各层通过
预检通过:非关键路径删除、无需人交互的工具
01第 1 关 · Hook安全扫描 Hook跳过
Hook 未挂载,本关直接通过
02第 2 关 · deny 规则一票否决终局在此
deny 命中:Bash(git push *)(强推走人工:先建分支再推)——任何层的 deny 谁都翻不了案,Hook 的 allow 也保不住 → 拒绝
拒绝 · 理由回填模型
拒绝 · 理由回填模型——拒绝不是终点,模型可以换条路(比如先建分支再推)。
deny > ask > allow规则之间的相对次序:deny 是任何模式都翻不掉的一票否决;ask 点名必问,allow 也保不住;allow 只是白名单速通,还排在模式表态之后。
Hook 先表态Hook 可拦(理由回填),但说「允许」也要往下走——allow 从来不是通行证,deny 才是真正的法律。
模式只是基线模式决定「没人管时问不问」(auto 由分类器代审),规则叠加其上;ask 规则、关键路径删除、需人交互的工具,任何模式都不自动批准——包括 bypass。