先看要点

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 查看和管理权限?

  1. 在 Claude Code 会话中输入 /permissions,打开权限管理界面。
  2. 查看已有规则及其来源,确认它来自用户设置、项目设置还是本机项目设置。
  3. 按界面提供的方式添加或删除规则。添加时先从具体操作开始,不要直接授权整个 Bash 工具或所有文件访问。
  4. 回到会话,用低风险操作验证结果;如果仍然出现确认提示,检查规则是否匹配实际操作,以及是否有 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、权限规则、权限模式或官方支持的其他控制方式。