Claude Code 能读文件、改代码、执行 Shell 命令——能力强也意味着要管好它。权限配得太松有安全风险,配得太紧每次操作都弹确认框又很烦。本文讲清楚三级权限控制和推荐配置。


三级权限控制

Claude Code 的每个操作都受权限系统管理,有三种级别:

级别含义适用场景
Ask(默认)弹出确认框,等你点 Allow刚装好时的默认状态
Allow自动批准,不问你安全且频繁的操作
Deny自动拒绝危险操作

管理权限最方便的方式是用 /permissions 命令,会打开一个可视化的权限管理界面。你也可以直接在对话里说口语化指令——例如"以后所有 mvn test 都不要问我了",Claude Code 会帮你修改权限配置文件。


推荐的 Allow 清单

这些操作都是高频且安全的,建议加入 Allow:

Read(*)          — 读所有文件
Grep(*)          — 搜索代码
Glob(*)          — 文件匹配
Bash(git status *)
Bash(git log *)
Bash(git diff *)
Bash(mvn test *)
Bash(npm test *)
Bash(npm run *)
Bash(ls *)

配置后读文件、搜索代码、跑测试、查看 Git 状态都不会弹窗。日常使用体验流畅很多。


必须 Deny 的操作

这些操作一旦误执行代价很大,建议直接 Deny:

Bash(rm -rf *)              — 误删项目
Bash(git push --force *)     — 强制覆盖远程分支
Bash(curl * | sh)            — 执行远程脚本
Bash(wget * | bash)          — 同上
Edit(~/.ssh/*)               — 修改 SSH 密钥
Read(.env*)                  — 环境变量文件
Read(credentials.*)          — 凭证文件
Read(*.pem)                  — 读取证书文件

rm -rfgit push --force 这两个尤其重要——一旦误操作基本不可逆。另外 AI 不应该接触你的密钥和凭证文件,这些也要 Deny 掉。


保持 Ask 的操作

代码修改和不确定的 Shell 命令建议保持 Ask,每次都能看一眼它改了什么:

Edit(*)                       — 修改文件前确认
Bash(curl *)                  — 网络请求类命令
Bash(docker *)                — Docker 操作
Bash(kubectl *)               — K8s 操作
Bash(git commit *)            — Git 提交
Bash(git push)                — Git 推送

通配符规则

权限规则支持通配符匹配,粒度很灵活:

写法匹配范围
Read(*)所有读操作
Read(*.java)只读 Java 文件
Edit(*.java)只改 Java 文件
Bash(npm run *)所有 npm run 子命令
Bash(git *)所有 Git 命令
Bash(mvn test *)Maven 测试相关命令
Bash(npm test)精确匹配,只匹配这个命令

通配符 * 匹配任意字符。你可以组合使用实现很精确的控制——比如"只允许格式化命令操作 Java 文件,其他文件修改都要确认"。

优先级规则:Deny 优先级高于 Allow。比如你同时配置了 Bash(git push *): AllowBash(git push --force *): Deny,force push 仍会被拒绝。


配置文件 JSON 示例

对应上面的建议,在 .claude/settings.json 中这样写:

{
  "permissions": {
    "allow": [
      "Read(*)",
      "Grep(*)",
      "Glob(*)",
      "Bash(git status *)",
      "Bash(git log *)",
      "Bash(git diff *)",
      "Bash(mvn test *)",
      "Bash(npm test *)",
      "Bash(npm run *)",
      "Bash(ls *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force *)",
      "Bash(curl * | sh)",
      "Bash(wget * | bash)",
      "Edit(~/.ssh/*)",
      "Read(.env*)",
      "Read(credentials.*)",
      "Read(*.pem)"
    ]
  }
}

实操建议

新手阶段:保持默认 Ask,每个操作都看一下。用一两周熟悉了哪些操作是安全的之后再调。

日常使用:把只读操作和跑测试加到 Allow,危险命令加到 Deny,代码修改保持 Ask。这是安全性和效率的最佳平衡点。

团队项目:在 .claude/settings.json 里统一配置团队权限规则,随代码提交。新成员拉下来就有一样的安全策略。


权限配置文件位置

  • 用户级:~/.claude/settings.json(所有项目生效)
  • 项目级:.claude/settings.json(只对当前项目生效,可随 Git 提交共享给团队)
  • 通过 /permissions 命令管理最方便,不用手改 JSON

总结

  1. 三级控制:Ask(默认确认)、Allow(自动放行)、Deny(自动拒绝)
  2. Allow 只读:Read、Grep、Glob、跑测试——安全且高频
  3. Deny 危险:rm -rf、git push --force、curl | sh、敏感文件
  4. Ask 修改:代码修改保持确认,每次过一眼
  5. 用 /permissions:不用手改 JSON,对话里也能直接说

权限配置是一次性的投入——花十分钟配完,以后每天都能省几十次点确认的操作。


系列文章

  • 第一篇:用 CC Switch 接入 DeepSeek,API 费用降低 90%
  • 第二篇:CLAUDE.md 写法详解
  • 第三篇:10 个必学斜杠命令
  • 第四篇:2026 安装教程(原生安装器)
  • 第五篇:第一次对话——5 个实战场景
  • 第六篇:Prompt 公式与模板
  • 第七篇(本文):权限系统配置实战
  • 下一篇:Haiku / Sonnet / Opus 模型对比与选型指南

更多推荐