Skip to content

第六章:权限模式

问题背后的问题

每次 Claude Code 问"我可以这样做吗?",背后都有一个更深的问题:你现在有多信任我?

这个问题没有放之四海而皆准的答案。有时候你希望 Claude 在每个操作前都征求权限,这样你能了解正在发生什么。有时候你深陷工作状态,只想让事情快速推进。还有时候你希望在任何改动之前先读一遍计划。

权限模式就是 Claude Code 处理所有这些情况的方式。它给了你一个音量旋钮——从"什么都问我"到"直接做"——让你能让 Claude 的行为和你当前的情境相匹配。


权限为什么存在

在深入了解各种模式之前,让我们先确立一个基础:Claude Code 为什么要征求权限?

简短的答案是:Claude Code 能对你真实的文件做真实的事情。当它编辑一个文件,那个文件就改变了。当它运行一条命令,那条命令就真实地执行了。宇宙里没有内置的撤销按钮。

这与聊天机器人给你建议然后你自己去复制粘贴非常不同。Claude Code 采取行动。这种能力伴随着责任——你的和 Claude 的。

权限系统是一个安全层。它确保在任何重要的事情发生之前你都在循环里。你可以选择这个循环有多紧。但如果你需要,它始终在那里。


六种权限模式

1. 默认模式:按需询问

这是标准模式。Claude Code 会:

  • 不询问地读取文件(读取通常是安全的)
  • 在编辑或创建文件之前询问
  • 在运行 shell 命令之前询问

把这想象成在你家里有一个承包商,他自由地走来走去,但在拿起工具之前会按门铃。

对大多数人大多数时候来说,默认模式恰到好处。它让你保持了解,而不会令人烦恼。


2. 自动接受编辑:信任并前进

在自动接受模式(有时称为 acceptEdits)下,Claude 自动应用文件编辑而不逐一询问。它在运行 shell 命令之前仍然会询问,但文件改动会立即发生。

这非常适合以下情况:

  • 你信任 Claude 正在做的事情
  • 你在进行涉及很多文件改动的大型重构
  • 你想要快速推进,而不是点击每个单独的确认

如何激活: 在默认模式下按一次 Shift+Tab。你会看到 ⏵⏵ accept edits on 出现在终端底部。

权衡: 你能实时看到变化发生,但你没有在每个改动落地之前审查它。留意正在发生什么,并知道如果看起来有什么不对,Ctrl+C 可以在任务中途停止 Claude。


3. 计划模式:先看后动

计划模式几乎与自动接受模式相反。在这个模式下,Claude Code 可以随意读取和分析,但它不能修改任何文件或运行任何命令。它只能看和思考——然后给你一个计划。

你审查这个计划。你提问、做出调整、给出反馈。当你满意时,你切换模式并告诉 Claude 继续执行。

这非常适合:

  • 涉及很多文件的任务,你想先理解完整范围
  • 在你还不太熟悉的代码库上工作
  • 任何你想在开始旅程之前先看地图的时候

如何激活: 从默认模式按两次 Shift+Tab(一次到自动接受,两次到计划模式)。你会看到 ⏸ plan mode on 出现在底部。

或者直接在计划模式下启动一次会话:

bash
claude --permission-mode plan

一个实用技巧: 当 Claude 在计划模式下展示它的计划时,你可以按 Ctrl+G 在文本编辑器里打开这个计划。添加注释、划掉某些内容、提出后续问题,然后回到 Claude 告诉它你想要什么改动。


4. Auto 模式:自主运行(Team 计划)

Auto 模式在 Claude 的 Team 计划上可用(Enterprise 和 API 支持正在逐步推出)。它需要 Claude Sonnet 4.6 或 Opus 4.6 模型,并且需要通过 --enable-auto-mode 启动参数或在 settings 中配置后,才会出现在 Shift+Tab 循环中。

在这个模式下,Claude 以显著更大的自主性运作——它可以读取文件、进行编辑、运行命令,以及处理多步骤任务,而不必在每一步停下来询问权限。

尽管 Auto 模式有其自主性,但让它安全的是 Anthropic 的内置安全分类器。这个分类器在后台持续运行,筛查 Claude 计划采取的任何有害或不可逆操作。如果分类器标记了某个操作,Claude 会暂停并询问——即使在 Auto 模式下。

Auto 模式的设计适合:

  • 运行更长、更复杂任务的团队,在这些任务中频繁打断会适得其反
  • Claude 的判断已经经过验证和信任的工作流程
  • 有人工审阅者在观察输出而不是批准每个步骤的场景

重要说明: Auto 模式与下面描述的绕过模式不同。Auto 模式仍然有安全护栏——只是比默认提示更复杂、更低干扰。


5. DontAsk 模式:仅允许列表操作

DontAsk 模式把权限模型倒过来。它不是询问所有事情然后让你允许或拒绝,而是从拒绝的立场开始:只允许已经明确预先授权的工具。其他一切都不提示地被拒绝。

这在以下情况下很有用:

  • 你希望精确控制 Claude 能做什么的封闭环境
  • IT 或安全团队定义特定批准工具集的企业部署
  • 你希望 Claude 在一个范围有限的方式内有帮助,而不会有任何超出这些边界的风险

你在设置文件或通过你组织的 Claude 配置来配置允许列表:

json
{
  "permissions": {
    "allow": [
      "Bash(npm run test *)",
      "Bash(npm run build)",
      "Read(**/*.ts)",
      "Edit(**/*.ts)"
    ]
  }
}

激活 DontAsk 模式后,Claude 只能做那些特定的事情。不在列表上的任何事情都会被直接拒绝——不提示、不询问、没有变通方法。

注意: 在 DontAsk 模式下,有 ask 规则的工具会被拒绝而不是弹出提示。这意味着任何未在允许列表中明确授权的操作都会静默失败。


6. 绕过模式:无护栏

还有第六种模式——bypassPermissions——完全跳过所有权限提示。Claude 不问任何问题地执行一切。

这种模式是为自动化场景而存在的:在脚本、CI/CD 流水线或隔离容器中运行 Claude,这些场景里根本没有人在盯着屏幕。

如何激活:

bash
claude --dangerously-skip-permissions

重要说明: 只在 Claude 无法造成持久损害的环境中使用绕过模式——容器、一次性虚拟机、沙盒系统。不要在你的主开发机器上用它进行交互式工作。权限系统的存在是有原因的。


在会话中间切换模式

你不必在整个会话中都坚持一种模式。你可以随着需求的变化来切换。

最快的方式是 Shift+Tab,它按顺序循环切换模式。循环包含哪些模式取决于你的配置:

  • 默认循环(3 种模式): default → acceptEdits → plan → default
  • 启用 auto 模式后(4 种模式): default → acceptEdits → plan → auto → default
    • 启用方式:使用 --enable-auto-mode 启动参数,或在 settings 中配置
  • 启用 bypass 权限后: default → acceptEdits → plan → bypassPermissions → default

所以如果你在会话中途决定想让 Claude 直接完成 20 个文件改动,按一次 Shift+Tab 来启用自动接受。完成后,再按一次回到正常状态。

DontAsk 模式通过设置文件配置,不在 Shift+Tab 的循环里。


允许列表和拒绝列表

除了宽泛的模式,Claude Code 还允许你精确指定哪些操作始终被允许或始终被拒绝,不管什么模式。

把它想成一套常规指令:

  • 允许列表(allow 规则): "你不需要问我关于 X 的事情。直接做就行。"
  • 拒绝列表(deny 规则): "你永远不被允许做 Y,不管什么情况。"

例如,你可能会说:

  • 始终允许运行 npm run test — 我希望测试能自由运行
  • 始终拒绝读取我的 .env 文件 — 那里面有密钥,别碰
  • 始终拒绝运行 git push — 我会手动推送,谢谢

你通过在 Claude Code 会话里运行 /permissions 来管理这些规则,这会打开一个设置界面,显示所有当前规则及其来源。

你也可以直接在设置文件里写这些规则:

json
{
  "permissions": {
    "allow": [
      "Bash(npm run test *)",
      "Bash(npm run build)"
    ],
    "deny": [
      "Read(./.env)",
      "Bash(git push *)"
    ]
  }
}

规则按顺序检查:拒绝规则始终优先,然后是询问规则,然后是允许规则。如果某件事同时出现在允许和拒绝列表里,拒绝的优先。


真实场景

场景:你在学习

保持在默认模式。读每一个权限提示。这是免费的教育。当 Claude 在做改动之前问"我可以编辑 utils.js 吗?",你能看到哪些文件正在被修改以及为什么。这很慢,但能快速建立直觉。

场景:你在进行重构冲刺

你有一个清晰的目标,你信任 Claude 的方向。切换到自动接受模式。让改动流动起来。注意输出的内容。准备好你的 git 历史,以防需要回滚。

场景:你接手了一个混乱的代码库

从计划模式开始。让 Claude 分析架构并告诉你为了添加你的新功能它会做什么。在一个字节改变之前仔细阅读这个计划。这是把谨慎作为超能力。

场景:你在团队里运行更长的任务

在 Team 或 Enterprise 计划下,Auto 模式让 Claude 处理复杂的多步骤任务,而安全分类器在后台监视是否有任何问题。适合逐步监督会显得繁琐的任务。

场景:你需要一个精确受限的环境

使用带有精心定义的允许列表的 DontAsk 模式。Claude 只能做列表上的事情——不多不少。非常适合共享环境或受管制的工作场所。

场景:你在 CI 里运行自动化测试

在你的流水线脚本里使用绕过模式。由于环境是隔离的,没有敏感数据处于风险之中,这是安全且合适的。


一句话概括这个哲学

权限系统不是不信任 Claude——而是让你始终坐在驾驶座上。Claude 极其有能力,而那种能力应该始终处于你的掌控之下。

选择与你的信心和情境相匹配的模式。如果不确定就从保守开始。随着信任的建立而放宽。记住:Ctrl+C 就在那里,如果你想停止的话。


下一章: 第七章 — 读懂和理解代码 — 使用 Claude 探索和理解任何代码库。

Released under CC BY-SA 4.0.