Deepseek ArtifactsDeepseek Artifacts
权限模式指南

Claude Code auto mode:分类器、分层与每一个开关

Claude Code 的 auto 权限模式怎么决策:shift+tab 切换、以 Sonnet 5 为默认的客户端/服务端双轨分类器、2.1.302 新增的 CLAUDE_CODE_AUTO_MODE_MODEL、分层决策顺序、permissions 规则、托管 autoMode.environment 清单,以及 3 连拦与 20 次拦熔断——配官方讲解的纯净帧。

auto mode 速览

  • auto mode 是一种权限模式:Claude 正常干活、不再被常规提示打断,但在 shell 命令、网络请求这类动作执行前,一个后台分类器(第二个模型)会检查它是否对得上你的请求。
  • 切换方式:shift+tab 循环(auto 排在 default → acceptEdits → plan 之后最后一位)、claude --permission-mode auto、在 Bash 提示里选「Yes, and switch to auto mode」(2.1.247+)。2.1.283 起,新交互会话在所有计划上默认从 auto 开始。
  • 决策有固定顺序:你的 allow/ask/deny 规则先行,只读动作和工作目录内编辑自动放行,其余交给分类器——默认模型是 Claude Sonnet 5。
  • 用 CLAUDE_CODE_AUTO_MODE_MODEL(2.1.302+)钉死分类器模型,用 CLAUDE_CODE_AUTO_MODE_SERVER 选服务端还是客户端审查;分类器模型不可用时检查失败、动作一律拒绝。
  • 护栏:3 连拦或累计 20 拦会暂停 auto mode 恢复提问;deny 规则在 auto mode 里依然生效;permissions.disableAutoMode 可整个移除该模式。

How auto mode works with Claude Code

频道Claude5:42

打开

Permission modes — Claude Code documentation

文档code.claude.com

打开

全部帧取自 Anthropic 官方的 auto mode 讲解视频——只取全屏动画卡,真人出镜段一律跳过。事实逐条对照官方 permission-modes、permissions、auto-mode-config 文档与引入 CLAUDE_CODE_AUTO_MODE_MODEL 的 2.1.302 changelog 核实。

视频帧版权归创作者所有,此处以带署名和深链的图文教程形式引用。

一步步开启并配置 auto mode

第一步——打开 auto mode

  1. 1

    看看 auto mode 替掉了什么

    default 模式下的日常工作意味着一个接一个的提示:npm run build 要批 Bash、抓文档要批网络。auto mode 用后台分类器替掉这些常规提示——shell 命令、网络请求这类动作执行前,由第二个模型检查它是否对得上你的请求。ask 规则和 deny 规则照常生效;消失的只是那些例行的是/否。

    Claude Code permission prompt cards for an npm run build Bash command and a fetch approval asking Do you want to proceed with Yes and No options that auto mode replaces with a classifier check
    被 auto mode 替掉的提示卡:npm run build 的 Bash 审批和一次 fetch 审批,各自等着 Yes/No。
  2. 2

    用 shift+tab 切换模式

    会话中 shift+tab 循环切换权限模式:从 auto 按一下落到 default,循环是 default → acceptEdits → plan,可选模式插在 plan 之后——bypassPermissions 第一、auto 最后,底部页脚始终标着当前模式。另有三条路:Bash 提示里的「Yes, and switch to auto mode」选项(2.1.247+)、claude --permission-mode auto 旗标(可配 -p)、以及 permissions.defaultMode——注意 "auto" 只在用户级 ~/.claude/settings.json、--settings 文件或托管设置里生效,项目级 .claude/settings.json 里无效。

    Claude Code input footer showing plan mode on with the shift+tab to cycle hint that moves between default, acceptEdits, plan and auto permission modes
    输入框页脚标着当前模式和 shift+tab to cycle 提示——auto 排在循环末位。
  3. 3

    知道默认值:会话默认从 auto 开始

    从 Claude Code v2.1.283 起,新交互会话在所有计划上默认从 auto mode 开始(更早版本只给 Pro/Max/Team;HIPAA 配置从 2.1.285+ 回落 Manual)。auto 下的会话在页脚显示模式并正常干活——比如图中 Fable 5 上的「Tidy up local branches」——分类器在后台逐个审查动作。服务端检查生效时,/status 会列出 Auto mode server 条目。

    Claude Code v2.1 session running Tidy up local branches on Fable 5 with high effort under auto mode on shown in the footer with Pollinating spinner status
    跑在 auto mode 下的 Claude Code v2.1 会话:Fable 5 执行 Tidy up local branches,页脚标着 auto mode on。

第二步——分类器怎么决策

  1. 4

    记住决策顺序:规则、分层、分类器

    每个动作走同一条路。你的规则先答:deny 拦截、ask 提问、allow 放行。只读动作和工作目录内编辑不经分类器直接放行。其余落入分层——只读、项目内写入、其余全部——例行动作跳过分类器,剩下的进分类器菱形,输出 Approve 或 Deny。

    Auto mode decision diagram where your deny ask allow rules route Agent actions into Tier 1 read-only, Tier 2 in-project writes and Tier 3 everything else before the Skip Classifier path or the Classifier diamond ending in Approve or Deny
    决策图:你的 deny/ask/allow 规则把 Agent 动作分进 Tier 1 只读、Tier 2 项目内写入和 Tier 3,再走 Skip Classifier 或 Classifier 菱形。
  2. 5

    看清分类器到底读什么

    分类器拿不到你的完整转录。请求会剥掉工具结果,恶意文件或网页内容无法直接操纵它——送到的只有你的请求加上待判动作。录屏例子里,一个查限流的问题坍缩成两行:WebSearch("acme API rate limits") 和 WebFetch(docs.acme.com)。这就是分类器要评估的全部表面。

    Auto mode classifier visibility strip showing the full conversation with WebSearch acme API rate limits and WebFetch docs.acme.com tool calls reduced to the two actions the classifier actually evaluates
    分类器可见性条:完整会话被缩减为 WebSearch 和 WebFetch 两个待评估调用。
  3. 6

    为什么长相相同的命令判决不同

    分类器判的是动作本身,不是气氛。第二条例子里,git branch -d old-login 只删本地分支——例行;它的孪生命令 git push origin --delete old-login 删的是远端分支——正是分层会交给分类器而不是挥手放行的那类动作。任何离开本机或触碰共享状态的动作都可能被分类,哪怕读起来像同一次清理。

    Auto mode classifier strip comparing a git branch -d old-login cleanup with a git push origin --delete old-login so the remote-deleting twin gets classified while the local delete stays routine
    git 孪生命令:本地分支删除保持例行,git push origin --delete 被送上分类器。

第三步——规则与分类器模型

  1. 7

    选服务端还是客户端审查

    分类器在两个地方之一运行。服务端:Claude Code 随会话的模型请求一起让服务端检查动作——/status 里显示 Auto mode server 条目。客户端:Claude Code 自己发分类器请求,用于服务端没给结论或代理丢掉审查结果的场景。用 CLAUDE_CODE_AUTO_MODE_SERVER=1(服务端)或 =0(总是客户端)控制;服务端没给结论时,Claude Code 拒绝该动作而不是未经审查就执行。

  2. 8

    钉死分类器模型(2.1.302+)

    分类器默认 Claude Sonnet 5;会话本身跑在 Sonnet 4.6 时用 4.6,且 ANTHROPIC_DEFAULT_SONNET_MODEL 被尊重。从 2.1.302 起,CLAUDE_CODE_AUTO_MODE_MODEL 强制指定分类器——例如 ~/.claude/settings.json 里 "env": undefined。两个失败模式要记住:指定的模型不可用时检查失败、动作一律拒绝;被排除或不支持的模型(Opus 5、Sonnet 5.5、Opus 5.5)会静默回落默认。排查用 claude --permission-mode auto --debug-file classifier-debug.log,搜 classifier_request_started。

  3. 9

    写好分类器让位的规则

    规则在分类器之前作答,硬边界都放这里。录屏里的 managed-settings.json 示范了形状:deny: ["Bash(curl *)", "Read(./.env)"]、ask: ["Bash(git push *)"]、allow: ["Bash(python:*)"]——视频里特意标注这条 allow 过宽。像 Bash(git clean *) 这样的 ask 规则在 auto mode 里照样弹窗,只读 Bash 命令则可以等分类器审查而不弹窗。收紧 allow 规则;分类器是兜底,不是 Bash(*) 的借口。

    Claude Code managed-settings.json permissions block with deny Bash curl and Read .env rules, ask Bash git push rules and an overly broad allow Bash python rule commented for review
    permissions 块:deny curl 和 .env 读取、ask git push、allow python——过宽的 allow 被特意标出。

第四步——托管配置与护栏

  1. 10

    给团队配 autoMode.environment

    托管设置里,autoMode.environment 告诉分类器什么算可信上下文:录屏卡片列了「Source control: github.com/acme and all repos under it」「Trusted cloud buckets: s3://acme-builds」「CI server: ci.acme.internal」。与 $defaults 并列时,你的条目是在内置清单上追加而不是替换。这是管理员侧对「自己家基础设施触发分类提示」的答案——把团队真正用的仓库、桶、服务名写进去。

    Claude Code managed-settings.json autoMode environment block trusting Source control github.com/acme repositories and the s3://acme-builds trusted cloud buckets for the classifier
    autoMode.environment 卡片:可信源 github.com/acme、s3://acme-builds 桶和 ci.acme.internal CI 服务器。
  2. 11

    分层配置 allow、soft_deny、hard_deny

    environment 之外,托管设置里还有三份规则清单:"allow"([$defaults, "Deploying to staging is allowed"])、"soft_deny"([$defaults, "Running database migrations"])、"hard_deny"([$defaults, "Never touch production custo..."])。allow 模式终结一次性审批;soft deny 带着倾向交给分类器;hard deny 直接终局。随时用 claude auto-mode defaults 查看完整内置清单——它以 JSON 打印。

    Claude Code managed-settings.json auto mode lists with allow Deploying to staging, soft_deny Running database migrations and hard_deny Never touch production custom defaults
    分层清单:allow 放行 staging 部署,soft_deny 压白数据库迁移,hard_deny 保护生产数据。
  3. 12

    记住两条熔断线

    auto mode 会自己踩刹车:3 连分类器拦截或累计 20 次拦截就恢复正常提问,两个数字都不可配置。语言也是信号——「don't push」这类表述会成为拦截信号,而点名的明确批准能解除拦截。要彻底移除模式,在托管设置里设 permissions.disableAutoMode 为 "disable",运行中的会话会退出 auto mode 并明说。最后再念一遍:deny 规则在 auto mode 里永远赢。

分类器模型细看

分类器是最常被配错的部分,因为它的默认值在被拒之前完全隐形。以下行为散落在 permission-modes、auto-mode-config 文档与 2.1.302 changelog 里,汇总如下:

  • 1默认模型:Claude Sonnet 5。会话本身跑在 Sonnet 4.6 时改用 Sonnet 4.6,且 ANTHROPIC_DEFAULT_SONNET_MODEL 被尊重。
  • 2钉死覆盖:CLAUDE_CODE_AUTO_MODE_MODEL(2.1.302+)用完整模型 ID 指定分类器——模型不可用时检查失败、动作被拒,所以请填你的计划真正提供的模型。
  • 3静默回落:被排除或不支持的分类器模型(Opus 5、Sonnet 5.5、Opus 5.5)不会报错——直接改用默认分类器模型。
  • 4两种运行时:服务端审查随会话的模型请求走(CLAUDE_CODE_AUTO_MODE_SERVER=1);客户端请求是兜底(=0),用于服务端没给结论或代理丢掉审查结果的场景。
  • 5不留未审执行:两条路都没给结论时,Claude Code 拒绝该动作——auto mode 绝不执行一个本该被审查却没有结论的动作。
  • 6验证手段:claude --permission-mode auto --debug-file classifier-debug.log 会记录 classifier_request_started 条目,/status 显示 Auto mode server 是否在用。

「auto mode not available for this model」这类报告也出自这里:可用性取决于计划、组织、模型与提供商,而钉死的分类器模型若提供商不提供,每次检查都变成拒绝。修掉或删掉那个变量即可——会话主模型本身不用换。

auto mode FAQ

继续探索