再次确认:执行前,它都查一遍规则
Claude 决定调用某个工具时,系统在真正执行前会走一套判断流程:
Claude 决定调用工具(如 Bash("rm temp.txt"))
↓
第一关:权限模式检查
├── bypassPermissions?→ 直接执行,跳过所有检查
└── 其他模式 → 继续
↓
第二关:规则匹配
├── 找到 allow 规则?→ 自动执行
├── 找到 deny 规则? → 直接拒绝,返回错误给 Claude
└── 无匹配规则 → 继续
↓
第三关:Hook 检查(见第五节)
├── PreToolUse hook 返回 block?→ 拒绝
└── 通过 → 继续
↓
第四关:工具自身的 checkPermissions()
├── 工具判断危险?→ 弹出确认框
└── 安全 → 执行
↓
执行工具
↓
PostToolUse hook 执行(事后处理)
当弹出确认框时,用户看到的提示消息由 createPermissionRequestMessage() 生成,会准确说明是哪条规则要求确认,或哪个 Hook 触发了拦截。