ByteNoteByteNote

字节笔记本

2026年2月15日

Claude Code 权限配置完全指南

API中转
¥120

Claude Code 支持细粒度权限,因此您可以精确指定代理允许执行的操作和不允许执行的操作。权限设置可以检入版本控制中,并分发给组织中的所有开发人员,也可以由个别开发人员自定义。

权限系统

Claude Code 使用分层权限系统来平衡功能和安全性:

工具类型示例需要批准"是,不再询问"行为
只读文件读取、Grep不适用
Bash 命令Shell 执行每个项目目录和命令永久有效
文件修改Edit/Write 文件直到会话结束

管理权限

您可以使用 /permissions 查看和管理 Claude Code 的工具权限。此 UI 列出所有权限规则及其来源的 settings.json 文件。

  • Allow 规则让 Claude Code 使用指定的工具而无需手动批准
  • Ask 规则在 Claude Code 尝试使用指定工具时提示确认
  • Deny 规则防止 Claude Code 使用指定的工具

规则按顺序评估:deny -> ask -> allow。第一个匹配的规则获胜,因此 deny 规则始终优先。

权限模式

Claude Code 支持多种权限模式来控制工具的批准方式:

模式描述
default标准行为:在首次使用每个工具时提示权限
acceptEdits自动接受会话的文件编辑权限
planPlan Mode:Claude 可以分析但不能修改文件或执行命令
delegate代理团队负责人的协调专用模式
dontAsk自动拒绝工具,除非通过规则预先批准
bypassPermissions跳过所有权限提示(需要安全环境)

注意bypassPermissions 模式禁用所有权限检查。仅在隔离环境(如容器或虚拟机)中使用此模式。

权限规则语法

权限规则遵循格式 ToolTool(specifier)

匹配工具的所有使用

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

使用说明符进行细粒度控制

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

通配符模式

Bash 规则支持带有 * 的 glob 模式。通配符可以出现在命令中的任何位置:

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

工具特定的权限规则

Bash

  • Bash(npm run build) - 匹配确切的命令
  • Bash(npm run test *) - 匹配以 npm run test 开头的命令
  • Bash(npm *) - 匹配任何以 npm 开头的命令
  • Bash(* install) - 匹配任何以 install 结尾的命令

注意* 前的空格很重要。Bash(ls *) 匹配 ls -la 但不匹配 lsof,而 Bash(ls*) 匹配两者。

Read 和 Edit

Read 和 Edit 规则遵循 gitignore 规范,具有四种模式类型:

模式含义示例
//path来自文件系统根目录的绝对路径Read(//Users/alice/secrets/**)
~/path来自主目录的路径Read(~/Documents/*.pdf)
/path相对于设置文件的路径Edit(/src/**/*.ts)
path./path相对于当前目录的路径Read(*.env)

WebFetch

  • WebFetch(domain:example.com) - 匹配对 example.com 的获取请求

MCP

  • mcp__puppeteer - 匹配由 puppeteer 服务器提供的任何工具
  • mcp__puppeteer__* - 匹配来自 puppeteer 服务器的所有工具
  • mcp__puppeteer__puppeteer_navigate - 匹配特定工具

Task(subagents)

  • Task(Explore) - 匹配 Explore subagent
  • Task(Plan) - 匹配 Plan subagent
  • Task(my-custom-agent) - 匹配自定义 subagent

使用 hooks 扩展权限

Claude Code hooks 提供了一种方法来注册自定义 shell 命令以在运行时执行权限评估。当 Claude Code 进行工具调用时,PreToolUse hooks 在权限系统之前运行,hook 输出可以确定是否批准或拒绝工具调用。

工作目录

默认情况下,Claude 可以访问启动它的目录中的文件。您可以扩展此访问:

  • 启动期间:使用 --add-dir <path> CLI 参数
  • 会话期间:使用 /add-dir 命令
  • 持久配置:添加到设置文件中的 additionalDirectories

权限如何与沙箱交互

权限和沙箱是互补的安全层:

  • 权限控制 Claude Code 可以使用哪些工具以及可以访问哪些文件或域
  • 沙箱提供操作系统级别的强制执行,限制 Bash 工具的文件系统和网络访问

使用两者进行深度防御:权限 deny 规则阻止 Claude 尝试访问受限资源,沙箱限制防止 Bash 命令到达定义边界之外的资源。

托管设置

对于需要对 Claude Code 配置进行集中控制的组织,管理员可以将 managed-settings.json 文件部署到系统目录:

  • macOS/Library/Application Support/ClaudeCode/managed-settings.json
  • Linux 和 WSL/etc/claude-code/managed-settings.json
  • WindowsC:\Program Files\ClaudeCode\managed-settings.json

仅托管设置

设置描述
disableBypassPermissionsMode防止 bypassPermissions 模式
allowManagedPermissionRulesOnly仅应用托管设置中的权限规则
allowManagedHooksOnly仅允许托管 hooks 和 SDK hooks
strictKnownMarketplaces控制用户可以添加哪些插件市场

设置优先级

权限规则遵循设置优先级:托管设置具有最高优先级,其次是命令行参数、本地项目、共享项目和用户设置。

另请参阅

  • Settings:完整的配置参考
  • Sandboxing:Bash 命令的操作系统级隔离
  • Authentication:设置用户对 Claude Code 的访问
  • Security:安全保障和最佳实践
  • Hooks:自动化工作流并扩展权限评估
分享: