Configuration
工具权限管理
管理 Claude Code 的工具允许列表和权限设置
Claude Code 默认会为任何可能修改系统的操作请求权限。了解如何管理工具权限列表,平衡安全性和便利性。
什么时候不要跳过权限
如果你搜索的是 claude --dangerously-skip-permissions,先把它当成最后手段,而不是日常提效参数。
| 场景 | 是否使用 --dangerously-skip-permissions | 更安全默认做法 |
|---|---|---|
| 普通项目开发 | 不用。 | 只加入当前任务需要的最小 allowedTools。 |
| 有 secrets 的生产仓库 | 不用。 | 保持交互确认,并 deny 危险命令。 |
| CI 或脚本化 review | 通常不用。 | 针对这次任务传明确的 --allowedTools。 |
| 无 secrets、无网络风险的一次性容器 | 可以考虑。 | 只挂载目标目录,用完销毁容器。 |
这个参数会绕过权限检查。它不应该成为日常开发默认值。
权限管理方式
1. 会话期间选择
当 Claude 请求工具权限时,选择"始终允许":
Claude 请求使用 Edit 工具
[ ] 仅此次允许
[x] 始终允许
[ ] 拒绝2. 使用 /permissions 命令
在 Claude Code 会话中使用权限命令:
/permissions add Edit
/permissions add Bash(git commit:*)
/permissions add mcp__puppeteer__puppeteer_navigate
/permissions remove Bash(rm:*)
/permissions list3. 手动编辑配置文件
编辑 .claude/settings.json 或 ~/.claude.json:
{
"allowedTools": [
"Read",
"Write",
"Edit",
"Bash(git:*)",
"Bash(npm:*)",
"Bash(pnpm:*)"
]
}4. 使用 CLI 标志
为特定会话设置权限:
claude --allowedTools "Read,Write,Edit,Bash(git:*)"推荐权限配置
安全的基础权限
{
"allowedTools": ["Read", "Glob", "Grep", "LS"]
}开发常用权限
{
"allowedTools": [
"Read",
"Write",
"Edit",
"MultiEdit",
"Bash(git:*)",
"Bash(npm:*)",
"Bash(pnpm:*)",
"Bash(yarn:*)"
]
}完整开发权限
{
"allowedTools": [
"Read",
"Write",
"Edit",
"MultiEdit",
"Bash(git:*)",
"Bash(npm:*)",
"Bash(pnpm:*)",
"Bash(docker:*)",
"Bash(gh:*)",
"WebFetch",
"TodoWrite"
]
}权限模式说明
工具级权限
"allowedTools": ["Read", "Write", "Edit"]命令级权限
"allowedTools": [
"Bash(git:*)", // 允许所有git命令
"Bash(git commit:*)", // 仅允许git commit
"Bash(npm install)", // 仅允许npm install
]MCP 工具权限
"allowedTools": [
"mcp__puppeteer__puppeteer_navigate",
"mcp__filesystem__read_file",
"mcp__github__create_issue"
]风险等级分类
🟢 低风险工具
推荐始终允许:
Read- 读取文件Glob- 文件模式匹配Grep- 文本搜索LS- 列出目录WebFetch- 获取网页内容
🟡 中风险工具
谨慎允许:
Write- 写入文件Edit- 编辑文件MultiEdit- 批量编辑Bash(git:*)- Git 操作Bash(npm:*)- 包管理
🔴 高风险工具
需要确认:
Bash(rm:*)- 删除操作Bash(sudo:*)- 管理员权限Bash(curl:*)- 网络请求Bash(chmod:*)- 权限修改
项目级配置
在项目根目录
// .claude/settings.json
{
"allowedTools": ["Read", "Write", "Edit", "Bash(npm:*)", "Bash(git:*)"]
}提交到版本控制:
git add .claude/settings.json
git commit -m "Add Claude Code project settings"个人全局配置
// ~/.claude.json
{
"allowedTools": ["Read", "Write", "Edit", "Bash(git:*)"]
}安全最佳实践
1. 最小权限原则
只授予必要的权限:
{
"allowedTools": [
"Read",
"Edit",
"Bash(git status)",
"Bash(git diff)",
"Bash(npm test)"
]
}2. 环境隔离
在容器或虚拟机中使用宽松权限:
# 在Docker容器中
docker run -it --rm -v $(pwd):/workspace node:18
claude --dangerously-skip-permissions如果当前 shell 有生产凭证、云 token、SSH key,或能访问无关项目,不要在普通仓库 checkout 里运行这个参数。
3. 定期审查
定期检查和更新权限设置:
# 查看当前权限
/permissions list
# 清理不需要的权限
/permissions remove Bash(sudo:*)4. 团队协作
统一团队权限配置:
// 团队推荐配置
{
"allowedTools": [
"Read",
"Write",
"Edit",
"Bash(git:*)",
"Bash(npm:*)",
"Bash(pnpm:*)"
],
"blockedTools": ["Bash(rm:*)", "Bash(sudo:*)", "Bash(curl:*)"]
}故障排除
权限被拒绝
# 检查当前权限
/permissions list
# 添加需要的权限
/permissions add Edit权限过于宽松
# 移除危险权限
/permissions remove Bash(rm:*)
/permissions remove Bash(sudo:*)重置权限
# 删除配置文件重新开始
rm ~/.claude.json
rm .claude/settings.json下一步: GitHub CLI 集成 - 了解如何集成 gh 命令行工具。