📚AI 编程官方教程中文版
官方教程中文版核心配置与能力

管理权限

基于 Anthropic 官方 Claude Code permissions 文档,帮助新手理解 allow、ask、deny、权限模式和安全边界。

Claude Code 的权限系统不是“允许 / 禁止”一个总开关,而是决定 Agent 能不能读文件、改文件、运行命令、调用 WebFetch、使用 MCP、调用 subagent。新手先学会判断风险,再去写具体规则。

先理解三类规则

官方权限规则分三类:

  • Allow:匹配后不再询问,适合稳定、低风险、反复运行的动作。
  • Ask:每次都询问,适合需要上下文判断的动作。
  • Deny:直接阻止,适合密钥、危险命令、敏感路径和不可信外部能力。

规则顺序是 deny -> ask -> allow。也就是说,deny 永远优先。你不能用 allow 把更高优先级的 deny 绕过去。

新手应该怎么默认使用

建议默认心态:

  • 不确定的任务先用 plan,只看方案不改文件。
  • 熟悉仓库后,再允许低风险测试、lint、只读诊断。
  • 发布、删除、写远端状态、数据库迁移和读取密钥,都不要自动 allow。
  • bypassPermissions 只适合隔离容器、虚拟机或一次性沙盒,不适合日常项目。

少一点提示不等于更高效。权限提示的价值是让你在关键动作前停一下。

Bash 权限最容易误配

Bash 不是一个普通工具。它可以读文件、改文件、联网、删除、执行脚本,也可能通过复合命令把多个动作串在一起。

新手写 Bash 规则时注意:

  • 只允许明确的低风险命令,不要允许整个 Bash
  • 通配符越宽,风险越高。
  • curlwgetgit pushrm -rf 这类命令默认应该 ask 或 deny。
  • 复合命令里每一段都要满足规则,不能只看第一段。
  • Docker、npx、devbox 这类执行器可能把内部命令隐藏起来,不要粗暴 allow。

如果你只想让 Claude 读项目、跑测试和解释代码,没必要给它大范围 Bash 权限。

路径规则的核心边界

路径权限主要解决“哪些文件可以被读写”。新手最常见的目标是阻止读取 .env、密钥目录、凭据文件、私人目录。

注意:路径规则限制的是 Claude Code 工具层的访问,不是操作系统级隔离。如果你允许 Bash 执行,子进程仍可能通过 cat 等命令读取文件。敏感文件要同时考虑 Read deny、Bash deny、sandbox 和系统权限。

WebFetch 不等于网络隔离

WebFetch(domain:...) 只控制 Claude Code 的 WebFetch 工具,不会阻止 Bash 里的网络命令。

如果你要限制网络访问,要组合使用:

  • WebFetch 只允许可信域名。
  • Bash 层限制 curlwget 等网络命令。
  • 更高风险环境使用 sandbox 或系统网络策略。

只配置 WebFetch 域名,不能防止所有外联。

MCP 和 Subagent 也要纳入权限

MCP server 可能连接数据库、issue 系统、云服务和内部 API。不要因为它叫“工具”就整体 allow。

更稳的做法是:

  • 先只接可信 MCP。
  • 只允许需要的具体 tool。
  • 输出巨大或能写远端状态的工具优先 ask。
  • 对探索型 subagent 或不适合当前仓库的 subagent 写 deny。

权限系统应该覆盖所有能行动的能力,而不仅是文件和命令。

新手常见坑

  • 为了减少打断直接开 bypassPermissions
  • 只 deny Read,但 allow 了宽泛 Bash。
  • curlwget 当成普通只读命令。
  • WebFetch 设了域名,就以为 Bash 不能联网。
  • 对整个 MCP server allow,而不是只 allow 单个安全工具。
  • 权限写在 user 层,导致所有项目互相污染。

怎么判断权限配置健康

健康标准:

  • 低风险重复命令可以少提示。
  • 高风险动作会 ask 或 deny。
  • 密钥文件不能被 Claude Code 直接读取。
  • Bash 网络、删除、发布、迁移类命令有边界。
  • MCP 和 subagent 也有明确策略。
  • /permissions 能显示规则来源,你知道规则来自 user、project、local 还是 managed。

权限系统的目标不是让 Claude 少问,而是让它在正确边界内行动。

官方来源

最近更新:2026年5月4日

On this page