Vibe Coding
返回 Claude Code

Claude Code / 使用

权限模式

完整理解 Claude Code 的 default、acceptEdits、plan、auto、dontAsk 和 bypassPermissions 权限模式,以及 CLI、IDE、桌面、网页中的切换方式。

权限模式 核心概念信息图
权限模式 核心概念信息图

权限模式做什么

当 Claude Code 想编辑文件、运行 shell 命令或发出网络请求时,通常会暂停并请求批准。权限模式控制这种暂停发生的频率,也决定一次会话是偏人工审查,还是偏长时间自主执行。

敏感任务应选择更多监督;当你已经信任方向并且工作环境可控时,可以减少中断。权限模式不是简单的“安全/不安全”开关,而是便利性与监督之间的取舍。

模式只是基线。你仍可以在其上叠加权限规则来预先允许、询问或拒绝特定工具。拒绝规则和显式询问规则适用于每种模式,包括 bypassPermissions;允许规则在 bypassPermissions 中通常没有意义,因为其他操作已经被批准。

可用模式

Claude Code 官方把常见权限模式分为六类。它们决定无需提示即可执行的动作,以及适合什么场景。

模式无需询问即可运行最适合
default仅读取。编辑文件、运行 shell 命令或联网前会询问。入门、敏感工作、需要逐步审查的仓库。
acceptEdits读取、文件编辑,以及常见文件系统命令。你准备通过编辑器或 git diff 审查改动时。
plan仅读取和探索;用于形成计划,不直接编辑源码。改代码前先理解代码库、拆方案、评审路径。
auto所有操作先过后台安全分类器,例行提示大幅减少。长时间任务、降低提示疲劳、方向可信但仍要安全检查。
dontAsk只运行预先批准的工具,其他会提示的调用自动拒绝。锁定 CI、脚本化环境、非交互执行。
bypassPermissions所有工具调用直接执行,跳过权限提示和安全检查。仅隔离容器、VM、无主机风险的 dev container。

受保护路径例外

除 bypassPermissions 外,对受保护路径的写入不会被普通模式自动批准。default、acceptEdits、plan 会提示,auto 会交给分类器,dontAsk 会拒绝。

切换模式

模式应通过 CLI 参数、状态栏、模式选择器或设置文件切换,而不是在聊天中口头要求 Claude 改模式。

1

CLI 会话中切换

按 Shift+Tab 在 default、acceptEdits、plan 之间循环。auto 满足账户要求后才会出现;bypassPermissions 只有用相关启动标志启用后才加入循环;dontAsk 不会出现在循环里。

Shift+Tab
2

CLI 启动时指定

用 --permission-mode 指定本次会话的起始模式。非交互运行 -p 也使用同一个标志。

claude --permission-mode plan
claude --permission-mode acceptEdits
claude --permission-mode dontAsk
3

设置默认模式

在设置文件中配置 permissions.defaultMode。注意 auto 默认模式应放在用户或托管设置里,较新版本会忽略项目或本地设置中的 auto。

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

各入口怎么切换

不同入口的 UI 名称略有差异,但最终都会映射到同一组权限模式。

claude remote-control --permission-mode acceptEdits
入口切换方式特殊说明
CLIShift+Tab 或 --permission-modedefault -> acceptEdits -> plan 是基础循环;optional 模式按启用状态插入。
VS Code点击提示框底部模式指示器Ask before edits=default,Edit automatically=acceptEdits,Plan mode=plan。
JetBrainsIDE 终端内按 CLI 方式操作插件在 IDE terminal 中运行 Claude Code。
Desktop发送按钮旁边的模式选择器Auto 和 Bypass 需要在 Desktop 设置中启用后才出现。
Web / mobileclaude.ai/code 或移动端提示框旁的下拉菜单云会话提供 Accept edits、Plan mode、Auto;Bypass 不可用。
Remote Control下拉菜单或启动 host 时传参本地机器上运行,支持 Ask permissions、Auto accept edits、Plan mode。

acceptEdits

acceptEdits 允许 Claude 在工作目录中创建和编辑文件而不逐项提示。它适合“先让 Claude 批量改,再由你在 IDE 或 git diff 里统一审查”的工作方式。

除了文件编辑,acceptEdits 还会自动批准常见文件系统 Bash 命令,例如 mkdir、touch、rm、rmdir、mv、cp、sed。带安全环境变量或常见进程包装器前缀时也可自动批准。

自动批准范围只适用于工作目录或 additionalDirectories 内的路径。范围外路径、受保护路径写入,以及其他 Bash 命令仍会提示。启用 PowerShell tool 时,Set-Content、Add-Content、Clear-Content、Remove-Item 及常见别名在范围内也可自动批准。

  • 适合你准备审查 diff,而不是逐个点击每次编辑审批的任务。
  • 不适合让 Claude 无监督操作生产环境、主目录或敏感配置。
  • 如果命令不是常见文件系统命令,仍会回到提示流程。
claude --permission-mode acceptEdits

plan

Plan mode 用于先研究和提出计划。Claude 可以读取文件、运行探索性 shell 命令、写出方案,但不会直接编辑你的源代码。

进入方式包括 Shift+Tab、在单个提示前使用 /plan,或 CLI 启动时指定 --permission-mode plan。再次按 Shift+Tab 可以在不批准计划的情况下离开 plan mode。

当计划准备好时,Claude 会询问如何继续。你可以批准并进入 auto mode、批准并接受编辑、批准但逐项审查、继续规划并给反馈,或者用 Ultraplan 进行基于浏览器的计划审查。

批准计划会退出 plan mode,并根据你选择的批准方式切到相应权限模式,Claude 才开始编辑。Ctrl+G 可在默认文本编辑器中打开提议计划,允许你在执行前直接修改。

claude --permission-mode plan

# 单次提示进入规划
/plan 先阅读支付模块,列出改动计划,不要改文件

把 plan 设为默认

可以在 .claude/settings.json 中设置 permissions.defaultMode = "plan",让项目默认先分析再改动。

auto

Auto mode 让 Claude 减少例行权限提示,并由单独的分类器模型在操作执行前审查风险。它会阻止超出请求范围、针对未知基础设施、或疑似被恶意内容诱导的动作。

Auto mode 需要 Claude Code v2.1.83 或更高版本。它还会鼓励 Claude 继续工作而不是频繁停下来问澄清问题;但当你的提示或技能明确依赖提问时,Claude 仍可能提问。

Auto mode 是研究预览能力。它减少提示,但不等于保证安全。适合方向可信的长任务,不应替代对敏感操作的人工审查。显式 ask 规则仍会强制提示。

{
  "env": {
    "CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
  },
  "permissions": {
    "defaultMode": "auto"
  }
}
要求说明
计划官方文档列为所有计划可用。
管理员Team / Enterprise 需要管理员在 Claude Code 管理设置中启用;也可通过托管设置禁用。
模型Anthropic API 上支持 Claude Opus 4.6+ 或 Sonnet 4.6;Bedrock、Vertex AI、Foundry 支持 Opus 4.7/4.8。
提供商Anthropic API 默认可用;Bedrock、Vertex AI、Foundry 需显式设置 CLAUDE_CODE_ENABLE_AUTO_MODE。

auto 安全边界

分类器默认信任工作目录和仓库配置的远程,其他基础设施默认被视为外部。管理员可通过 autoMode.environment 添加受信任仓库、桶和服务。

你在对话中明确说出的边界也会成为阻止信号,例如“不要 push”“部署前等我审查”。这些边界会持续到你在后续消息中解除;但如果上下文压缩丢掉了边界消息,效果也可能丢失。需要硬保证时,使用 deny 规则。

如果分类器连续阻止 3 次,或会话中累计阻止 20 次,auto mode 会暂停并恢复提示。批准被提示的操作后,auto mode 会恢复。非交互 -p 模式下重复阻止会中止会话。

默认阻止默认允许
下载并执行代码,例如 curl | bash。工作目录内的本地文件操作。
把敏感数据发送到外部端点。安装锁文件或 manifest 中声明的依赖。
生产部署、迁移、大规模云存储删除。只读 HTTP 请求。
授予 IAM 或仓库权限、修改共享基础设施。推送到你启动的分支或 Claude 创建的分支。
强推或直接推 main、销毁资源、丢弃未提交更改。读取 .env 并把凭证发送到与其匹配的 API。

分类器细节

Auto mode 的分类器按固定顺序处理操作:先应用允许/拒绝规则,再自动批准只读操作和工作目录内文件编辑,其余交给分类器,若被阻止则让 Claude 尝试替代方案。

进入 auto mode 时,过宽的允许规则会被暂时移除,例如 Bash(*)、PowerShell(*)、通配符解释器、包管理器运行命令以及 Agent 允许规则。像 Bash(npm test) 这种狭窄规则会继续生效,离开 auto 后被移除的规则会恢复。

分类器会看到用户消息、工具调用和 CLAUDE.md 内容;工具结果会被剥离,避免文件或网页中的恶意内容直接操纵分类器。子代理启动前、运行中每个操作、完成后的操作历史都会接受检查。

分类器调用计入 token 使用,并会在执行前增加一次往返。受保护路径外的读取和工作目录编辑通常跳过分类器,因此主要开销来自 shell 命令和网络操作。

dontAsk

dontAsk 会自动拒绝每个本来要提示的工具调用,只允许 permissions.allow 规则和只读 Bash 命令匹配的操作执行。

这让会话完全非交互,适合 CI 管道或受限脚本环境:你预先定义 Claude 可以做什么,其他操作不等待人工批准,而是直接被拒绝。

显式 ask 规则在 dontAsk 下会被拒绝而不是提示。Claude Code on the web 的云会话会忽略 defaultMode: "dontAsk",避免仓库签入设置让云会话进入不可交互模式。

claude --permission-mode dontAsk

bypassPermissions

bypassPermissions 禁用权限提示和安全检查,工具调用会立即执行。官方明确建议只在隔离容器、VM 或无互联网访问的 dev container 中使用,确保 Claude Code 无法损害主机系统。

从 v2.1.126 开始,它包括对受保护路径的写入;早期版本仍可能提示。显式 ask 规则仍会强制提示,针对文件系统根目录或 home 的删除操作仍会提示,作为防止模型错误的断路器。

不能从没有启用相关标志的会话中途进入 bypassPermissions;必须重新启动并使用 --permission-mode bypassPermissions、--dangerously-skip-permissions 或 --allow-dangerously-skip-permissions。Linux 和 macOS 上,以 root 或 sudo 运行时会拒绝进入该模式。

Claude Code on the web 不遵守设置文件中的 defaultMode: "bypassPermissions" 或 "dontAsk",因此仓库签入配置无法让云会话自动绕过权限。

claude --permission-mode bypassPermissions

# 等价高风险标志
claude --dangerously-skip-permissions

不要把 bypass 当成 auto

bypassPermissions 不提供 prompt injection 或意外操作保护。想减少提示但保留后台安全检查,应优先考虑 auto mode。

受保护路径

Claude Code 对一组路径做额外保护,防止仓库状态、IDE 配置、包管理器配置和 Claude 自身设置被意外破坏。permissions.allow 不会预先批准这些路径的写入。

受保护目录包括 .git、.config/git、.vscode、.idea、.husky、.cargo、.devcontainer、.yarn、.mvn、.claude 等;其中 .claude/worktrees 是例外,因为 Claude 会在那里存储自己的 git worktrees。

受保护文件覆盖 shell 配置、npm/yarn/pnpm/bun 配置、Bazel 配置、pre-commit/lefthook、wrapper properties、.devcontainer.json、pyrightconfig、.mcp.json、.claude.json 等。对 .claude/ 写入的提示可能提供“本会话允许 Claude 编辑自身设置”的选项。

模式受保护路径写入结果
default / acceptEdits / plan提示用户审批。
auto交给分类器判断。
dontAsk拒绝。
bypassPermissions允许。

学习检查清单

把本页内容落到真实任务中,用入口、上下文、权限、验证和团队规则五个维度检查是否真正掌握。

学习检查清单

读完本页后,不要只记住概念名。你应该能把“权限模式”放回 Claude Code 的真实工程流程里:任务从哪里发起,系统会加载什么上下文,哪些动作需要审批,结果如何验证,失败时如何回退。

如果这是入口或平台页面,要特别确认本入口能访问哪些上下文:本地文件、云端仓库、浏览器登录态、团队消息、外部工具,以及这些上下文是否足以完成验证。

  • 能用自己的话说明本页解决的具体问题,而不是只复述标题。
  • 能写出一个最小示例任务,并标明目标、范围、禁止事项和验收标准。
  • 能判断哪些信息应该放进当前提示,哪些应该沉淀到项目规则或配置里。
  • 能说明哪些长期规则应该写进 CLAUDE.md,哪些运行行为应该交给 settings、permissions、Hooks、Skills 和 MCP。
  • 能在任务完成后检查 diff、命令输出、测试结果、截图或 PR 说明,而不是只相信自然语言总结。

如果要把本页用于团队培训,可以让学员用 Claude Code 完成一个小任务:先只读解释,再提交计划,再执行最小改动,最后用真实验证命令和人工 diff 审查收尾。