Claude Code
权限模型
Claude Code 的六种权限模式详解
Claude Code 在执行每个操作前都会经过权限检查。理解权限模型能帮你在安全和效率之间找到最佳平衡。
权限检查流程
当 Claude 请求使用工具时,按以下顺序检查:
Hooks → Deny 规则 → 权限模式 → Allow 规则 → 用户审批六种权限模式
| 模式 | 行为 | 适用场景 |
|---|---|---|
| default | 仅自动批准读取文件,其他需审批 | 入门使用、敏感项目 |
| acceptEdits | 自动批准文件读写,Bash 仍需审批 | 日常编码迭代 |
| plan | 只读模式,不执行任何修改 | 代码探索、规划重构 |
| auto | 所有操作自动执行,后台分类器审查 | 长时间任务、减少提示疲劳 |
| dontAsk | 未被 allow 的工具一律拒绝 | CI/CD 流水线 |
| bypassPermissions | 跳过所有权限检查 | 仅限隔离容器/VM |
切换权限模式
快捷键
在交互模式中按 Shift+Tab,在模式之间循环切换:
default → acceptEdits → plan → auto → default启动时指定
claude --permission-mode acceptEdits设为默认
在 ~/.claude/settings.json 中配置:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}Auto 模式详解
Auto 模式是最"放手"的实用模式。工作原理:
- Claude 请求执行一个动作
- 独立的分类器模型(Sonnet)审查该动作是否匹配用户请求
- 安全则自动执行,危险则阻断
默认阻断的操作
- 下载并执行代码(如
curl | bash) - 向外部端点发送敏感数据
- 生产部署和数据库迁移
- 破坏性 Git 操作(force push、直推 main)
- 修改 IAM 权限、删除云存储
默认允许的操作
- 本地文件读写
- 安装已声明的依赖
- 只读 HTTP 请求
- 推送到当前分支
安全机制
分类器连续阻断 3 次或累计 20 次,Auto 模式暂停并恢复手动审批。
自定义权限规则
在 settings.json 中精细控制:
{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Bash(npm test)",
"Bash(pnpm build)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force)"
]
}
}规则语法
"Bash(npm test)"— 只允许特定命令"Bash(npm *)"— 通配符匹配"Edit"— 允许所有文件编辑"mcp__server__tool"— MCP 工具权限
受保护目录
无论什么模式,以下目录的写入永远不会自动批准:
.git/.vscode/.idea/.husky/.claude/(.claude/commands、.claude/agents、.claude/skills除外)