Faster Claude

配置权限

通过细粒度权限规则、模式和管理策略控制 Claude Code 可以访问和执行的操作。

Claude Code 支持细粒度权限。权限设置可纳入版本控制并分发给组织内开发者。

权限系统

工具类型示例需要批准
只读文件读取、Grep
Bash 命令Shell 执行
文件修改编辑/写入文件

管理权限

使用 /permissions 查看和管理权限,列出规则及来源 settings.json

  • Allow — 无需手动批准即可使用
  • Ask — 使用时确认
  • Deny — 禁止使用

deny → ask → allow 评估,先匹配先生效。

裸工具名如 Bash 会从 Claude 上下文中完全移除该工具。作用域规则如 Bash(rm *) 在尝试匹配调用时阻止。

权限由 Claude Code 客户端强制执行,而非模型。CLAUDE.md 影响 Claude 的意图;权限控制允许与否。

权限模式

在设置中设置 defaultMode。见 权限模式

模式说明
default每种工具首次使用时提示
acceptEdits自动接受范围内文件编辑及常见文件系统命令
plan只读探索;不编辑源文件
auto后台安全检查后自动批准(研究预览)
dontAsk除非预批准否则自动拒绝
bypassPermissions跳过所有提示 — 仅容器/虚拟机

bypassPermissionsrm -rf /rm -rf ~ 仍会提示。可在托管设置中将 permissions.disableBypassPermissionsModepermissions.disableAutoMode 设为 "disable" 以阻止这些模式。

权限规则语法

格式:ToolTool(说明符)

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

Bash(*)Bash 等价,匹配所有 Bash 命令。

Bash

  • Bash(npm run build) — 精确命令
  • Bash(npm run test *) — 前缀匹配,* 前有词界
  • Bash(git *) — 可匹配多参数命令
  • 复合命令(&&|;)— 各部分分别匹配
  • 匹配前剥离 timeoutnicenohupstdbuf 等包装
  • 内置只读命令(lsgrepgit status 等)常免提示

拒绝整个 BashWebFetch 会使下一轮提示缓存失效。

Bash 中限制 URL 宜使用 WebFetch(domain:example.com)、拒绝 curl/wget 或 PreToolUse hook — Bash(curl http://github.com/*) 类模式不可靠。

Read 与 Edit

模式遵循 gitignore 风格锚点:

模式含义
//path从文件系统根目录的绝对路径
~/path从主目录
/path相对于项目根
path./path相对于当前目录

Edit 适用于所有内置编辑工具。Read 适用于读取工具、@file 提及及 IDE 共享上下文。

符号链接:链接路径或目标任一侧命中 deny 即阻止。

WebFetch

WebFetch(domain:example.com) 匹配对该域名的请求。

MCP

mcp__puppeteermcp__puppeteer__*mcp__puppeteer__puppeteer_navigate

Agent(子代理)

在 allow 或 deny 数组中使用 Agent(Explore)Agent(Plan)Agent(my-custom-agent)

用 hooks 扩展权限

PreToolUse hook 在权限提示前运行。hook 拒绝(退出码 2)在评估规则前即阻止。即使 hook 返回 allow,deny/ask 规则仍生效。

工作目录

默认访问启动目录。用 --add-dir/add-dirpermissions.additionalDirectories 扩展。

附加目录主要授予文件访问,非完整 .claude/ 配置(例外:skills 热重载、部分插件设置,及 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 时的 CLAUDE.md)。

权限与沙箱的交互

  • 权限 — Claude Code 可使用哪些工具与路径
  • 沙箱 — 对 Bash 及子进程的 OS 级限制

二者结合实现纵深防御。默认 autoAllowBashIfSandboxed: true 时,沙箱内 Bash 可无逐命令提示;显式 deny 仍生效。

设置优先级

  1. 托管(不可覆盖)
  2. 命令行(--allowedTools--disallowedTools
  3. 本地(.claude/settings.local.json
  4. 项目(.claude/settings.json
  5. 用户(~/.claude/settings.json

任一层 deny 则其他层无法 allow。

权限规则合并;任一作用域的 deny 都会阻止,即使另一作用域 allow。

On this page