字节笔记本
2026年2月15日
Claude Code 权限配置完全指南
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 | 自动接受会话的文件编辑权限 |
plan | Plan Mode:Claude 可以分析但不能修改文件或执行命令 |
delegate | 代理团队负责人的协调专用模式 |
dontAsk | 自动拒绝工具,除非通过规则预先批准 |
bypassPermissions | 跳过所有权限提示(需要安全环境) |
注意:bypassPermissions 模式禁用所有权限检查。仅在隔离环境(如容器或虚拟机)中使用此模式。
权限规则语法
权限规则遵循格式 Tool 或 Tool(specifier)。
匹配工具的所有使用
| 规则 | 效果 |
|---|---|
Bash | 匹配所有 Bash 命令 |
WebFetch | 匹配所有网络获取请求 |
Read | 匹配所有文件读取 |
使用说明符进行细粒度控制
| 规则 | 效果 |
|---|---|
Bash(npm run build) | 匹配确切的命令 npm run build |
Read(./.env) | 匹配读取当前目录中的 .env 文件 |
WebFetch(domain:example.com) | 匹配对 example.com 的获取请求 |
通配符模式
Bash 规则支持带有 * 的 glob 模式。通配符可以出现在命令中的任何位置:
{
"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 subagentTask(Plan)- 匹配 Plan subagentTask(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 - Windows:
C:\Program Files\ClaudeCode\managed-settings.json
仅托管设置
| 设置 | 描述 |
|---|---|
disableBypassPermissionsMode | 防止 bypassPermissions 模式 |
allowManagedPermissionRulesOnly | 仅应用托管设置中的权限规则 |
allowManagedHooksOnly | 仅允许托管 hooks 和 SDK hooks |
strictKnownMarketplaces | 控制用户可以添加哪些插件市场 |
设置优先级
权限规则遵循设置优先级:托管设置具有最高优先级,其次是命令行参数、本地项目、共享项目和用户设置。
另请参阅
- Settings:完整的配置参考
- Sandboxing:Bash 命令的操作系统级隔离
- Authentication:设置用户对 Claude Code 的访问
- Security:安全保障和最佳实践
- Hooks:自动化工作流并扩展权限评估