{/* TRANSLATED — 已翻译为中文 */}

> ## 文档索引
> 在此获取完整文档索引：https://code.claude.com/docs/llms.txt
> 使用此文件发现所有可用页面，然后再进一步探索。

# 选择权限模式

> 控制 Claude 在编辑文件或运行命令之前是否询问。在 CLI 中使用 Shift+Tab 切换模式，或在 VS Code、桌面应用和 claude.ai 中使用模式选择器。

当 Claude 想要编辑文件、运行 shell 命令或发出网络请求时，它会暂停并请求你批准操作。权限模式控制暂停发生的频率。你选择的模式决定了会话的流程：默认模式让你在每个操作到来时审查，而较宽松的模式让 Claude 在更长的不间断时间段内工作，完成后报告。对于敏感工作选择更多监督，或者当你信任方向时减少中断。

## 可用模式

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

| 模式 | 无需询问即可运行 | 最适合 |
| :--- | :--- | :--- |
| `default` | 仅读取 | 入门、敏感工作 |
| [`acceptEdits`](#auto-approve-file-edits-with-acceptedits-mode) | 读取、文件编辑和常用文件系统命令（`mkdir`、`touch`、`mv`、`cp` 等） | 迭代你正在审查的代码 |
| [`plan`](#analyze-before-you-edit-with-plan-mode) | 仅读取 | 在更改前探索代码库 |
| [`auto`](#eliminate-prompts-with-auto-mode) | 所有操作，带后台安全检查 | 长时间任务、减少提示疲劳 |
| [`dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode) | 仅预批准的工具 | 锁定的 CI 和脚本 |
| [`bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode) | 所有操作 | 仅限隔离的容器和 VM |

在除 `bypassPermissions` 之外的每种模式中，对[受保护路径](#protected-paths)的写入永远不会被自动批准，保护仓库状态和 Claude 自身的配置免受意外损坏。

模式设定基线。在除 `bypassPermissions`（完全跳过权限层）之外的任何模式中，在其之上叠加[权限规则](/en/permissions#manage-permissions)以预批准或阻止特定工具。

## 切换权限模式

你可以在会话中、启动时或作为持久默认值切换模式。模式通过这些控件设置，而不是在聊天中询问 Claude。选择你的界面查看如何更改。

<Tabs>
  <Tab title="CLI">
    **会话期间**：按 `Shift+Tab` 循环 `default` → `acceptEdits` → `plan`。当前模式出现在状态栏中。并非每种模式都在默认循环中：

    * `auto`：当你的账户满足[自动模式要求](#eliminate-prompts-with-auto-mode)时出现；循环到 auto 会显示选择加入提示，直到你接受它，或选择 **No, don't ask again** 从循环中移除 auto
    * `bypassPermissions`：在你使用 `--permission-mode bypassPermissions`、`--dangerously-skip-permissions` 或 `--allow-dangerously-skip-permissions` 启动后出现；`--allow-` 变体将模式添加到循环中而不激活它
    * `dontAsk`：永远不会出现在循环中；使用 `--permission-mode dontAsk` 设置

    启用的可选模式在 `plan` 之后插入，`bypassPermissions` 在前，`auto` 在后。如果你同时启用了两者，你将在到达 `auto` 的途中循环通过 `bypassPermissions`。

    **启动时**：将模式作为标志传递。

    ```bash theme={null}
    claude --permission-mode plan
    ```

    **作为默认值**：在[设置](/en/settings#settings-files)中设置 `defaultMode`。

    ```json theme={null}
    {
      "permissions": {
        "defaultMode": "acceptEdits"
      }
    }
    ```

    同一个 `--permission-mode` 标志与 `-p` 一起用于[非交互运行](/en/headless)。
  </Tab>

  <Tab title="VS Code">
    **会话期间**：点击提示框底部的模式指示器。

    **作为默认值**：在 VS Code 设置中设置 `claudeCode.initialPermissionMode`，或使用 Claude Code 扩展设置面板。

    模式指示器显示以下标签，映射到各自应用的模式：

    | UI 标签 | 模式 |
    | :--- | :--- |
    | Ask before edits | `default` |
    | Edit automatically | `acceptEdits` |
    | Plan mode | `plan` |
    | Auto mode | `auto` |
    | Bypass permissions | `bypassPermissions` |

    在扩展设置中启用 **Allow dangerously skip permissions** 后，自动模式会出现在模式指示器中，但在你的账户满足[自动模式部分](#eliminate-prompts-with-auto-mode)中列出的每个要求之前，它仍然不可用。`claudeCode.initialPermissionMode` 设置不接受 `auto`。要默认以自动模式启动，请在[用户设置](/en/settings#settings-files)中设置 `defaultMode`。Claude Code 会忽略项目和本地设置中的 `defaultMode: "auto"`。

    绕过权限也需要 **Allow dangerously skip permissions** 开关才能出现在模式指示器中。

    参见 [VS Code 指南](/en/vs-code)了解扩展特定的详情。
  </Tab>

  <Tab title="JetBrains">
    JetBrains 插件在 IDE 终端中运行 Claude Code，因此切换模式与 CLI 相同：按 `Shift+Tab` 循环，或在启动时传递 `--permission-mode`。
  </Tab>

  <Tab title="桌面应用">
    使用发送按钮旁边的模式选择器。自动和绕过权限仅在你在桌面应用设置中启用后才会出现。参见[桌面应用指南](/en/desktop#choose-a-permission-mode)。
  </Tab>

  <Tab title="网页和移动端">
    使用 [claude.ai/code](https://claude.ai/code) 或移动应用中提示框旁边的模式下拉菜单。权限提示出现在 claude.ai 中供批准。哪些模式出现取决于会话运行的位置：

    * **云端会话**在[网页版 Claude Code](/en/claude-code-on-the-web) 上：自动接受编辑和计划模式。询问权限、自动和绕过权限不可用。
    * **[远程控制](/en/remote-control)会话**在你的本地机器上：询问权限、自动接受编辑和计划模式。自动和绕过权限不可用。

    对于远程控制，你还可以在启动主机时设置起始模式：

    ```bash theme={null}
    claude remote-control --permission-mode acceptEdits
    ```
  </Tab>
</Tabs>

## 使用 acceptEdits 模式自动批准文件编辑

`acceptEdits` 模式让 Claude 无需提示即可在你的工作目录中创建和编辑文件。此模式激活时状态栏显示 `⏵⏵ accept edits on`。

除了文件编辑外，`acceptEdits` 模式还自动批准常用的文件系统 Bash 命令：`mkdir`、`touch`、`rm`、`rmdir`、`mv`、`cp` 和 `sed`。这些命令在以安全环境变量（如 `LANG=C` 或 `NO_COLOR=1`）或进程包装器（如 `timeout`、`nice` 或 `nohup`）为前缀时也会被自动批准。与文件编辑一样，自动批准仅适用于工作目录或 `additionalDirectories` 内的路径。该范围之外的路径、对[受保护路径](#protected-paths)的写入以及所有其他 Bash 命令仍会提示。

当启用 [PowerShell 工具](/en/tools-reference#powershell-tool)时，`acceptEdits` 模式还会自动批准对范围内路径的 `Set-Content`、`Add-Content`、`Clear-Content` 和 `Remove-Item` 及其常用别名。相同的范围和受保护路径规则适用。

当你想在编辑器中或通过 `git diff` 事后审查更改而不是内联批准每个编辑时使用 `acceptEdits`。从默认模式按一次 `Shift+Tab` 进入，或直接启动：

```bash theme={null}
claude --permission-mode acceptEdits
```

## 使用计划模式在编辑前分析

计划模式告诉 Claude 研究和提议更改而不执行。Claude 读取文件、运行 shell 命令进行探索，并编写计划，但不编辑你的源代码。权限提示与默认模式相同。

按 `Shift+Tab` 或在单个提示前加上 `/plan` 进入计划模式。你也可以从 CLI 以计划模式启动：

```bash theme={null}
claude --permission-mode plan
```

再次按 `Shift+Tab` 离开计划模式而不批准计划。

### 审查和批准计划

计划准备好后，Claude 会呈现它并询问如何继续。从该提示中你可以：

* 批准并以自动模式开始
* 批准并接受编辑
* 批准并手动审查每个编辑
* 继续规划并提供反馈
* 使用 [Ultraplan](/en/ultraplan) 进行基于浏览器的审查

批准计划会退出计划模式并将会话切换到每个批准选项描述的权限模式，因此 Claude 开始编辑。要再次规划，用 `Shift+Tab` 循环回计划模式，或在下一个提示前加上 `/plan`。

按 `Ctrl+G` 在默认文本编辑器中打开提议的计划，在 Claude 继续之前直接编辑。当启用 [`showClearContextOnPlanAccept`](/en/settings#available-settings) 时，每个批准选项还提供先清除规划上下文的选项。

接受计划还会自动从计划内容命名会话，除非你已经用 `--name` 或 `/rename` 设置了名称。

### 将计划模式设为默认值

要将计划模式设为项目的默认值，在 `.claude/settings.json` 中设置 `defaultMode`：

```json theme={null}
{
  "permissions": {
    "defaultMode": "plan"
  }
}
```

## 使用自动模式消除提示

<Note>
  自动模式需要 Claude Code v2.1.83 或更高版本。
</Note>

自动模式让 Claude 无需权限提示即可执行。一个单独的分类器模型在操作运行前审查它们，阻止任何超出你请求范围、针对未识别基础设施或似乎由 Claude 读取的敌对内容驱动的操作。

自动模式还会促使 Claude 持续工作，不停下来询问澄清问题，不过当你的提示或技能明确依赖时 Claude 仍会询问。要在保持权限提示的同时获得更强的自主行为，请改为设置[主动输出样式](/en/output-styles)。

<Warning>
  自动模式是一个研究预览。它减少提示但不保证安全。将其用于你信任大方向的任务，而不是作为敏感操作审查的替代品。
</Warning>

自动模式仅在你的账户满足以下所有要求时可用：

* **计划**：所有计划。
* **管理员**：在 Team 和 Enterprise 上，管理员必须在 [Claude Code 管理设置](https://claude.ai/admin-settings/claude-code)中启用它，用户才能打开它。管理员还可以通过在[托管设置](/en/permissions#managed-settings)中将 `permissions.disableAutoMode` 设置为 `"disable"` 来锁定关闭。
* **模型**：Claude Sonnet 4.6、Opus 4.6 或 Opus 4.7。旧模型（包括 Sonnet 4.5、Opus 4.5、Haiku 和 claude-3 模型）不受支持。
* **提供商**：仅限 Anthropic API。在 Bedrock、Vertex 或 Foundry 上不可用。

如果 Claude Code 报告自动模式不可用，则其中某个要求未满足；这不是暂时性中断。单独的消息命名模型并说自动模式"无法确定安全性"是暂时性分类器中断；参见[错误参考](/en/errors#auto-mode-cannot-determine-the-safety-of-an-action)。

如果你在[设置](/en/settings#available-settings)中设置了 `defaultMode: "auto"` 且会话以 `default` 模式启动且无错误，则该设置可能在 `.claude/settings.json` 或 `.claude/settings.local.json` 中。Claude Code 忽略这些文件中的 `auto`，因此仓库不能为自己授予自动模式。将其移到 `~/.claude/settings.json`。

### 分类器默认阻止的内容

分类器信任你的工作目录和仓库配置的远程。其他一切都被视为外部，直到你[配置受信任基础设施](/en/auto-mode-config)。

**默认阻止**：

* 下载和执行代码，如 `curl | bash`
* 将敏感数据发送到外部端点
* 生产部署和迁移
* 云存储上的批量删除
* 授予 IAM 或仓库权限
* 修改共享基础设施
* 不可逆地销毁会话前已存在的文件
* 强制推送，或直接推送到 `main`

**默认允许**：

* 工作目录中的本地文件操作
* 安装在锁文件或清单中声明的依赖
* 读取 `.env` 并将凭据发送到匹配的 API
* 只读 HTTP 请求
* 推送到你开始的分支或 Claude 创建的分支

沙箱网络访问请求通过分类器路由，而不是默认允许。运行 `claude auto-mode defaults` 查看完整规则列表。如果常规操作被阻止，管理员可以通过 `autoMode.environment` 设置添加受信任的仓库、存储桶和服务：参见[配置自动模式](/en/auto-mode-config)。

### 你在对话中声明的边界

分类器将你在对话中声明的边界视为阻止信号。如果你告诉 Claude "don't push" 或 "wait until I review before deploying"，分类器会阻止匹配的操作，即使默认规则允许它们。边界在你在后续消息中解除之前一直有效。Claude 自己判断条件已满足不会解除它。

边界不会作为规则存储。分类器在每次检查时从转录中重新读取它们，因此如果[上下文压缩](/en/costs#reduce-token-usage)删除了声明它的消息，边界可能会丢失。要获得硬保证，请改为添加[拒绝规则](/en/permissions#permission-rule-syntax)。

### 自动模式何时回退

每个被拒绝的操作显示一个通知并出现在 `/permissions` 的"最近拒绝"标签页下，你可以在那里按 `r` 通过手动批准重试。

如果分类器连续阻止操作 3 次或总共 20 次，自动模式暂停，Claude Code 恢复提示。批准提示的操作恢复自动模式。这些阈值不可配置。任何允许的操作重置连续计数器，而总计数器在会话中持续，仅在达到自身限制触发回退时重置。

在带 `-p` 标志的[非交互模式](/en/headless)中，重复阻止会中止会话，因为没有用户可以提示。

重复阻止通常意味着分类器缺少关于你的基础设施的上下文。使用 `/feedback` 报告误报，或让管理员[配置受信任基础设施](/en/auto-mode-config)。

<AccordionGroup>
  <Accordion title="分类器如何评估操作">
    每个操作经过固定的决策顺序。第一个匹配的步骤生效：

    1. 匹配你的[允许或拒绝规则](/en/permissions#manage-permissions)的操作立即解决
    2. 只读操作和工作目录中的文件编辑被自动批准，对[受保护路径](#protected-paths)的写入除外
    3. 其他所有内容转到分类器
    4. 如果分类器阻止，Claude 收到原因并尝试替代方案

    进入自动模式时，授予任意代码执行的宽泛允许规则会被丢弃：

    * 全面的 `Bash(*)` 或 `PowerShell(*)`
    * 通配符解释器如 `Bash(python*)`
    * 包管理器运行命令
    * `Agent` 允许规则

    像 `Bash(npm test)` 这样的窄规则会保留。离开自动模式时恢复被丢弃的规则。

    分类器看到用户消息、工具调用和你的 CLAUDE.md 内容。工具结果被剥离，因此文件或网页中的敌对内容不能直接操纵它。一个单独的服务端探测扫描传入的工具结果，并在 Claude 读取之前标记可疑内容。有关这些层如何协同工作的更多信息，请参见[自动模式公告](https://claude.com/blog/auto-mode)和[工程深入探讨](https://www.anthropic.com/engineering/claude-code-auto-mode)。
  </Accordion>

  <Accordion title="自动模式如何处理子智能体">
    分类器在三个点检查[子智能体](/en/sub-agents)工作：

    1. 在子智能体启动之前，评估委派的任务描述，因此看起来危险的任务在生成时被阻止。
    2. 子智能体运行期间，它的每个操作都通过与父会话相同规则的分类器，子智能体 frontmatter 中的任何 `permissionMode` 都被忽略。
    3. 子智能体完成后，分类器审查其完整的操作历史；如果该返回检查标记了问题，安全警告会被添加到子智能体结果的前面。
  </Accordion>

  <Accordion title="成本和延迟">
    分类器在服务器配置的模型上运行，独立于你的 `/model` 选择，因此切换模型不会改变分类器可用性。分类器调用计入你的 token 使用量。每次检查发送部分转录加上待处理的操作，在执行前增加一个往返。受保护路径之外的读取和工作目录编辑跳过分类器，因此开销主要来自 shell 命令和网络操作。
  </Accordion>
</AccordionGroup>

## 使用 dontAsk 模式仅允许预批准的工具

`dontAsk` 模式自动拒绝每个否则会提示的工具调用。只有匹配你的 `permissions.allow` 规则和[只读 Bash 命令](/en/permissions#read-only-commands)的操作才能执行；显式的 `ask` 规则被拒绝而不是提示。这使得该模式对于 CI 管道或你预定义 Claude 可以做什么的受限环境完全非交互。

在启动时使用标志设置：

```bash theme={null}
claude --permission-mode dontAsk
```

## 使用 bypassPermissions 模式跳过所有检查

`bypassPermissions` 模式禁用权限提示和安全检查，使工具调用立即执行。从 v2.1.126 起，这包括对[受保护路径](#protected-paths)的写入，早期版本仍会提示。针对文件系统根目录或主目录的删除（如 `rm -rf /` 和 `rm -rf ~`）仍会提示，作为防止模型错误的断路器。仅在容器、VM 或没有互联网访问的开发容器等隔离环境中使用此模式，因为 Claude Code 无法损坏你的主机系统。

你无法从未使用启用标志之一启动的会话进入 `bypassPermissions`；使用其中一个重新启动以启用它：

```bash theme={null}
claude --permission-mode bypassPermissions
```

`--dangerously-skip-permissions` 标志等效。

在 Linux 和 macOS 上，当以 root 或 `sudo` 身份运行时，Claude Code 拒绝以此模式启动：

```text theme={null}
--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons
```

在识别的沙箱内自动跳过检查。要在容器中自主运行，请使用[开发容器](/en/devcontainer)配置，它以非 root 用户运行 Claude Code。

<Warning>
  `bypassPermissions` 不提供对提示注入或意外操作的保护。对于无提示的后台安全检查，请改用[自动模式](#eliminate-prompts-with-auto-mode)。管理员可以通过在[托管设置](/en/permissions#managed-settings)中将 `permissions.disableBypassPermissionsMode` 设置为 `"disable"` 来阻止此模式。
</Warning>

## 受保护路径

对一小组路径的写入永远不会被自动批准，在除 `bypassPermissions` 之外的每种模式中。这可以防止意外损坏仓库状态和 Claude 自身的配置。在 `default`、`acceptEdits` 和 `plan` 中，这些写入会提示；在 `auto` 中，它们路由到分类器；在 `dontAsk` 中，它们被拒绝；在 `bypassPermissions` 中，它们被允许。

受保护目录：

* `.git`
* `.vscode`
* `.idea`
* `.husky`
* `.claude`，但 `.claude/commands`、`.claude/agents`、`.claude/skills` 和 `.claude/worktrees` 除外，Claude 在这些位置常规创建内容

受保护文件：

* `.gitconfig`、`.gitmodules`
* `.bashrc`、`.bash_profile`、`.zshrc`、`.zprofile`、`.profile`
* `.ripgreprc`
* `.mcp.json`、`.claude.json`

## 另请参阅

* [权限](/en/permissions)：允许、询问和拒绝规则；托管策略
* [配置自动模式](/en/auto-mode-config)：告诉分类器你的组织信任哪些基础设施
* [钩子](/en/hooks)：通过 `PreToolUse` 和 `PermissionRequest` 钩子实现自定义权限逻辑
* [Ultraplan](/en/ultraplan)：在网页版 Claude Code 会话中运行计划模式，带基于浏览器的审查
* [安全](/en/security)：保障措施和最佳实践
* [沙箱](/en/sandboxing)：Bash 命令的文件系统和网络隔离
* [非交互模式](/en/headless)：使用 `-p` 标志运行 Claude Code
