拟定规则:把规则精确到每一条命令
权限模式是粗粒度的总开关。权限规则(Permission Rules) 是细粒度的白名单/黑名单,允许用户针对特定工具、特定命令精确配置。
规则格式
工具名(规则内容)
例子:
Bash(git *)— 允许所有以git开头的 Bash 命令FileEdit(/src/*)— 允许编辑/src/下的所有文件Bash(rm -rf *)— 如果设为 deny,则拒绝所有 rm -rf 命令
三种行为
// src/utils/permissions/PermissionRule.ts
type PermissionBehavior = 'allow' | 'deny' | 'ask'
// allow = 自动通过,不打扰用户
// deny = 直接拒绝,Claude 不能执行
// ask = 强制弹出确认框(即使模式是 bypassPermissions)
规则来源(优先级从高到低)
policySettings ← 企业管理员统一下发(MDM/远程配置),用户无法覆盖
userSettings ← 用户全局配置(~/.claude/settings.json)
projectSettings ← 项目级配置(.claude/settings.json,可提交到 git)
localSettings ← 本地私有配置(.claude/settings.local.json,不提交)
cliArg ← 命令行参数传入(--allowedTools)
command ← 斜杠命令动态设置
session ← 当次会话临时生效
产品设计亮点: projectSettings 可以提交到 git,意味着团队可以共享权限配置——新成员 clone 仓库就自动得到同样的规则,不需要每人手动配置。