
一、通过 settings.json 配置白名单/黑名单(最有效)
在项目目录创建或编辑 .claude/settings.json,分三类管理权限,让 Claude 自动执行常用命令,无需每次弹窗确认。
配置示例
json
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx *)",
"Bash(node *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(git branch *)",
"Bash(git show *)",
"Bash(git stash *)",
"Bash(gh issue *)",
"Bash(gh pr *)",
"Bash(cat *)",
"Bash(ls *)",
"Bash(find *)",
"Bash(head *)",
"Bash(tail *)",
"Bash(wc *)",
"Bash(grep *)",
"Read",
"Write",
"Edit",
"Glob",
"Grep"
],
"deny": [
"Bash(rm -rf *)",
"Bash(rm -r *)",
"Bash(sudo *)",
"Bash(eval *)",
"Bash(git push --force *)",
"Bash(git reset --hard *)",
"Bash(npm publish *)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./**/*.pem)",
"Read(./**/*.key)"
]
}
}
生效规则
- allow 列表:命令免授权,直接执行
- deny 列表:命令被完全封锁,无法执行
- 其他命令:触发权限确认弹窗
二、使用 --dangerously-skip-permissions 参数(完全跳过所有授权)
适用于信任环境、追求效率场景。
实施方法
bash
alias cc="claude --dangerously-skip-permissions"
后续输入 cc 启动 Claude Code,无任何授权弹窗。
三、RTK 自动 Hook 接管权限
原理:拦截钩子注册、命令输出净化,配合白名单降授权。
实施方法
bash
rtk init --global
效果:常用命令(git、npm run 等)免弹窗授权。
四、macOS 桌面操作权限管理(Claude Desktop)
关键机制
- TCC 权限网关:桌面操作需请求
requestAccessibility()与requestScreenRecording() - 会话级授权:按会话追踪授权应用
- 互斥锁:防止多会话同时操控桌面
- 自动拒绝列表:策略阻止应用无法获权
配置方式:在 .claude/settings.json 按命令/应用设置策略。
五、方案对比与建议
| 方案 | 原理 | 推荐场景 |
|---|---|---|
| settings.json 白名单 | 允许/禁止/询问三级控制 | 最推荐,精细可控 |
| --dangerously-skip-permissions | 完全跳过权限检查 | 信任环境、追求效率 |
| RTK 自动 Hook | 拦截+净化+配合白名单 | 省流+降授权 |
| 桌面安全模型配置 | TCC 权限+应用级控制 | Claude Desktop 用户 |
推荐做法
优先配置 settings.json 白名单,酌情使用跳过参数。