Claude Code 桌面版:"Always allow" 成了默认按钮,如何撤销误存的权限规则
返回博客
文章claude codeagente de programaçãosegurançatroubleshootingdev tools

Claude Code 桌面版:"Always allow" 成了默认按钮,如何撤销误存的权限规则

Mafra2026年10月19日阅读约 4 分钟

你在 Claude Code 桌面版的权限提示上按下回车,以为只批准了一条命令,结果这条命令变成了仓库的永久规则。自应用 2.37337.1 版(2026年10月13日)起,提示框的主按钮是 Always allow,而 Allow once 被移到了旁边的下拉箭头菜单里。

本文说明这条规则保存在哪里、如何删除误存的规则,以及如何防止高风险命令再次因为一次下意识的点击而被放行。界面变化记录在官方仓库的 issue #102136 中,macOS、Windows 和 Linux 用户都已确认;配置部分已于2026年10月19日对照官方权限文档核对。

Claude Code 桌面版的权限提示改了什么?

那个最大的按钮,也就是下意识点击和按回车时触发的那个,现在会保存一条永久规则。只想批准这一次,需要打开菜单或使用另一个快捷键。

选项位置macOS 快捷键作用
Always allow主按钮⇧⌘↩保存一条 allow 规则,对该仓库以后的会话都生效
Allow once下拉箭头菜单⌘↩只批准这一次,不写入任何文件
Allow and switch to Auto下拉箭头菜单暂无报告批准并把会话切换到 Auto 模式

以上快捷键来自 issue 中两条独立的报告,均在 macOS 上。截至2026年10月19日,还没有人报告 Windows 或 Linux 上对应的快捷键。同样的反转此前已在 issue #48550 中报告过,该 issue 因长期无活动被关闭,并未修复。

流程图:在 Always allow 上按回车会生成永久规则;从 .claude/settings.local.json 的 permissions.allow 中删除该规则;用 ask 规则保护高风险命令;只想批准一次时,使用 Allow once 快捷键
从误存的规则到加上保护,三个步骤加一个快捷键。

Claude Code 把 "Always allow" 规则保存在哪里?

保存在 git 仓库根目录的 .claude/settings.local.json 中,位于 permissions.allow 下。文档说明,对 Bash 命令或 WebFetch 域名的永久批准会写入这个文件,并对该仓库内任何位置的后续会话生效,包括 worktree。

也有例外:在 git 仓库之外、仓库根目录就是你的主目录,或者在 Windows 上,这个文件会留在会话启动时所在的文件夹,与 .claude/settings.json 放在一起。根据桌面版文档,桌面应用读取的配置文件与 CLI 相同。

一位用户在 issue 中报告,在一次会话里,主按钮写入了下面两条规则:

{
  "permissions": {
    "allow": [
      "Bash(gh api *)",
      "Bash(python3 -I -c ' *)"
    ]
  }
}

第一条会放行所有 gh api 调用,包括会写入 GitHub 的调用。所以每次使用桌面版之后,都值得检查一下这个文件。

如何查看并删除误存的规则?

打开文件,找出不是你主动选择的规则。在仓库根目录执行:

cat .claude/settings.local.json

如果装了 jq,可以只列出被放行的规则:

jq '.permissions.allow' .claude/settings.local.json

删掉不想保留的行,保存文件即可。如果更喜欢图形界面,在同一个仓库里用终端打开 Claude Code,然后运行:

/permissions

对话框会列出所有规则以及每条规则来自哪个文件,你可以删除任意一条。文档说明,即使代理正在工作,修改也会从下一次工具调用开始生效。

.claude/settings.local.json 不会进入你的提交:Claude Code 第一次创建该文件时,会把它加入 git 的全局排除列表。因此错误的规则不会泄露给团队,但也不会出现在 git diff 里。只有打开文件才能发现。

如何防止高风险命令再次被放行?

为那些你始终想手动批准的命令创建 ask 规则。文档规定的评估顺序是 deny、ask、allow:只要有一条 ask 规则匹配该命令,即使存在针对它的 allow 规则,不论在哪个文件里,提示都会重新出现。

把规则写进用户级文件 ~/.claude/settings.json(Windows 上是 %USERPROFILE%\.claude\settings.json),对所有项目生效:

{
  "permissions": {
    "ask": [
      "Bash(python3 *)",
      "Bash(gh api *)",
      "Bash(git push *)",
      "Bash(psql *)"
    ]
  }
}

如果文件已经存在,把 ask 键合并进已有的 permissions 块,不要删掉其他内容。把列表换成你日常工作中会触及数据库、网络或生产环境的命令。

对于绝不应该运行的命令,用 deny 代替 ask。deny 优先于一切,allow 规则无法在其中开例外。

确认保护已生效

在桌面版里让代理运行列表中的一条命令,例如 python3 -c "print(1)"。即使 .claude/settings.local.json 里仍有针对 python3 的 allow 规则,权限提示也必须出现。如果没有出现,在终端里打开 /permissions,检查 ask 规则是否已加载。

给所有命令都加 ask 规则不是太过了吗?

确实太过了,issue 里也有评论正好指出这一点:在 ask 下列出几百条命令无法扩展。ask 规则只用于那份可能造成破坏的短名单。其余情况,有效的习惯是使用 Allow once 快捷键(macOS 上为 ⌘↩),并在一天结束时看一眼 .claude/settings.local.json。

Anthropic 修复了吗?

截至2026年10月19日还没有。issue #102136 仍处于打开状态,用户要求把 Allow once 恢复为主按钮,或提供一个选择默认项的设置。在有版本改变这一点之前,主按钮会继续写入规则。

在终端里,Verboo Code 的命令权限提示第一个选项是 Yes,只批准这一次;"don't ask again" 是单独的选项,规则保存在 .verboo/settings.local.json 中,可在 /permissions 中查看。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章