详解 Claude Code 源码
赛博浮世绘 · 晓风乾 · 24 站拆解
回首页
详解 Claude Code 安全纵深 4.1 · 权限决策管线
篇章四 · 4.1

权限决策管线

安全体系的中枢:hasPermissionsToUseToolInner 里 10 个编号检查点,每道请求按序过闸——先问 deny,再问 allow,中间夹着工具自己的判断。

10 个检查点,一票否决

三个大区:1 区查拒绝(deny 规则、内容级限制)、2 区查放行(模式/allow 规则)、3 区兜底(passthrough 转 ask)。点亮下面的闸门看每一关。

权限闸门 · 点亮看每关 1 区拒绝 → 2 区放行 → 3 区兜底
1 区 · 查拒绝
1a整工具被 deny?
1bask 规则命中?
1c工具自身 checkPermissions
1f内容级限制 · bypass 也拦
2 区 · 查放行
2abypass / plan 模式?
2ballow 规则覆盖?
3 区 · 兜底
3passthrough → ask
点任意闸门——看它查什么、命中后走哪条路
7 种权限模式
default每次都问
plan只规划不执行
acceptEdits文件编辑自动过
autoAI 分类器判断
bypassPermissions跳过大部分(不是全部!)
dontAsk不弹窗,直接 deny
bubble子 Agent 权限冒泡给父级
规则 5 层优先级 · 后者覆盖前者
1 · userSettings~/.claude/settings.json(用户全局)
2 · projectSettings项目 .claude/settings.json(团队共享)
3 · localSettingssettings.local.json(个人,不进 git)
4 · flagSettings命令行 --allowed-tools 临时规则
5 · policySettings企业托管:MDM / 远程 API / managed-settings.json

企业管理员用第 5 层能做到:allowManagedPermissionRulesOnly(锁定权限规则)、disableBypassPermissionsMode(禁掉跳过模式)、MCP 白名单锁定——员工想降安全等级都降不了。

本站要点:拒绝永远比放行先查(1 区在 2 区前);有些关卡连 bypassPermissions 都跨不过。下一站看 2 区里最特别的一员:AI 分类器——让一个模型盯住另一个模型。