Claude Code: 权限配置
最后更新:2026-08-31
Claude Code 拥有高权限——可以读写文件、执行命令、访问网络。理解并配置权限,是安全使用 Claude Code 的基础。
💡 提示:默认情况下,Claude Code 对读取操作自动放行,对写入和执行操作需要确认。你可以通过权限配置调整这个平衡点。
📋 前置知识:第十章 上下文管理
1. 你将学到
- 权限模型与分类
- 自动批准配置
- 受限模式
- 敏感项目保护
- 团队权限策略
2. 权限模型
(1) 操作分类与默认权限
| 操作类型 | 示例 | 默认权限 | 说明 |
|---|---|---|---|
| Read | 读取文件、查看目录 | 自动允许 | 只读操作无风险 |
| Write | 创建/修改文件 | 需确认 | 可通过配置自动放行 |
| Bash | 执行 shell 命令 | 需确认 | 高风险,建议保持确认 |
| Network | 安装包、API 调用 | 需确认 | 外部访问,有安全风险 |
| MCP | 调用 MCP 工具 | 需确认 | 取决于工具功能 |
(2) 确认交互流程
TEXT
📖 仅展示
Claude wants to execute: npm install lodash
[Allow / Deny / Always for this session]
Allow → 本次允许
Deny → 拒绝执行
Always → 本次会话内同类操作自动允许
▶ 示例 1: 权限确认场景
TEXT
📖 仅展示
# 读取文件:自动通过
→ Reading src/index.ts ✓ (auto-approved)
# 修改文件:需确认
→ Modifying src/index.ts
Allow editing src/index.ts? [y/n/a] y
# 执行命令:需确认
→ Running: npm test
Allow executing: npm test? [y/n/a] a
(已设为本次会话自动允许)
# 删除文件:需确认
→ Deleting src/old-module.ts
Allow deleting src/old-module.ts? [y/n] y
3. 自动批准配置
(1) CLAUDE.md 中配置权限
MARKDOWN
<!-- CLAUDE.md -->
## 权限配置
- 自动允许编辑 src/ 下的 .ts 和 .test.ts 文件
- 自动允许运行 npm test 和 npm run lint
- 自动允许运行 npm install(添加依赖)
- 需要确认:修改 prisma/schema.prisma
- 需要确认:修改 package.json 的 scripts
- 需要确认:任何 git 操作
- 拒绝:执行 curl/wget 等网络请求命令
(2) 命令行参数
BASH
# 只允许读取和写入(不允许执行命令)
claude --allowed-tools Read,Write
# 允许读取、写入和特定 Bash 命令
claude --allowed-tools Read,Write,Bash(npm test),Bash(npm run lint)
# 完全自动模式(危险!)
claude --allow-full-auto
(3) 权限配置层级
TEXT
📖 仅展示
1. 命令行参数(最高优先级)
↓
2. CLAUDE.md 中的权限声明
↓
3. 运行时手动确认
↓
4. 默认行为(读自动、写确认、执行确认)
▶ 示例 2: 项目级权限配置
MARKDOWN
<!-- 测试项目的 CLAUDE.md(宽松权限)-->
## 权限
- 自动允许:所有文件编辑
- 自动允许:npm test, npm run build, npm run lint
- 自动允许:git add, git commit
- 需要确认:npm publish, git push
<!-- 生产项目的 CLAUDE.md(严格权限)-->
## 权限
- 自动允许:只读操作
- 需要确认:所有文件修改
- 需要确认:所有命令执行
- 拒绝:git push, npm publish, rm -rf
- 拒绝:修改 .env 和配置文件
4. 受限模式
(1) 只读模式
BASH
# 完全只读,不修改任何文件
claude --allowed-tools Read
# 只读 + 安全 Bash 命令
claude --allowed-tools Read,Bash(git status),Bash(npm test)
(2) 沙箱模式
BASH
# 在沙箱中运行,修改不会影响真实文件
claude --sandbox
# 沙箱模式 + 自动批准
claude --sandbox --allow-full-auto
(3) 审查模式
TEXT
📖 仅展示
# 只分析和审查,不做修改
> 审查 src/auth/ 目录的安全性,只输出报告不修改文件
# Claude Code 在只读模式下:
→ Reading files... (auto-approved)
→ Analyzing security issues...
→ Report generated (no files modified)
5. 敏感项目保护
(1) .claudeignore 文件
TEXT
📖 仅展示
# .claudeignore - 排除敏感文件
.env
.env.*
**/secrets/**
**/credentials/**
**/private-key.*
config/production.*
(2) 敏感目录保护策略
| 文件类型 | 保护方式 | 说明 |
|---|---|---|
| .env | .claudeignore 排除 | 环境变量包含密钥 |
| secrets/ | .claudeignore + 需确认 | 凭证目录 |
| schema.prisma | CLAUDE.md 标记需确认 | 数据库结构变更高风险 |
| package.json | CLAUDE.md 标记需确认 | 依赖变更需审查 |
| CI 配置 | .claudeignore 排除 | 部署配置敏感 |
▶ 示例 3: 金融项目权限配置
MARKDOWN
<!-- 金融项目的 CLAUDE.md -->
## 权限(严格模式)
- 自动允许:只读操作
- 需要确认:所有文件修改(包括 src/)
- 需要确认:所有 Bash 命令
- 拒绝:修改 src/payment/ 和 src/billing/ 下的文件
- 拒绝:运行任何数据库操作命令
- 拒绝:修改 Docker 和 CI 配置
## 特别注意
- 金额计算逻辑修改必须经两人 review
- 数据库迁移必须走 PR 流程
- 任何涉及 PCI-DSS 合规的代码禁止 AI 自动修改
6. 综合示例:团队权限策略
TEXT
📖 仅展示
# Alice 的团队权限分级
## 级别1:个人实验项目
claude --allow-full-auto
(全自动,快速迭代)
## 级别2:团队开发项目
- CLAUDE.md 配置自动编辑 src/ 和 tests/
- 自动运行 npm test
- git 操作需确认
## 级别3:核心业务项目
- 只读模式 + 手动确认写入
- 敏感目录 .claudeignore 保护
- 所有修改走 git diff 审查
## 级别4:生产/金融项目
- 只读模式
- 输出建议不直接修改
- 人工审查后手动应用
❓ 常见问题
Q
--allow-full-auto 真的安全吗?A 不安全。全自动模式不做任何确认,适合测试项目和 CI 环境。生产项目绝对不要用。
Q
.claudeignore 和 .gitignore 有什么区别?A
.gitignore 控制 git 忽略文件,.claudeignore 控制 Claude Code 不读取的文件。两者独立工作。Q Claude Code 会绕过权限配置吗?
A 正常情况下不会。但 Claude Code 可能通过 Bash 命令间接执行未授权操作(如通过脚本读取被排除的文件)。关键数据应放在文件系统权限层保护。
Q 如何撤销"Always"授权?
A 退出当前会话即可。"Always"只在当前会话内有效,新会话恢复默认权限。
Q 团队如何统一权限配置?
A 将 CLAUDE.md 和 .claudeignore 提交到 git,团队成员自动共享同一套权限规则。
Q CI 环境怎么配置权限?
A CI 用
--headless --allowed-tools Read,Write,Bash(npm test) 限定工具范围,避免全自动。📖 小节
- 默认权限:读自动、写确认、执行确认
- CLAUDE.md 可声明自动批准规则和拒绝规则
--allowed-tools精确控制可用工具.claudeignore排除敏感文件- 项目级别决定权限严格程度:实验宽松,生产严格
📝 作业
- 基础题(难度⭐):配置
.claudeignore排除项目的.env文件,验证 Claude Code 不再读取该文件。 - 进阶题(难度⭐⭐):为你的项目编写权限配置,区分自动允许和需要确认的操作,测试配置效果。
- 挑战题(难度⭐⭐⭐):设计一个团队级权限策略,覆盖个人实验、团队开发、生产项目三种场景,写出完整配置文件。