规范文件
Claude Code 权限规则:allow、ask、deny 怎样配合
用具体命令和文件路径区分允许、询问与拒绝,并核对规则优先级。来源核验,未实测。
让 Agent 遵守项目规范,需要区分文字指令与工具权限。CLAUDE.md 能说明你期望的行为,权限规则决定工具调用是否被允许。本文从一个只放行构建、推送前询问的练习入手,解释匹配和冲突处理;不把示例当成完整隔离方案。
- 核验日期
- · 未实测
- 适用于
- Claude Code 依据 2026-11-03 读取的 Claude Code 官方文档;具体行为以安装版本与组织配置为准。[1]
- 涉及工具
文件位置
| 路径 | 适用范围 | 读取方式 |
|---|---|---|
.claude/settings.json | 当前项目可共享的权限配置 | Claude Code 从 settings 的 permissions 字段读取规则;组织策略可能进一步限制。[1] |
什么时候用
- 团队希望放行少数重复命令,同时保留关键操作的确认点。[1]
什么时候不用
- 需要证明所有进程都无法读某文件或联网;单条工具规则不足以证明这种隔离。[1]
先分三类,再写匹配范围
官方文档把规则分为 allow、ask、deny,按 deny → ask → allow 求值,优先级不因模式更具体而改变。因此宽泛 deny 不能用更窄 allow 开例外;ask 命中时也会覆盖 allow。先列出任务必需操作,再决定哪些需要人查看。[1]
一个小范围配置
{
"permissions": {
"allow": ["Bash(npm run build)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"]
}
}这是本站原创练习配置:没有星号的 Bash 规则匹配确切命令;带星号的规则覆盖变化部分。运行 npm run build -- --verbose 不能直接假设命中原规则。Read(./.env) 描述当前目录的文件工具读取范围,不能由此推断所有 shell 读取都被阻止。[1]
用调用形状检查冲突
- 保存前确认 JSON 可解析,并把新数组并入现有 permissions,保留原规则。
- 在 /permissions 查看当前生效配置,检查用户、本地、项目和组织层是否另有规则。
- 分别写下确切构建命令、带参数构建命令、推送命令的预期行为;出现差异时核对实际调用与规则,不扩大通配符碰运气。
核验范围与下一步
本页 JSON 示例已在本地解析,规则解释已逐项对照官方文档;没有启动 Claude Code 去验证提示、组织策略或 Bash 复合命令行为。实际采用时先在可丢弃的小项目查看 /permissions,再保留预期与实际决策的记录。复杂 shell、路径别名和网络访问应按官方对应章节单独核对。[1]
来源
以下均为官方页面,核验日期见各条;链接指向核验时的版本。