🐾LuoLuo Wiki
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 模式是最"放手"的实用模式。工作原理:

  1. Claude 请求执行一个动作
  2. 独立的分类器模型(Sonnet)审查该动作是否匹配用户请求
  3. 安全则自动执行,危险则阻断

默认阻断的操作

  • 下载并执行代码(如 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 除外)

On this page