外观
第6章 权限管理
约 2071 字大约 7 分钟
2026-06-07
这一章来聊聊 Claude Code 的权限系统——怎么让它既能干活,又不至于乱来。
6.1 为啥要了解权限这回事?
还记得第2章的第一次聊天吗?Claude 每次要写文件、执行命令的时候,都会弹出来问你:"允不允许?"
一开始觉得这样挺安全的,挺好的。但用了几天你就会发现:
"已经让 Claude 写了 20 次文件了,每次都得点确认,有点烦啊……"
权限管理就是来解决这个烦恼的。你可以提前设好规则,告诉 Claude "这些操作不用每次都问我",同时保证那些危险的操作还是得你亲自点头才行。
6.2 权限系统是怎么运转的?
哪些操作需要确认
Claude Code 的操作分两类:
三种处理方式
| 方式 | 是啥意思 | 效果 |
|---|---|---|
| allow(白名单) | 匹配到规则的操作自动放行 | 不用你管,直接执行 |
| deny(黑名单) | 匹配到规则的操作自动拒绝 | 不用你管,直接拦住 |
| 没有规则 | 弹出来问你 | 你自己选允许还是拒绝 |
6.3 怎么配置权限规则
配置文件在哪?
权限规则写在配置文件 settings.json 里,有两个地方可以放:
| 文件位置 | 管多大范围 |
|---|---|
~/.claude/settings.json | 全局(所有项目都生效) |
项目目录/.claude/settings.json | 只管当前项目 |
配置文件长什么样?
{
"permissions": {
"allow": [
"Read",
"Write",
"Bash(git status)",
"Bash(git diff*)",
"Bash(git log*)"
],
"deny": [
"Bash(rm -rf*)"
]
}
}看一眼就明白:
allow里列的是自动放行的操作,deny里列的是自动拒绝的操作,两边都没提到的就会弹出来问你。
简单解释一下:
allow列表里的操作 → 自动放行deny列表里的操作 → 自动拒绝- 两个列表里都没有的 → 弹出来问你
规则怎么写
| 规则 | 含义 |
|---|---|
"Read" | 允许/拒绝所有读取操作 |
"Write" | 允许/拒绝所有写入操作 |
"Edit" | 允许/拒绝所有编辑操作 |
"Bash" | 允许/拒绝所有命令执行 |
"Bash(git *)" | 只管以 git 开头的命令 |
"Bash(npm test*)" | 只管以 npm test 开头的命令 |
"Bash(rm -rf*)" | 只管以 rm -rf 开头的命令 |
* 是通配符,就是"匹配任意内容"的意思。
提示
* 是通配符,表示"匹配任意内容"。比如 Bash(git *) 会匹配所有以 git 开头的命令,包括 git status、git commit -m "..." 等。
6.4 推荐几套权限配置
刚开始用:安全为主的配置
在项目目录下创建 .claude/settings.json:
{
"permissions": {
"allow": [
"Read",
"Bash(git status*)",
"Bash(git diff*)",
"Bash(git log*)",
"Bash(npm test*)",
"Bash(npm run lint*)"
],
"deny": [
"Bash(rm -rf*)",
"Bash(drop *)",
"Bash(DELETE *)"
]
}
}新手推荐这套配置: 只自动放行"看"的操作(读文件、查 git、跑测试),危险的删除命令一律拦住。写文件还得你亲自点头。
这样设置的效果:
- 读取文件 → 自动放行
- 查看 git 状态和改动 → 自动放行
- 跑测试和代码检查 → 自动放行
- 删除命令(
rm -rf)→ 自动拒绝 - 写入文件、执行其他命令 → 需要你确认
用熟练了:效率更高的配置
{
"permissions": {
"allow": [
"Read",
"Write",
"Edit",
"Bash(git *)",
"Bash(npm *)",
"Bash(node *)",
"Bash(cat *)",
"Bash(ls *)",
"Bash(cd *)"
],
"deny": [
"Bash(rm -rf /)",
"Bash(sudo rm*)"
]
}
}老手推荐这套: 文件的读写编辑全部自动放行,常用命令也放开,只拦最危险的
rm -rf /和sudo rm。效率拉满,但前提是你已经信任 Claude 了。
这样设置的效果:
- 文件的读取、写入、编辑 → 全部自动放行
- git、npm、node 命令 → 自动放行
- 危险的删除命令 → 自动拒绝
- 其他命令 → 需要你确认
注意
上面这些规则里的 Bash(rm -rf /) 和 Bash(sudo rm*) 只是示例参考。实际使用的时候,要根据你自己的工作习惯来调整 deny 列表。
提示
如果你刚开始用 Claude Code,建议先用"安全配置",只自动放行读取和查看类的操作。等熟悉了之后,再慢慢放开写入和执行的权限。
6.5 在聊天过程中管理权限
除了手动改配置文件,也可以在聊天的时候随时调整:
用 /permissions 命令
/permissions会列出当前的权限规则,可以直接在里面添加或删除规则。
聊天时临时允许
当 Claude 请求权限的时候,你会看到几个选项:
| 选项 | 效果 |
|---|---|
| Allow once | 就这一次允许 |
| Allow always | 以后这类操作都自动允许(会写入 settings.json) |
| Deny | 拒绝 |
大部分时候选 "Allow once" 就够了。如果发现某类操作反复出现、每次都确认很烦,再选 "Allow always"。
6.6 Auto 模式——让 Claude 自己判断
Auto 模式是 Claude Code 提供的一种更省心的方式。在 Auto 模式下,Claude 会自己判断操作是不是安全的,不再每次都来问你。
怎么开启 Auto 模式
在聊天中,Claude 请求权限的时候可以选择开启 Auto 模式。或者在启动时直接指定:
# 启动时直接开启 Auto 模式,省得每次都点确认
claude --permission-mode autoAuto 模式安全吗?
Auto 模式不是"什么都允许"。它有 AI 安全检测:
- Claude 会自己判断操作是否合理
- 如果检测到可疑操作(比如要大规模删除文件),还是会暂停等你确认
- 服务器端还有额外的安全检测
啥时候适合用 Auto 模式?
| 场景 | 建议 |
|---|---|
| 刚开始用 Claude Code | 不太建议,先用默认模式 |
| 日常使用,已经比较信任 Claude | 可以用 |
| 要修改重要文件 | 谨慎一点 |
| 自动化流程里 | 很适合 |
注意
Auto 模式虽然方便,但新手朋友不建议一上来就开。建议先用默认模式熟悉一段时间,了解 Claude 的行为习惯后,再考虑开启 Auto 模式。
6.7 一些安全方面的小提醒
几个要记住的原则
安全原则
- 别把敏感信息放在项目目录里(密码、API Key、证书等)
.gitignore里的文件,Claude 也能读到 —— 不要以为 git 忽略了就安全了- 定期看看 Claude 改了哪些文件 —— 用
git diff查看 - 拿不准的操作不要自动允许 —— 宁可多确认几次
- 危险的命令加到 deny 列表里 —— 防止误操作
推荐加入 deny 列表的命令
"deny": [
"Bash(rm -rf *)",
"Bash(sudo *)",
"Bash(chmod 777*)",
"Bash(curl * | sh)",
"Bash(wget * | sh)"
]这些命令都挺危险的,建议始终拒绝。
解释一下:
rm -rf *是删光一切,sudo *是以管理员身份执行(太危险),chmod 777是把权限全开(不安全),curl | sh和wget | sh是从网上下载脚本直接执行(可能中招)。
提示
权限管理的核心就是找到"安全"和"省事"之间的平衡点。刚开始偏安全一点,熟练了之后可以逐步放开。不要图省事一开始就把所有权限都打开。
6.8 小结
| 要点 | 说明 |
|---|---|
| 权限是啥 | 控制 Claude 能不能执行某个操作的开关 |
| 三种处理方式 | allow(自动放行)、deny(自动拒绝)、没规则(问你) |
| 配置在哪 | .claude/settings.json |
| 新手建议 | 用默认模式,只 allow 安全的读取操作 |
| 进阶玩法 | 配置白名单 + 黑名单,平衡安全和省事 |
| Auto 模式 | 让 Claude 自己判断,但仍有安全检测 |
一句话: 权限管理就是在"安全"和"省事"之间找平衡——刚开始偏安全,用熟了再逐步放手。
下一章来聊聊怎么给 Claude 接入更多外部工具,让它能力更强:第7章 MCP扩展
