Claude Code 的权限确认:哪些会问、哪些不会、怎么调整
Claude Code 每次停下来问你,就是一次权限确认。弄清楚什么会触发它,决定了一个会话是能跑一小时,还是每两分钟等你一次。
RoamAI 团队发布于 2026年9月9日
默认哪些会问
- 从不问:读文件、列目录、搜索(Read、Glob、Grep 这几个工具)。
- 一直问,直到你说不用:修改或创建文件(Edit、Write),以及每一条 shell 命令(Bash)。
它问的时候,你可以只批准这一次,也可以批准这个工具或这类命令在本次会话里的所有后续操作。对某条具体命令(比如 npm test)的批准可以存进项目配置,以后不再问。
权限模式
- default:如上。
- acceptEdits:项目内的文件修改自动接受,shell 命令照样问。
- plan:只读。Claude 可以看、可以提方案,但不改任何东西。
- bypassPermissions:什么都不问。对应的参数是 --dangerously-skip-permissions,名字很准确。
会话里按 Shift+Tab 切换模式,或者启动时加 --permission-mode <模式>。在配置里用 permissions.defaultMode 设默认值。
允许与拒绝规则
规则写在项目里的 .claude/settings.json(和团队共享)、.claude/settings.local.json(只有你自己),或者 ~/.claude/settings.json(对所有项目生效)。每条规则写一个工具名,可选地加一个匹配模式:
{
"permissions": {
"allow": ["Bash(npm test)", "Bash(git diff:*)", "Edit"],
"deny": ["Read(./.env)", "Bash(rm -rf:*)"]
}
}Bash(npm test) 只放行这一条命令。Bash(git diff:*) 放行所有以 git diff 开头的命令。只写工具名就是放行整个工具。拒绝规则优先于允许规则。会话里运行 /permissions 编辑的是同一份列表。
用 hook 按程序判断
PreToolUse hook 会在每次工具调用前运行你指定的命令。它从标准输入拿到工具名和参数的 JSON,可以批准、拒绝,或者交给正常的确认流程。团队用它来实现匹配模式表达不了的规则,比如只允许 git push 到某个前缀的分支。
root 限制
以 root 运行时,Claude Code 拒绝带 --dangerously-skip-permissions 启动,直接以状态码 1 退出。在服务器上用普通用户跑它。2026 年 8 月在 2.1.x 上验证过。
人不在电脑前的问题
一次确认会把会话卡住,直到有人回答。在服务器的终端里,这意味着会话闲着,直到你重新 ssh 上去看到它。关掉确认能解决等待,但也放弃了安全。
RoamAI 保留确认,把回答的地方挪了。停在权限确认上的会话排到列表最前面,请求显示成按钮,手机收到推送。批准与紧急停止。
不用自己维护服务器,会话也一直在
RoamAI 把 Claude Code 跑在托管机器或你接进来的服务器上,会话需要你时会通知你。注册免费,工作区 $9 / 月。
开始使用