权限安全系统
让 AI 操作你的文件系统,最大的顾虑是安全。Claude Code 的权限系统是我见过的 AI 工具里做得最细致的——7 种模式、23+ 种检查、4 级防护。
7 种权限模式
| 模式 | 行为 |
|---|---|
default | 敏感操作需要用户确认 |
plan | 只读模式,禁止任何写入 |
acceptEdits | 自动接受文件编辑 |
bypassPermissions | 跳过所有检查(仅调试) |
dontAsk | 非交互式,拒绝所有需确认的操作 |
auto | AI 分类器自动判断风险 |
bubble | 权限向父级冒泡 |
大部分用户用 default 就够了。auto 模式比较有意思——用 AI 来判断操作是否安全。
权限检查流程
检查按优先级递进:
1. 否定规则(deny) → 命中则直接拒绝
2. 允许规则(allow) → 命中则直接放行
3. 询问规则(ask) → 命中则弹确认框
4. 工具默认行为 → 工具自己定义的默认权限
5. 权限模式兜底 → 由当前模式决定否定规则优先级最高——一旦被拒绝,后面的规则不再判断。这是安全系统的基本原则。
BashTool 的特殊防护
Bash 是最危险的工具——理论上可以执行任何命令。所以它有 23+ 种专属安全检查:
- 命令注入检测
- 危险变量检查(如
$HOME) - 元字符混淆识别
- 管道命令分析
- 递归删除警告
- 权限修改拦截
YOLO 分类器
auto 模式下的 AI 风险评估器:
用户操作 → YOLO 分类器 → 风险评估
├── 低风险 → 自动批准
└── 高风险 → 回退到用户确认名字叫 YOLO(You Only Live Once),但做的事情恰恰是谨慎的——宁可误报也不漏报。
规则配置语法
简洁的匹配语法:
Read(**) # 允许读取所有文件
Bash(npm test) # 允许运行测试
Bash(rm -rf *) # 拒绝递归删除
Edit(src/**) # 允许编辑 src 目录企业策略
policyLimits 模块提供企业级管控:
- 工具白名单
- 使用配额限制
- 安全策略覆盖