深度

Claude Code 权限系统深度解析:Allow/Deny 规则、五种权限模式与通配符语法

Claude Code 权限系统完全解析:三类工具默认审批规则、Allow/Ask/Deny 三种规则类型及优先级、五种权限模式(default/acceptEdits/plan/dontAsk/bypassPermissions)、通配符语法详解(空格词边界的关键区别),以及 Read/Edit/WebFetch/MCP/Agent 各工具权限规则示例。

2026/3/34分钟 阅读ClaudeEagle

Claude Code 的权限系统让你精确控制 AI 可以执行哪些操作——从完全自动到严格审批,从全局策略到按工具精细配置。

权限层级

三类工具的默认审批规则:

工具类型示例默认需要审批"不再询问" 行为
只读操作读文件、GrepN/A
Bash 命令Shell 执行按项目目录 + 命令永久记住
文件修改Edit/Write 文件本次会话结束前记住

三种规则类型

/permissions 命令查看和管理权限规则:

  • Allow:无需手动审批直接执行
  • Ask:每次使用时提示确认
  • Deny:完全阻止该工具

规则优先级deny → ask → allow,第一条匹配的规则生效,deny 始终最优先。

五种权限模式

在 settings.json 中设置 defaultMode

模式说明
default标准模式:首次使用每种工具时提示
acceptEdits本次会话自动接受所有文件编辑权限
planPlan 模式:只能分析,不能修改文件或执行命令
dontAsk自动拒绝所有未通过 /permissionsallow 规则预批准的工具
bypassPermissions跳过所有权限提示(仅限容器/VM 等隔离环境)

⚠️ bypassPermissions 会禁用所有权限检查,仅在 Claude Code 无法造成损害的隔离环境中使用。企业管理员可通过 disableBypassPermissionsMode: "disable" 在 Managed 设置中永久禁用此模式。

权限规则语法

基础格式

工具名 // 匹配该工具的所有用法 工具名(限定符) // 精细匹配

匹配所有用法

规则效果
Bash匹配所有 Bash 命令
WebFetch匹配所有 web 请求
Read匹配所有文件读取

Bash(*) 等同于 Bash

精细匹配(带限定符)

规则效果
Bash(npm run build)精确匹配 npm run build 命令
Read(./.env)精确匹配读取 .env 文件
WebFetch(domain:example.com)匹配对 example.com 的请求

通配符模式

* 可出现在命令任意位置:

json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git commit *)",
      "Bash(git * main)",
      "Bash(* --version)",
      "Bash(* --help *)"
    ],
    "deny": [
      "Bash(git push *)"
    ]
  }
}

关键细节:* 前的空格很重要

  • Bash(ls *) — 匹配 ls -la匹配 lsof(有空格,有词边界)
  • Bash(ls*) — 同时匹配 ls -lalsof(无空格,无词边界)

Claude Code 能识别 Shell 操作符(如 &&),所以 Bash(safe-cmd *) 不会safe-cmd && other-cmd 权限。

各工具权限规则

Read / Edit

json
"Read(~/.zshrc)"         // 允许读取特定文件
"Read(./.env)"           // 拒绝读取 .env
"Read(./secrets/**)"     // 拒绝读取 secrets 目录
"Edit(./src/**)"         // 限制编辑范围到 src/

WebFetch

json
"WebFetch(domain:github.com)"    // 只允许访问 github.com
"WebFetch(domain:*.internal)"    // 只允许内网域名

⚠️ WebFetch 只限制 web_fetch 工具,不限制 Bash 中的 curl/wget。如需彻底限制网络访问,同时 deny Bash 网络工具。

MCP 工具

json
"mcp__my-server__tool-name"      // 允许特定 MCP 工具
"mcp__my-server__*"              // 允许某个 MCP 服务器的所有工具

Agent(子代理)

json
"Agent"                          // 允许启动任意子代理
"Agent(explore)"                 // 只允许启动 explore 子代理

实用配置示例

安全的 CI 环境(只允许测试相关命令)

json
{
  "permissions": {
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test *)",
      "Bash(git status)",
      "Bash(git diff *)"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(git push *)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  }
}

保护敏感文件

json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Edit(./.env)",
      "Edit(./secrets/**)"
    ]
  }
}

Managed 设置(企业专属)

通过 Managed 作用域部署的权限无法被用户或项目设置覆盖:

json
{
  "disableBypassPermissionsMode": "disable",
  "permissions": {
    "deny": ["Bash(rm -rf *)"]
  }
}

原文:Configure permissions - Claude Code Docs | 来源:Anthropic 官方文档

相关文章推荐

深度Claude Code 沙箱凭据保护体系再升级:v2.1.224 拒绝规则绕过漏洞与实践检查清单Claude Code v2.1.224 修复沙箱文件系统拒绝规则(denyRead 带结尾斜杠)在 Linux/macOS 上可被静默绕过的问题,提供实用的沙箱配置自检清单。2026/8/10深度Claude Code 沙箱凭据保护完全指南:从明文拒绝到 JWT 感知脱敏的演进之路梳理 Claude Code 沙箱凭据保护体系的四种模式——结构化脱敏、JWT 感知脱敏、AWS SigV4 重签名、文件级哨兵替换,帮你选择适合的安全策略。2026/8/7深度Claude Code v2.1.207 安全深度解析:插件 headersHelper Shell 注入漏洞修复始末深度解析 Claude Code v2.1.207 修复的插件系统 Shell 注入漏洞:${user_config.*} 在 Shell 形式命令中被拒绝,Hooks 需改用 exec 形式或环境变量,Monitors 和 headersHelper 需在脚本内部读取配置。同步解析关联的 pluginConfigs 读取来源收紧措施。2026/7/11深度Claude Code 安全强化速览:Auto Mode 防误删、后台通知防伪造双重防线解析深度解析 Claude Code v2.1.205 两项容易被忽略但意义重大的安全强化:Auto Mode 对变量值不明的 rm -rf 命令先询问再执行,以及后台任务通知明确标注「无真实人工输入」防止伪造批准被误信。分析两者背后共同的「默认保守」设计哲学。2026/7/10深度Claude Code 团队协作安全实践:MCP 服务器审批机制与工作区信任详解Claude Code v2.1.196 起引入的 MCP 服务器审批机制,确保克隆仓库无法自动获得已提交的 MCP 服务器信任。本文详解工作区信任模型如何防止供应链投毒攻击,并提供团队 Onboarding 安全检查清单。2026/7/6深度Claude Code Auto Mode 技术深度解析:两层分类器架构如何防止 AI 越权行为Anthropic 工程博客深度解析 Auto Mode 背后的技术:用户审批了 93% 的权限请求却仍有疲劳感;内部事故日志(误删远程分支/上传 GitHub Token/生产数据库误迁移);两层防御(输入层提示注入探针+输出层对话记录分类器);三层许可决策;实测数据(0.4% 误报率,17% 漏报率,附原因分析);多 Agent 传递的安全处理;以及 Deny-and-Continue 机制。2026/5/3