Claude Code 权限

权限决定 Claude Code 能读取、编辑、运行或通过工具访问什么。好的权限设计需要在效率和仓库风险之间取得平衡。

最近核验
适用版本
适用于 Claude Code 2.1.x。本机使用 2.1.198 检查 CLI 拼写;当前官方文档可能包含更新的 2.1.x 行为。
核验方式
2026-07-19 对照官方文档、CLI reference 和 changelog。本机检查 permission modes 和 flags;deny precedence 与文件规则限制依据官方文档。
官方来源
官方 Permissions reference官方 CLI reference官方 Changelog

可复现实践

设计 read-first 权限配置并验证拒绝路径

从 plan mode 开始,只允许必要检查工具,拒绝读取秘密,并在实现前验证拒绝确实可见。

准备

  • 允许在所有真实仓库之外创建一次性目录的 shell 会话。
  • 不含真实秘密的 placeholder .env;不得在已有 settings 上运行本练习。
  • 列出任务实际需要的命令。

执行步骤

  1. 创建一次性仓库和 local-only deny rule

    先创建唯一临时仓库,再拒绝读取 .env;命令不会打开或覆盖已有仓库的 settings。

    步骤 1
    PERMISSION_LAB=$(mktemp -d "${TMPDIR:-/tmp}/claude-permissions.XXXXXX")
    printf '%s\n' "$PERMISSION_LAB"
    cd "$PERMISSION_LAB"
    git init -q
    mkdir .claude
    printf '%s\n' '{"permissions":{"deny":["Read(.env)"]}}' > .claude/settings.local.json
    printf '%s\n' 'placeholder-only' > .env
  2. 验证配置语法

    可解析是必要条件,但不证明 rule 行为。

    步骤 2
    jq -e . .claude/settings.local.json >/dev/null
  3. 用窄工具和 plan mode 启动

    允许研究需要的读取和搜索,不启用编辑。

    步骤 3
    claude --permission-mode plan --allowedTools "Read" "Grep" "Bash(git status --short)"
  4. 覆盖允许和拒绝路径

    先请求读取正常源码,再请求读取 .env;第二个请求应被 deny rule 阻止。

预期结果

正常检查可用,秘密路径请求被拒绝,plan mode 中不发生文件编辑。

验证

  • 检查真实 permission prompt 或 denial,不依赖模型叙述。
  • 运行 git status,确认只有预期 local settings 和 fixture 变化。
  • 每个新增 allowed tool 都应对应任务真实需要。

失败处理

Deny 未匹配

使用官方 Read/Edit path syntax 并检查 anchor,不要假设不受支持的 Write(path) 生效。

subprocess 仍能读取

文件规则不控制任意 subprocess;需要更强约束时启用 OS sandbox。

清理或回退

  • 返回原目录,确认 PERMISSION_LAB 是刚才打印的 mktemp 路径,只删除该一次性目录。
  • 为不同任务扩大权限前先退出当前会话。

边界与不适用场景

  • 任意 scope 的 deny 都优先于 allow 和 hooks。
  • plan mode 和 permission rules 属于应用控制,不能替代 OS 隔离和秘密管理。

权限模式

不同阶段适合不同模式。探索阶段可从较窄访问开始,实现阶段可能需要编辑权限,敏感命令仍应保持显式审批。

允许和拒绝规则

规则适合重复命令和已知安全路径。拒绝规则可保护生成文件、密钥、基础设施状态或不应自动运行的命令。

审批提示

审批提示是安全模型的一部分。它用于检查命令意图、工作目录、影响文件,以及动作是否符合计划。

敏感仓库

生产基础设施、安全敏感代码或私有数据仓库中,应从最小可用访问开始。只有任务和验证路径明确后,再扩大范围。

CommandDescription
/permissions会话内配置审批规则。
--permission-mode plan在允许编辑前先进入 plan 模式
--permission-mode bypassPermissions跳过提示;仅用于有审查门禁的可信自动化。
--allowedTools "Read"调研任务中自动批准只读操作。
--disallowedTools "Edit"从模型上下文中完全移除编辑能力。

权限设计示例

好的权限规则应贴合团队习惯:安全只读命令自动批准,破坏性命令拒绝,其余动作人工审查。

权限检查

相关主题