第10章 · 权限模型
第10章 · 权限模型
10.1 三级决策树
每个工具操作经过以下决策流程:
┌──────────────┐
│ 工具调用请求 │
└──────┬───────┘
▼
┌──────────────┐
│ 检查Allow规则 │──── 匹配 ──▶ 允许执行
└──────┬───────┘
│ 不匹配
▼
┌──────────────┐
│ 检查Deny规则 │──── 匹配 ──▶ 拒绝执行
└──────┬───────┘
│ 不匹配
▼
┌──────────────┐
│ 请求用户确认 │──── Allow ──▶ 允许执行
│ (Ask) │──── Deny ──▶ 拒绝执行
└──────────────┘10.2 四层规则来源
权限规则按以下优先级合并:
- Settings配置(
settings.json):用户的全局权限偏好 - CLI参数:命令行传入的权限覆盖
- Command参数:特定命令的权限上下文
- Session状态:会话中动态积累的权限决策
10.3 拒绝追踪机制
当用户拒绝某个工具的权限请求时,系统会追踪拒绝计数:
- 连续拒绝3次 → 触发"策略回退提示"
- 累计拒绝20次 → 触发更强的回退信号
"策略回退"意味着让Claude换一种方式完成任务,而不是继续请求被拒绝的工具。这避免了"AI反复骚扰用户请求权限"的糟糕体验。
10.4 AI分类器辅助
TRANSCRIPT_CLASSIFIER 特性标志门控了一个独立的AI分类器。当启用时,对话transcript会被发送给分类器,分类器判断操作是否安全:
- 分类器确认安全 → 自动允许
- 分类器不确定 → 回退到用户确认(故障关闭)
- 分类器判断不安全 → 自动拒绝
10.5 Hook系统
PreToolUse 和 PostToolUse 钩子提供了扩展权限模型的能力:
PreToolUse:在工具执行前触发。可以修改输入参数、拒绝执行、或添加额外验证。PostToolUse:在工具执行后触发。可以检查输出、记录审计日志、触发后续操作。
企业用户可以通过Hook实现自定义的安全策略——例如,禁止修改特定目录的文件,或要求特定操作必须经过审批流程。