官方教程中文版核心配置与能力
管理权限
基于 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。 - 通配符越宽,风险越高。
curl、wget、git push、rm -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 层限制
curl、wget等网络命令。 - 更高风险环境使用 sandbox 或系统网络策略。
只配置 WebFetch 域名,不能防止所有外联。
MCP 和 Subagent 也要纳入权限
MCP server 可能连接数据库、issue 系统、云服务和内部 API。不要因为它叫“工具”就整体 allow。
更稳的做法是:
- 先只接可信 MCP。
- 只允许需要的具体 tool。
- 输出巨大或能写远端状态的工具优先 ask。
- 对探索型 subagent 或不适合当前仓库的 subagent 写 deny。
权限系统应该覆盖所有能行动的能力,而不仅是文件和命令。
新手常见坑
- 为了减少打断直接开
bypassPermissions。 - 只 deny Read,但 allow 了宽泛 Bash。
- 把
curl、wget当成普通只读命令。 - WebFetch 设了域名,就以为 Bash 不能联网。
- 对整个 MCP server allow,而不是只 allow 单个安全工具。
- 权限写在 user 层,导致所有项目互相污染。
怎么判断权限配置健康
健康标准:
- 低风险重复命令可以少提示。
- 高风险动作会 ask 或 deny。
- 密钥文件不能被 Claude Code 直接读取。
- Bash 网络、删除、发布、迁移类命令有边界。
- MCP 和 subagent 也有明确策略。
/permissions能显示规则来源,你知道规则来自 user、project、local 还是 managed。
权限系统的目标不是让 Claude 少问,而是让它在正确边界内行动。
官方来源
- Claude Code: Configure permissions
- Claude Code: Choose a permission mode
- Claude Code settings
- Claude Code sandboxing
最近更新:2026年5月4日