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) 限定工具范围,避免全自动。

📖 小节


📝 作业

  1. 基础题(难度⭐):配置 .claudeignore 排除项目的 .env 文件,验证 Claude Code 不再读取该文件。
  2. 进阶题(难度⭐⭐):为你的项目编写权限配置,区分自动允许和需要确认的操作,测试配置效果。
  3. 挑战题(难度⭐⭐⭐):设计一个团队级权限策略,覆盖个人实验、团队开发、生产项目三种场景,写出完整配置文件。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏