English ← MyDocs

文档索引

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

选择权限模式

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

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

可用模式

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

模式无需询问即可运行最适合
default仅读取入门、敏感工作
acceptEdits读取、文件编辑和常用文件系统命令(mkdirtouchmvcp 等)迭代你正在审查的代码
plan仅读取在更改前探索代码库
auto所有操作,带后台安全检查长时间任务、减少提示疲劳
dontAsk仅预批准的工具锁定的 CI 和脚本
bypassPermissions所有操作仅限隔离的容器和 VM

在除 bypassPermissions 之外的每种模式中,对受保护路径的写入永远不会被自动批准,保护仓库状态和 Claude 自身的配置免受意外损坏。

模式设定基线。在除 bypassPermissions(完全跳过权限层)之外的任何模式中,在其之上叠加权限规则以预批准或阻止特定工具。

切换权限模式

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

会话期间:按 Shift+Tab 循环 defaultacceptEditsplan。当前模式出现在状态栏中。并非每种模式都在默认循环中:

  • auto:当你的账户满足自动模式要求时出现;循环到 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

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

claude --permission-mode plan

作为默认值:在设置中设置 defaultMode

{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

同一个 --permission-mode 标志与 -p 一起用于非交互运行

会话期间:点击提示框底部的模式指示器。

作为默认值:在 VS Code 设置中设置 claudeCode.initialPermissionMode,或使用 Claude Code 扩展设置面板。

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

UI 标签模式
Ask before editsdefault
Edit automaticallyacceptEdits
Plan modeplan
Auto modeauto
Bypass permissionsbypassPermissions

在扩展设置中启用 Allow dangerously skip permissions 后,自动模式会出现在模式指示器中,但在你的账户满足自动模式部分中列出的每个要求之前,它仍然不可用。claudeCode.initialPermissionMode 设置不接受 auto。要默认以自动模式启动,请在用户设置中设置 defaultMode。Claude Code 会忽略项目和本地设置中的 defaultMode: "auto"

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

参见 VS Code 指南了解扩展特定的详情。

JetBrains 插件在 IDE 终端中运行 Claude Code,因此切换模式与 CLI 相同:按 Shift+Tab 循环,或在启动时传递 --permission-mode

使用发送按钮旁边的模式选择器。自动和绕过权限仅在你在桌面应用设置中启用后才会出现。参见桌面应用指南

使用 claude.ai/code 或移动应用中提示框旁边的模式下拉菜单。权限提示出现在 claude.ai 中供批准。哪些模式出现取决于会话运行的位置:

  • 云端会话网页版 Claude Code 上:自动接受编辑和计划模式。询问权限、自动和绕过权限不可用。
  • 远程控制会话在你的本地机器上:询问权限、自动接受编辑和计划模式。自动和绕过权限不可用。

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

claude remote-control --permission-mode acceptEdits

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

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

除了文件编辑外,acceptEdits 模式还自动批准常用的文件系统 Bash 命令:mkdirtouchrmrmdirmvcpsed。这些命令在以安全环境变量(如 LANG=CNO_COLOR=1)或进程包装器(如 timeoutnicenohup)为前缀时也会被自动批准。与文件编辑一样,自动批准仅适用于工作目录或 additionalDirectories 内的路径。该范围之外的路径、对受保护路径的写入以及所有其他 Bash 命令仍会提示。

当启用 PowerShell 工具时,acceptEdits 模式还会自动批准对范围内路径的 Set-ContentAdd-ContentClear-ContentRemove-Item 及其常用别名。相同的范围和受保护路径规则适用。

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

claude --permission-mode acceptEdits

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

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

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

claude --permission-mode plan

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

审查和批准计划

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

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

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

Ctrl+G 在默认文本编辑器中打开提议的计划,在 Claude 继续之前直接编辑。当启用 showClearContextOnPlanAccept 时,每个批准选项还提供先清除规划上下文的选项。

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

将计划模式设为默认值

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

{
  "permissions": {
    "defaultMode": "plan"
  }
}

使用自动模式消除提示

Note

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

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

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

Warning

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

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

  • 计划:所有计划。
  • 管理员:在 Team 和 Enterprise 上,管理员必须在 Claude Code 管理设置中启用它,用户才能打开它。管理员还可以通过在托管设置中将 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 报告自动模式不可用,则其中某个要求未满足;这不是暂时性中断。单独的消息命名模型并说自动模式"无法确定安全性"是暂时性分类器中断;参见错误参考

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

分类器默认阻止的内容

分类器信任你的工作目录和仓库配置的远程。其他一切都被视为外部,直到你配置受信任基础设施

默认阻止

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

默认允许

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

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

你在对话中声明的边界

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

边界不会作为规则存储。分类器在每次检查时从转录中重新读取它们,因此如果上下文压缩删除了声明它的消息,边界可能会丢失。要获得硬保证,请改为添加拒绝规则

自动模式何时回退

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

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

在带 -p 标志的非交互模式中,重复阻止会中止会话,因为没有用户可以提示。

重复阻止通常意味着分类器缺少关于你的基础设施的上下文。使用 /feedback 报告误报,或让管理员配置受信任基础设施

分类器如何评估操作

每个操作经过固定的决策顺序。第一个匹配的步骤生效:

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

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

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

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

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

自动模式如何处理子智能体

分类器在三个点检查子智能体工作:

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

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

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

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

在启动时使用标志设置:

claude --permission-mode dontAsk

使用 bypassPermissions 模式跳过所有检查

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

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

claude --permission-mode bypassPermissions

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

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

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

在识别的沙箱内自动跳过检查。要在容器中自主运行,请使用开发容器配置,它以非 root 用户运行 Claude Code。

Warning

bypassPermissions 不提供对提示注入或意外操作的保护。对于无提示的后台安全检查,请改用自动模式。管理员可以通过在托管设置中将 permissions.disableBypassPermissionsMode 设置为 "disable" 来阻止此模式。

受保护路径

对一小组路径的写入永远不会被自动批准,在除 bypassPermissions 之外的每种模式中。这可以防止意外损坏仓库状态和 Claude 自身的配置。在 defaultacceptEditsplan 中,这些写入会提示;在 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

另请参阅

  • 权限:允许、询问和拒绝规则;托管策略
  • 配置自动模式:告诉分类器你的组织信任哪些基础设施
  • 钩子:通过 PreToolUsePermissionRequest 钩子实现自定义权限逻辑
  • Ultraplan:在网页版 Claude Code 会话中运行计划模式,带基于浏览器的审查
  • 安全:保障措施和最佳实践
  • 沙箱:Bash 命令的文件系统和网络隔离
  • 非交互模式:使用 -p 标志运行 Claude Code