自学教程

Claude Code 权限配置

简介

Claude Code 权限配置用于控制 Claude 可以读取哪些文件、修改哪些代码、允许执行哪些终端命令,防止误操作、执行高危指令。权限分为三层控制:交互模式、.claude/rules 规则文件、.claude/ignore 忽略列表。

  • .claude/ignore:控制文件读取权限,屏蔽文件,禁止被读取
  • .claude/rules:细粒度权限,控制文件读写、终端命令执行权限
  • 交互模式:会话级权限,控制操作是否需要人工审批(前文《Claude Code 交互模式》)

权限层级优先级

会话交互模式 < .claude/rules(项目规则) < .claude/ignore(读取黑名单)

.claude/ignore 优先级最高,被忽略的文件,任何规则下都无法读取。

一、.claude/ignore:文件读取黑名单

作用:阻止 Claude Code 读取匹配的文件/目录,语法与 .gitignore 完全一致。
仅控制读取,不能限制命令执行。

示例 .claude/ignore

# 环境密钥
.env
.env.local
*.pem
*.key依赖包、构建产物
node_modules
dist
.build 本地IDE配置
.idea
.vscode

二、.claude/rules:细粒度权限规则(进阶)

在 .claude/rules/ 目录新建规则文件(支持多个规则文件),用来定义:

  • 允许 / 禁止读写哪些路径
  • 允许 / 禁止哪些终端命令
  • 限制文件操作类型(只读、禁止删除等)

示例:.claude/rules/project-rules.md

# 文件权限规则
1. 允许读取 src/ 目录全部文件,允许修改 src/**/*.ts、src/**/*.vue
2. 只读:README.md、CLAUDE.md,禁止修改
3. 禁止读写:config/db-migrate/ 数据库迁移脚本
4. 禁止删除任何文件终端命令权限
✅ 允许:npm run lint, npm run test, git status, git log
❌ 禁止:rm -rf, drop database, docker destroy, chmod 777

规则支持通配符 **、*;多条规则从上往下匹配,命中即生效。

三、会话级权限:交互模式(快速控制)

属于临时权限,仅当前会话生效,不持久保存。

模式文件修改终端命令
Manual(默认)需要审批需要审批
Plan禁止修改文件仅允许安全只读命令
Accept Edits自动批准文件修改需要审批
Auto自动判定风险高危命令强制审批

切换方式:

/mode manual
/mode plan

快捷键:Shift + Tab

四、全局权限配置(用户级别)

全局规则放在 ~/.claude/rules/(Mac/Linux)或 %USERPROFILE%\.claude\rules\(Windows),对本机所有项目生效。
项目目录下的 .claude/rules 优先级高于全局规则,可以覆盖全局权限。

五、权限校验命令

# 诊断项目配置、权限、API连通性
claude doctor

claude doctor 会扫描 .claude/ignore、rules、CLAUDE.md,输出权限配置警告。

权限配置推荐工作流

  1. 基础防护:配置 .claude/ignore,屏蔽密钥、证书、隐私文件
  2. 项目约束:编写 .claude/rules,限制敏感目录、高危命令
  3. 会话安全:默认使用 Manual 模式;复杂任务先用 Plan 模式调研
  4. 多人协作:提交 .claude/rules 到Git,统一团队权限边界

示例完整权限组合

# .claude/ignore
.env
*.pem
node_modules
dist.claude/rules/rules.md
允许读写 src/**
只读 docs/**
禁止修改 prisma/migrations/**
禁止执行 rm、sudo、docker rm

常见问题

  1. 配置 rules 之后,Claude 仍然尝试修改禁止文件?
  • 检查规则路径写法,通配符是否正确;
  • 确认新建会话(修改rules需要新会话加载);
  • .claude/ignore 优先级最高,如果文件被ignore,规则不再生效。
  1. .claude/ignore 可以阻止 Claude 修改文件吗?
    不行!.claude/ignore 仅阻止读取。如果文件已经被加载进上下文,依然可以修改。需要搭配 rules 限制写入权限。
  2. rules 可以禁用所有终端命令吗?
    可以,在 rules 中添加:禁止执行任何终端命令。

安全提示

  1. 生产环境项目,强烈建议配置 .claude/rules 限制高危命令与敏感目录
  2. 不要单纯依赖交互模式做安全防护,交互模式仅会话临时生效
  3. 权限配置仅为辅助防护,高危操作务必人工复核
标签:

0 条笔记