您请智能体添加一个横幅,它却顺手提议更新旧模块。最好在修改前先看清这个计划,把多余的步骤去掉。为此,任务描述要清楚,选择合适的工作模式也很重要。

权限模式决定 Claude Code 如何处理操作权限:哪些操作可以立即执行,哪些需要先询问,哪些会被阻止。具体操作还会受到设置和已授予权限的影响。模式本身并不会检查解决方案的质量。

下面以 Claude Code 在终端中的本地会话为例,逐一介绍这些模式。

请求与权限

有两件事看起来相似,实际运作方式却不同,很容易混淆。

第一件是您在任务描述中写的内容:列出排除项的段落、"先给我看计划,什么都别改"这句话,以及不能修改的文件列表。这些是语义边界:它们解释任务,并明显影响智能体会提议做什么。但它们只是文本,不会改变技术层面的权限。

第二件是权限模式,也就是 permission mode。它是会话设置。您完全可以一边写着"什么都别改",一边使用会自动接受修改的模式。智能体应遵守您的要求,但这句话本身不会启用技术上的修改拦截。

有一个例外,不过只覆盖部分情况。在 auto 模式下,分类器会读取对话,并把"不要 push"或"等我 review"视为阻止相应操作的信号。但这不是设置中的规则:如果压缩上下文时那条禁止信息被移除了,禁令也就不在了。要设定硬性边界,得靠设置,而不是一句话。

请求内容无法显示当前模式

在请求中写"先制定计划"很有用,它能安排工作顺序。但仅凭这句话无法判断当前模式,您可以查看会话状态栏中的指示器。会话以哪种模式启动,取决于版本、界面、套餐和设置,所以开始前先看指示器,别靠猜。

从安全到高风险的模式

把这些模式想成一段阶梯,比记成一张清单更容易。越靠上,智能体几乎不会在没有您参与时做任何事;越靠下,它根本不询问。一共五级,外加一个不在这条刻度上的模式。

五种权限模式按自主程度从上到下排列:plan、default、acceptEdits、auto 和 bypassPermissions。dontAsk 单独列在刻度之外,不会询问,并会拒绝所有未事先允许的操作模式自主程度:从安全到高风险单独列出,不属于自主程度刻度plandefaultacceptEditsautobypassPermissionsdontAsk调查并制定计划,不修改代码修改文件和运行命令前会询问自动接受文件修改几乎所有操作都自动执行,命令与网络由分类器检查几乎不会询问仅执行读取和事先允许的操作,其余操作都会直接拒绝
同一刻度上的五个阶梯,以及置于刻度之外的 dontAsk

关键是看有多少操作无需您回应就能继续。从上到下,这个数量逐渐增加,出错的代价也随之升高。在上方,您会花时间确认;在下方,往往要等修改出问题后才发现。

逐个简单看一下:

  • plan - 智能体会调查项目并在实施前提出修改建议;此时源文件修改会被阻止。只有一种例外:如果会话以已允许的 bypassPermissions 启动,在终端中计划模式不会再拦截修改,只会要求智能体不要动文件。当您想了解代码而不是修改代码时,可以用它。若 auto 可用,分类器也会检查调查用的命令,因此这里需要确认的次数有时甚至比 default 还少。它位于阶梯较高处,是因为不会修改源文件。计划完成后,Claude Code 会询问下一步:批准并切换到 auto、批准并继续手动确认修改,或继续规划。
  • default,界面上通常显示为 Manual - 修改文件、运行命令和访问网络前都会询问。读取项目不需要确认,已授予的权限也会继续生效,因此不用每次都重复批准。有时看起来无害的命令也会触发询问。这并非吹毛求疵:带有 -exec 标志的 find 可以运行任意命令,而 -delete 会删除找到的内容,所以这些用法需要您确认。
  • acceptEdits,界面上显示为 "accept edits" - 会自动应用工作目录中的文件修改,也会执行一些文件操作命令,包括 rm 和 mv。适合快速修改您熟悉、之后也会重新检查的文件。
  • auto - 几乎所有事情都会自动处理。工作目录中的读取和修改会立即进行;命令和网络访问由另一个模型,也就是分类器来检查。它会拦截其中一部分操作,后文会单独介绍。
  • bypassPermissions,也就是 --dangerously-skip-permissions 标志 - 几乎什么都不会询问。只有您在设置中明确配置的规则(拒绝和"始终询问")以及少数系统保护措施仍然有效。这个模式也叫 YOLO,倒是名副其实。

第六个模式 dontAsk 单独列在图中,原因就在这里。阶梯模式的区别在于有多少操作无需您回应就能继续;越往下,智能体能做的事越多。dontAsk 正好相反:它同样不会询问,但不是同意,而是拒绝。在普通模式下也无需询问的操作(读取工作目录中的文件、安全的只读命令)以及事先允许的操作会执行;凡是本来需要询问的操作,一律直接拒绝。会话不会等待回应。它适用于没有人可以回答的场景,例如自动化流程和受限环境;平常坐在键盘前工作时,您用不上它。

切换模式靠的是手动操作,而不是在聊天中提出要求。在终端里,可以按 Shift+Tab 循环切换模式,也可以使用 /plan 命令进入计划模式。启动时也可以指定模式:

claude --permission-mode plan

在终端中,要从项目目录运行这条命令;/plan 则是在已打开的会话中输入。在编辑器中,切换控件的样式不同,位置在输入框下方,但判断方式相同:查看当前模式指示器。

关于最下方的模式

bypassPermissions 适合在整个环境都可以丢弃的地方使用:例如容器或虚拟机中的一次性任务。在工作项目中,一条失败的命令造成的损失,会比省下的所有确认时间加起来还大。这个模式也无法恢复已删除的内容:它只会放行命令,并没有可用的回滚机制。

有两点需要注意,否则很容易高估这段阶梯的作用。计划模式不是备份:它不会提供恢复点,也不会撤销已经完成的操作,只是让您在计划变成修改之前先看到它。任何一种模式都不会改变任务边界 - 边界仍由您的描述决定。

auto 何时会帮倒忙

关于 auto,有个预期最好提前调整。它叫"自动"模式,容易让人以为任何操作都会放行。事实并非如此:分类器的作用正是拦截一部分操作。

默认会拦截的操作包括:生产环境部署和迁移、向外部地址发送数据、强制 push、批量删除云存储内容、授予权限、从网络下载并运行代码,以及不可逆地删除会话开始前就存在的文件。这份清单的逻辑很简单:这些操作无法靠您自己轻易撤销。

后续处理取决于累积了多少次拦截。单次被拦截的操作会出现在最近拒绝列表中(/permissions 的 Recently denied 标签页),您可以从那里手动确认并重新运行。与此同时,Claude 会收到拒绝结果并尝试其他路径。如果分类器连续拦截三次,或在一次会话中拦截二十次,模式就会暂停,Claude Code 会恢复常规询问;得到您的确认后,才会重新启用 auto。这些阈值是固定的,无法调整。

由此可以看出,模式何时会开始碍事。任务中只有一条有争议的命令时,auto 会按预期工作:您手动批准它,然后继续。但如果任务本身就由这类命令组成 - 比如搭建测试环境、运行迁移、操作他人的基础设施 - 情况就有些别扭。您仍然要手动确认几乎每一步,只是多绕了几圈:智能体碰到拦截,寻找替代路径,模式一会儿暂停,一会儿又重新启用。

这时,自己切换到阶梯上方的模式会更简单。选哪种,取决于具体是什么在妨碍您:

  • default - 最直接的选择。每次修改和运行命令都会询问,不会出现被拒绝的操作。速度慢一些,但每一步都在您眼前;
  • acceptEdits - 如果您接受文件修改,只有部署或迁移等命令需要谨慎处理,可以选它。但请注意:此模式会在工作目录中直接执行 rm 和 mv;而在 auto 中,删除已有文件会被分类器拦截。

这并不是绕过拦截,别把两者混为一谈。您没有关闭检查,而是自己承担了检查责任。即使在 bypassPermissions 模式下,删除磁盘根目录或主目录等系统路径,也仍然需要您的确认。在这个模式和 auto 模式下,Claude Code 会询问您,在终端里您有几分钟时间作答。如果没有办法询问,auto 会拒绝这类命令,而 dontAsk 则始终拒绝。这里讨论的是另一件事:对于本来就打算手动确认的操作,不必再多绕一圈。

往阶梯上方切换的第二个原因与拦截无关。分类器会判断操作是否危险,却不会判断工作方向是否正确。如果智能体第三次修改同一处,结果仍然不对,在 auto 模式下它只会再试第四次,而且同样不会询问。Claude Code 的开发者建议这时不要继续硬推:回到 plan,重新确认计划后再继续。这个原则在开始时也适用。您完全清楚要做什么的任务,可以直接交给更宽松的模式。如果连您自己都还不确定最终结果应该是什么,就从 plan 开始。

为什么无害操作也会被拦截

分类器只能根据它看到的内容了解您的项目:会话开始前配置好的工作目录和远程仓库会被视为可信范围。工作过程中才添加的仓库不在这个范围内,访问它看起来就像是在访问外部。因此,"它拦截了一条无害命令",通常意味着上下文不足,而不是命令本身有问题。

这对日常工作有什么影响

日常使用时,记住四个习惯就够了。

  1. 开始工作时先看模式指示器。它会显示当前模式;具体操作是否需要确认,也取决于已经授予的权限;
  2. 执行前先确认智能体提出的计划没有超出任务边界。发现多余步骤时,用一句话删掉它,是最省事的修改;
  3. 仔细看清批准计划时所选选项的描述:它会说明退出 plan 后,会话将以哪种模式继续;
  4. 操作完成后检查结果。没有任何模式能保证任务一定正确完成 - 这需要您亲自检查。

权限模式回答的是"哪些操作可以在没有我的情况下执行",而不是"这样做对不对"。无论选择哪种模式,第二个问题都需要由您来判断。