Claude Code 权限配置实战:哪些操作自动放行、哪些直接拒绝
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 -rf 和 git 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 *): Allow和Bash(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
总结
- 三级控制:Ask(默认确认)、Allow(自动放行)、Deny(自动拒绝)
- Allow 只读:Read、Grep、Glob、跑测试——安全且高频
- Deny 危险:rm -rf、git push --force、curl | sh、敏感文件
- Ask 修改:代码修改保持确认,每次过一眼
- 用 /permissions:不用手改 JSON,对话里也能直接说
权限配置是一次性的投入——花十分钟配完,以后每天都能省几十次点确认的操作。
系列文章:
- 第一篇:用 CC Switch 接入 DeepSeek,API 费用降低 90%
- 第二篇:CLAUDE.md 写法详解
- 第三篇:10 个必学斜杠命令
- 第四篇:2026 安装教程(原生安装器)
- 第五篇:第一次对话——5 个实战场景
- 第六篇:Prompt 公式与模板
- 第七篇(本文):权限系统配置实战
- 下一篇:Haiku / Sonnet / Opus 模型对比与选型指南
更多推荐
所有评论(0)