Appearance
Claude Code权限配置:告别疯狂弹yes的三种方案
用Claude Code干活最烦的不是模型不够聪明,而是你刚让它跑起来,过一会就弹一个yes,再过一会又来一个yes。任务越长,工具越多,越像在陪它打地鼠。
三种方案怎么选
| 方案 | 用法 | 适合谁 |
|---|---|---|
| Shift+Tab切模式 | 会话内临时切换 | 偶尔跑长任务的人 |
| 启动参数 | claude --permission-mode acceptEdits | 只想让单次会话更顺滑的人 |
| 配置文件 | .claude/settings.json加权限规则 | 想长期稳定提效的人 |
推荐方案3:不是一次性的顺手操作,而是长期复用的工作流设置。
方案1:Shift+Tab临时切模式
| 模式 | 说明 |
|---|---|
| Default | 每次都问 |
| Accept Edits | 自动接受文件编辑 |
| Plan Mode | 只规划不执行 |
| Bypass Permissions | 全部自动运行(⚠️最危险) |
特点:会话内生效,退出就失效,不留权限残留。
方案2:启动时加参数
bash
# 自动接受编辑
claude --permission-mode acceptEdits
# 全部跳过(⚠️注意dangerously前缀)
claude --dangerously-skip-permissions注意:参数名特意加了dangerously,不是吓你,是告诉你一旦放开几乎没人帮你踩刹车。
方案3:项目级settings.json(推荐)
json
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(npm run lint:*)",
"Bash(npm run build:*)",
"Read",
"Write",
"Edit"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(git push:*)",
"Bash(curl * | bash)"
]
}
}核心思路
不是单纯把围栏拆掉,而是把围栏拆一部分,再把悬崖边重新围起来。
allow:高频操作自动通过,不用反复确认deny:危险操作强制拦截,给自己留后手
deny兜底建议
| deny规则 | 原因 |
|---|---|
rm -rf | 删库跑路 |
git push | 误推代码 |
| `curl | bash` |
总结
一句话总结:高频用户用settings.json——allow放开日常操作+deny兜底危险命令,告别打地鼠式弹yes。
