Claude Code 的权限可以在会话中用 /permissions 查看和管理,也可以写入 settings.json,为常用操作设置长期规则。规则分为允许(allow)、确认(ask)和拒绝(deny):建议只免除明确、低风险操作的重复确认,对访问敏感文件或执行高风险命令保留确认或拒绝。本文依据官方文档于 2026 年 10 月 9 日核查;菜单细节和规则行为可能随版本调整。
Claude Code 权限控制的是什么?
Claude Code 的权限设置决定它在什么情况下可以使用工具或操作文件,而不是给 Claude 一段“请谨慎操作”的文字指令。常见涉及 Bash 命令、文件读取和修改、网页获取等操作。默认模式会在需要批准的操作前提示;通过规则,可以让指定操作自动通过、每次仍询问,或直接禁止。
这里要区分两种设置:权限模式影响当前会话整体如何处理批准请求;权限规则针对特定工具或命令细化授权。例如,切到编辑自动接受模式,并不等于所有 Bash 命令也会自动放行。需要精准管理某个命令或路径时,应检查规则,而不是只切换模式。
allow、ask、deny 有什么区别?
- allow:符合规则的操作无需手动批准。适合你经常使用、范围明确且风险较低的命令,例如项目内运行测试。
- ask:操作仍会弹出确认提示。适合你希望 Claude 可以提出操作,但每次执行前都要由你判断的情形。
- deny:阻止符合规则的操作。适合限制读取敏感文件,或明确不希望 Claude 执行的命令。
规则按 deny、ask、allow 的顺序评估,先匹配到的规则决定结果。因此,ask 规则可以让某项操作继续要求确认,即便另有 allow 规则也匹配它;deny 则会挡住匹配操作,不能靠一条更具体的 allow 规则为它开例外。添加规则时要检查已有规则,不能只看新加的那一行。
例如,查看文件或运行某些只读检查,风险通常低于覆盖文件、删除数据或推送代码。但“看起来只读”的命令也可能有特殊参数或重定向。不要因为命令名称熟悉,就把整个工具一概设为允许。
怎样用 /permissions 查看和管理权限?
- 在 Claude Code 会话中输入
/permissions,打开权限管理界面。 - 查看已有规则及其来源,确认它来自用户设置、项目设置还是本机项目设置。
- 按界面提供的方式添加或删除规则。添加时先从具体操作开始,不要直接授权整个 Bash 工具或所有文件访问。
- 回到会话,用低风险操作验证结果;如果仍然出现确认提示,检查规则是否匹配实际操作,以及是否有 ask 或 deny 规则先行匹配。
官方文档说明,权限对话框会列出规则及其来源;在 Claude 工作期间也可以打开它。修改规则后,变更会从同一轮接下来的工具调用开始生效。若某个提示只提供一次批准、没有“以后不再询问”选项,也可以在 /permissions 中自行管理规则。
如何把常用操作写进 settings.json?
要让规则保存在配置文件中,可编辑对应范围的 settings.json。下面是一个示例:允许项目使用 npm 运行测试,对 Git 推送保留确认,并禁止读取项目根目录下常见的 .env 文件。示例中的命令和路径要按你的项目实际情况调整。
{
"permissions": {
"allow": [
"Bash(npm run test *)"
],
"ask": [
"Bash(git push *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
在 Bash 规则中,* 用来匹配变化部分。示例中的 Bash(npm run test *) 针对测试命令,而不是放行全部 Bash 命令。编写通配规则时要留意空格和匹配范围:范围过大可能让意料之外的命令也符合规则。可以先在权限提示中观察实际命令,再决定是否需要把规则写宽。
命令规则按 Claude Code 识别的命令文本匹配,不能当作操作系统级的安全边界。比如同一程序可能通过不同路径或包装方式调用;部分复合命令、特殊参数和文件重定向也有自己的匹配行为。若必须限制进程对文件或网络的实际访问,单靠一条 Bash allow 或 deny 规则并不充分,需按官方文档了解沙箱等额外控制手段。
个人设置和项目设置该选哪一种?
| 配置范围 | 文件 | 适用情况 |
|---|---|---|
| 用户设置 | ~/.claude/settings.json | 个人希望在这台机器的多个项目中沿用的规则。 |
| 共享项目设置 | .claude/settings.json | 团队希望共同采用、并准备经过审查后提交到版本控制的项目规则。 |
| 项目本地设置 | .claude/settings.local.json | 只对自己在当前项目中的会话生效的个人规则或试验设置。 |
个人常用命令可以放在用户设置;团队一致需要的限制或批准规则,适合讨论后写进共享项目设置。不要为了方便把个人路径或不适合队友的授权提交到仓库。项目允许规则在共享文件中时,可能需要先信任该项目文件夹才会应用;官方说明 deny 和 ask 规则会立即应用。提交配置前,团队应检查规则的范围和风险。
保存文件后,可以运行 /status 确认当前会话加载了哪些设置来源;/permissions 则用于查看权限规则。若配置文件有无效 JSON、拼写错误或不受支持的规则,Claude Code 可能跳过相应内容或提示配置问题。JSON 文件需遵循严格语法,不要加入注释或多余逗号。
权限模式要怎么选?
如果你只是想改变当前会话的整体确认方式,可以切换权限模式;如果想长期控制某个命令、工具或路径,应编辑规则。官方文档列出的模式包括默认手动确认、acceptEdits、plan、auto、dontAsk 和 bypassPermissions 等,不同模式允许的操作和确认方式不同。模式是否可用也可能受组织管理设置影响。
初学者建议先保留默认确认,熟悉 Claude Code 会提出哪些操作后,再为重复、低风险、范围清晰的命令添加 allow 规则。编辑自动接受模式主要影响文件编辑,不代表 Bash 命令也被放行。bypassPermissions 会跳过多数权限提示,官方建议仅在隔离环境中使用,不适合为了省几次确认而随意开启。
为什么权限规则没有生效?
- 确认规则写入的位置:规则可能在另一个用户、项目或本机配置文件中;用
/status查看当前加载的设置来源。 - 核对匹配内容:Bash 规则需要匹配实际命令形式;文件规则则要确认路径锚点和通配符范围。
- 检查规则冲突:deny、ask、allow 的评估顺序会影响结果,项目或组织设置也可能改变你预期的行为。
- 判断是不是另一类错误:系统自身的文件权限不足、命令不存在或命令执行失败,不等同于 Claude Code 的权限规则拦截。
- 先用低风险操作验证:不要用扩大授权的方法掩盖配置错误,特别是不要为排查问题而直接允许所有 Bash 命令。
权限设置的目标不是让 Claude Code 尽可能少问,而是把重复确认缩小到可信且必要的范围。实用的起点是保留默认模式,只允许项目中明确的常规任务,对敏感文件和高风险操作继续确认或拒绝。官方权限与设置文档核查日期:2026 年 10 月 9 日;具体语法、模式和版本行为请以当前文档及本机界面为准。
相关问题
把权限规则写进 CLAUDE.md,也能阻止 Claude Code 执行命令吗?
不能把 CLAUDE.md 当作强制权限控制。它可记录操作要求,但真正授予或限制工具访问,应使用 /permissions、权限规则、权限模式或官方支持的其他控制方式。
