SpyBara
Go Premium

permission-modes.md 2026-10-22 22:58 UTC to 2026-10-23 22:59 UTC

This page contains 160 additions and 160 deletions.

2026
Thu 1 23:59 Fri 2 22:59 Sat 3 23:57 Sun 4 23:58 Mon 5 23:58 Tue 6 23:59 Wed 7 23:59 Sat 10 23:01 Sun 11 23:57 Wed 14 22:58 Sat 17 23:57 Mon 19 23:58 Tue 20 23:00 Wed 21 23:02 Thu 22 22:58 Fri 23 22:59 Sun 25 23:58 Mon 26 22:57 Tue 27 22:59 Wed 28 23:57 Fri 30 23:01

选择权限模式

控制 Claude 在采取行动前是否需要征求您的同意。在 CLI 中使用 Shift+Tab 切换权限模式,在 VS Code 中使用模式指示器,或在 Desktop 中使用模式选择器。

权限模式设置 Claude 在会话中可以在不先询问您的情况下执行哪些操作。在 Manual 模式下,Claude Code 会在大多数编辑文件、运行 shell 命令或访问网络的操作前停止并询问您。在自动模式中,第二个模型(分类器)会审查操作而不是您;分类器如何评估操作列出了它审查的操作以及哪些跳过它。

在 Claude Code v2.1.283 或更高版本中,自动模式是交互式终端和 VS Code 会话的内置起始权限模式。在早期版本中,它仅在 Pro、Max 和 Team 计划上是内置的起始权限模式。会话在哪个模式下启动涵盖了改变起始权限模式的表面和设置。您也可以随时更改正在运行的会话的权限模式。

可用的模式

每种模式在便利性和监督之间做出不同的权衡。下表显示了在每种模式下 Claude 无需权限提示即可执行的操作。手动模式显示在其配置值 default 下。

模式 无需询问即可运行的内容 最适合
default 仅读取 自己审查每项操作,敏感工作
acceptEdits 读取、文件编辑和常见文件系统命令(mkdir、touch、mv、cp 等) 迭代您正在审查的代码
plan 读取,加上当 auto 模式 可用时分类器批准的命令 在更改代码库之前探索它
auto 一切,带有后台安全检查 长任务,减少提示疲劳
dontAsk 工作目录内的文件读取和预批准的工具;任何会提示的内容都被拒绝,但您安装的 mod 仍可批准其中的部分调用 锁定的 CI 和脚本
bypassPermissions 一切 仅限隔离容器和虚拟机

审查每项操作的模式在 CLI 中名为 Manual,在 claude --help 中、在 VS Code 和 JetBrains 扩展中以及在桌面应用中也是如此。其配置值是 default,这是 hook 和 SDK 集成使用的。CLI 在您输入值的任何地方接受 manual 作为别名,例如 claude --permission-mode manual 或 "defaultMode": "manual"。

对 受保护路径 的写入永远不会自动批准,除非在 bypassPermissions 模式下以及在 plan 模式会话中,其中绕过权限可用,意味着会话以 将 bypassPermissions 放入模式循环 的方式启动。

模式设置基线。在顶部分层 权限规则 以预批准或阻止特定工具。拒绝规则在每种模式下都会阻止,包括 bypassPermissions。拒绝和询问规则不适用于 EndConversation,只要 Claude 仍然至少有一个其他工具可以调用。允许规则在 bypassPermissions 中无效。

任何模式都不会自动批准的操作

Claude Code 在任何模式下都不会自动批准以下内容,包括 bypassPermissions。每个项目符号链接到说明在每种模式下会发生什么的部分:

  • 与显式 询问规则 匹配的工具

  • 您的组织 设置为 ask 的连接器工具,在该设置到达 Claude Code 的会话中

  • 需要用户交互的工具:内置 AskUserQuestion 工具和标记为 requiresUserInteraction 的 MCP 工具

  • 可识别的 rm 和 rmdir 关键路径删除,任何允许规则或 PreToolUse hook "allow" 都无法批准

  • 跨会话消息传递保护措施

  • 在 permissions.blockReadsOutsideWorkingDirectories 打开时在工作目录外读取:识别的文件读取 Bash 命令和任何需要批准才能在沙箱外运行的 未沙箱化重试,即使在 auto 模式和 bypassPermissions 模式下也会提示。需要 Claude Code v2.1.257 或更高版本。

    shell 解析器无法追踪的命令,例如更改目录多次或运行子 shell 的命令,即使在未命名任何外部路径时也会以相同方式提示。当命令在 沙箱 中运行且沙箱强制执行该块时,此提示不适用。

常见设置

权限模式决定 Claude 在执行操作之前是否询问,而 Bash 沙箱和外层隔离边界决定操作运行后能够访问哪些内容。下表每一行都将一个目标与实现该目标的标志或设置以及所需的隔离配对,可作为起点。可用模式列出了每种模式下无需提示即可运行的操作。

您想要 起步方式 所需隔离 说明
亲自审查每个操作 手动模式:claude --permission-mode default 无 敏感工作、不熟悉的代码
在本地迭代,减少提示,且不使用分类器 手动模式加上处于自动允许模式的 Bash 沙箱:claude --permission-mode default,然后运行 /sandbox 并选择自动允许 内置 Bash 沙箱,适用于 macOS、Linux 和 WSL2 拒绝规则仍然适用,指定了命令的询问规则(例如 Bash(git push *))仍会提示。自动允许模式介绍了其他可能触发提示的命令。若要改为通过设置文件启用沙箱,请将 sandbox.enabled 设为 true
在进行任何更改之前先探索 claude --permission-mode plan 无 在您批准计划之前,Claude Code 会阻止编辑
在自动模式下免干预工作 claude --permission-mode auto,即 v2.1.283 或更高版本的内置起始权限模式 无;沙箱或容器可提供纵深防御 需要受支持的模型,并且您的组织可以关闭自动模式
在 CI 中使用精确的允许列表运行 claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" 除 CI 运行器所提供的隔离外无需其他隔离 云端会话会忽略来自设置文件的 dontAsk
在容器内完全无人值守地运行 claude -p "<prompt>" --dangerously-skip-permissions 必需:容器、虚拟机或沙箱运行时;在 Linux 和 macOS 上,请以非 root 用户身份运行 云端会话会忽略来自设置文件的此模式。在此 -p 运行中,本来仍会触发提示的少数调用会改为直接被拒绝,而不会提示

Bash 沙箱和自动模式彼此独立运作,也可以组合使用,例外情况列于沙箱模式中。有关完整的交互方式,请参阅沙箱隔离与权限及权限模式的关系和隔离与权限模式的关系。

会话在哪个模式下启动

当您在终端中启动新会话时,Claude Code 从以下第一个适用的获取权限模式:

  1. --permission-mode 标志或 --dangerously-skip-permissions

  2. 设置文件中的 permissions.defaultMode

    如果您在 .claude/settings.json 或 .claude/settings.local.json 中设置 "auto",该值不会生效,Claude Code 然后使用内置默认值而不是来自 ~/.claude/settings.json 的 defaultMode。如果您在这两个文件中设置 "bypassPermissions",它也不会生效,会话以 Manual 模式启动。其他值从任何设置文件应用。

  3. 内置默认值

VS Code 扩展启动的对话遵循切换权限模式中的扩展自己的列表。有关 Claude Code 在恢复会话中启动的权限模式,请参阅恢复时的权限模式。

内置 auto 默认值在 macOS、Linux 和 WSL 上需要 Claude Code v2.1.228 或更高版本,在本机 Windows 上需要 v2.1.233 或更高版本。在较早的版本上,内置默认值是 Manual。

内置默认值取决于您如何运行 Claude Code。匹配您会话的第一行适用。该表涵盖您在终端或通过 VS Code 扩展启动的会话;对于桌面应用和 claude.ai,请参阅切换权限模式中的 Desktop 和 Web 选项卡。

您如何运行 Claude Code 内置起始权限模式
任何设置文件将 disableAutoMode 设置为 "disable" default
claude -p 或 Agent SDK default
您的组织已应用 HIPAA 配置,且该会话符合其适用条件 Claude Code v2.1.285 或更高版本中为 default;仍可切换到自动模式
在终端或通过 VS Code 扩展 Claude Code v2.1.283 或更高版本中为 auto;在较早的版本上,在 Pro、Max 或 Team 计划中为 auto(在获取功能标志的会话中),否则为 default

当标志、设置文件或内置默认值选择 auto 但自动模式对会话不可用时,Claude Code 以 Manual 启动会话。自动模式在会话不满足可用性要求时不可用,例如设置文件关闭它或不支持它的模型,或当 Anthropic 已在服务器端临时关闭它时。

内置默认值第一次在自动模式下启动您的一个会话时,Claude Code 显示链接到此页面的通知:

  • 在终端中,一次,在会话顶部
  • 在 VS Code 扩展中,作为新对话屏幕上的卡片,保留直到您关闭它

如果您的 ~/.claude/settings.json 将 defaultMode 设置为 auto 以外的值,且没有其他设置文件设置它,您的会话继续以该模式启动。在 Pro、Max 和 Team 计划上,以及在不获取功能标志的会话中,Claude Code 在终端或 VS Code 扩展中询问一次是否将设置更改为自动模式。如果您拒绝,您的设置保持原样。

在 claude -p 和 Agent SDK 运行中被拒绝的工具调用

在 Claude Code v2.1.302 或更高版本中,未设置权限模式的 claude -p 和 Agent SDK 运行以 Manual 模式启动。此模式在 SDK 选项和设置中显示为 default。需要批准的调用会被拒绝,除非您通过允许规则、hook、canUseTool 回调或 --permission-prompt-tool 批准它们。

要让这些调用获得批准,请添加允许规则或以自动模式启动:

以下示例展示了 CLI 和每个 SDK 的自动模式写法:

CLI

claude -p "Run the test suite and fix any failures" --permission-mode auto

TypeScript

const options = {
  permissionMode: "auto"
};

Python

from claude_agent_sdk import ClaudeAgentOptions

options = ClaudeAgentOptions(permission_mode="auto")

在 v2.1.302 之前,如果这些运行不获取功能标志,例如在第三方提供商上或设置了 DISABLE_TELEMETRY 时,它们可能以自动模式启动。

以不同的权限模式启动

您可以为一个会话设置起始权限模式,或作为机器、项目或组织中每个会话的默认值。当多个设置文件设置 permissions.defaultMode 时,设置优先级决定,因此项目或托管值优先于 ~/.claude/settings.json。要更改已运行会话的权限模式,请参阅切换权限模式。

要为以下设置起始权限模式 执行此操作
您即将启动的一个会话 将权限模式作为标志传递,例如 claude --permission-mode default
您在此机器上启动的每个终端会话 在 ~/.claude/settings.json 中设置 permissions.defaultMode。有关 VS Code 扩展读取的内容,请参阅切换权限模式
您在一个项目中启动的每个终端会话 在项目的 .claude/settings.json 中设置 permissions.defaultMode。您在终端中启动的会话遵守除 auto 和 bypassPermissions 外的每个值;VS Code 扩展启动的会话不读取项目设置以获取起始权限模式
您的组织中的每个终端会话 在托管设置中设置 permissions.defaultMode。终端会话以该模式启动,人们仍然可以切换到自动模式;有关 VS Code 扩展读取的内容,请参阅切换权限模式。要移除自动模式以便没有人可以选择它,请改为将 permissions.disableAutoMode 设置为 "disable"

此示例使您机器上的每个终端会话以 Manual 模式启动,其配置值为 default。将其保存在 ~/.claude/settings.json 中:

{
  "permissions": {
    "defaultMode": "default"
  }
}

您启动的下一个会话在状态栏中显示 ⏸ manual mode on。

HIPAA 配置下的权限模式

在已应用 HIPAA 配置的组织中,内置 auto 默认值不适用。当没有其他方式选择起始权限模式时,终端或 VS Code 会话以 Manual 模式启动。终端会话还会显示 Auto mode isn't the default for your organization · Shift+Tab to switch,而 VS Code 扩展不显示任何通知。检查开发人员如何登录和连接列出了适用此规则的会话。

自动模式和 bypassPermissions 仍然可用:

需要 Claude Code v2.1.285 或更高版本,即 HIPAA 配置的最低版本。

切换权限模式

每个界面都有自己的控件用于在会话期间切换权限模式,以及自己的方式来选择新会话启动的权限模式。选择您的界面以查看其控件。

CLI

在会话期间:按 Shift+Tab 循环权限模式。从 auto 开始,第一次按下会切换到 default,之后循环依次为 default → acceptEdits → plan。可选模式在 plan 之后插入。状态栏显示活动模式为灰色 ⏸ manual mode on(对于 default),或为 ⏵⏵ accept edits on、⏸ plan mode on、⏵⏵ auto mode on、⏵⏵ don't ask on 或 ⏵⏵ bypass permissions on。

请观察此片段中状态栏的变化,该会话以自动模式启动。每次按下 Shift+Tab,状态栏都会从 auto mode on 依次变为 manual mode on、accept edits on、plan mode on,然后回到 auto mode on。