权限配置
配置 Claude Code 的权限模式,控制哪些操作需要人工确认
权限配置¶
Claude Code 使用权限系统来控制哪些操作需要用户确认。合理配置权限,既能保证安全,又能提高开发效率。
四种权限模式¶
| 模式 | 说明 | 适用场景 |
|---|---|---|
default |
首次使用工具时询问权限 | 日常开发,平衡安全与效率 |
acceptEdits |
自动批准文件编辑,其他操作仍需确认 | 需要频繁修改文件的任务 |
plan |
只分析不执行(Plan Mode) | 探索和审查代码,不希望 Claude 做任何修改 |
bypassPermissions |
跳过所有权限提示 | CI/CD 自动化、受信任的安全环境 |
切换权限模式¶
- 按
Shift+Tab循环切换权限模式 - 按
Shift+Tab两次进入 Plan Mode(按 Escape 退出) - 在对话框中直接选择模式
配置默认权限模式¶
在 .claude/settings.json 中配置:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
Allow 规则:预批准命令¶
预先批准特定命令,避免每次询问:
{
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test:*)",
"Bash(git status)",
"Bash(git add:*)",
"Bash(git diff:*)"
]
}
}
Allow 规则语法:
Bash(命令)— 精确匹配命令Bash(命令前缀:*)— 匹配以该前缀开头的命令Read(文件路径)— 允许读取特定文件Write(文件路径)— 允许写入特定文件
Deny 规则:保护敏感文件¶
阻止 Claude 访问或修改敏感文件:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Write(./.git/**)",
"Bash(rm -rf:*)"
]
}
}
Deny 规则语法:
- 路径模式支持
*(单层)和**(多层)通配符 - Deny 规则优先级高于 Allow 规则
同时使用 Allow 和 Deny¶
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff)"
],
"deny": [
"Bash(git push:*)",
"Bash(rm -rf:*)",
"Read(./.env*)"
]
}
}
配置文件层级¶
Claude Code 按以下优先级合并权限配置:
| 优先级 | 位置 | 适用范围 |
|---|---|---|
| 最高 | .claude/settings.local.json(不提交到 Git) |
个人本地覆盖 |
| 中 | .claude/settings.json(提交到 Git) |
团队共享配置 |
| 最低 | ~/.claude/settings.json |
全局用户配置 |
团队协作建议:
- 将团队通用的 allow/deny 规则放在
.claude/settings.json并提交到 Git - 个人特殊需求放在
.claude/settings.local.json,加入.gitignore
最佳实践¶
1. 保护敏感凭据
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./credentials/**)",
"Read(./.ssh/**)"
]
}
}
2. 前端项目配置
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(npm run dev)",
"Bash(npm run build)",
"Bash(npm run test:*)",
"Bash(npm run lint:*)"
]
}
}
3. CI/CD 自动化
{
"permissions": {
"defaultMode": "bypassPermissions"
}
}
⚠️ 注意:
bypassPermissions模式会跳过所有安全检查,只在完全受信任的自动化环境中使用。