Claude Code auto mode 接中转每轮失败?2.1.317 修了网关 403/422,附升级与实测

Claude Code 2.1.317(11 月 3 日发布)修复了 auto mode(自动模式)在 ANTHROPIC_BASE_URL 指向 LLM 网关、网关对服务端安全检查返回 403 或 422 时每一轮都失败的问题。本文讲清这次更新改了什么、哪些第三方网关和中转用户会遇到、怎么升级和核对版本、怎么配置 Base URL 与 Key 并开启 auto mode,并附 2.1.316 与 2.1.317 的对照实测、常见报错对照表和 FAQ。

7 分钟阅读
Claude Code auto mode 接中转每轮失败?2.1.317 修了网关 403/422,附升级与实测

先说结论:如果你的 Claude Code 通过第三方网关或中转(自定义 ANTHROPIC_BASE_URL)使用,开了 auto mode 之后每一轮都报 403 或 422,升级到 2.1.317 就能解决。

  • 据 Claude Code 官方 CHANGELOG,2.1.317 修复了「把 LLM 网关设为 base URL 时,网关对 auto mode 的服务端安全检查返回 403 或 422,导致每一轮都失败」的问题;用 apiKeyHelper 时收到的 403 行为不变。npm 上 2.1.317 的发布时间是 2026 年 11 月 3 日 07:57(北京时间)。
  • 我们 11 月 3 日下午(北京时间)用本地代理模拟了一个会拒绝安全检查的网关:2.1.316 第一个请求就失败、每一轮都失败;2.1.317 会去掉安全检查字段重试一次,任务正常完成。
  • 直接接 aicodewith(https://api.aicodewith.ai)时,2.1.316 和 2.1.317 的 auto mode 都能正常跑完任务,本站接口对安全检查请求返回 200,Claude Code 自动改用本地分类器。
  • 暂时不能升级:设置 CLAUDE_CODE_AUTO_MODE_SERVER=0,让 auto mode 不再请求服务端检查,我们在 2.1.316 上测过有效。

创建 API Key,在 Claude Code、Codex、Cursor 里接入 Claude →

2.1.317 更新了什么

auto mode 是 Claude Code 的一种权限模式:不用你逐个确认,由一个分类器在后台检查每个操作是否安全。据 官方权限模式文档,当 ANTHROPIC_BASE_URL 指向 LLM 网关或代理时,Claude Code 默认会先让服务端来做这个检查(服务端分类器),服务端不检查时再退回到本地分类器。

问题出在「服务端检查」这一步:Claude Code 会在请求里多带一个 safeguards 字段和一个 beta 请求头。有的网关不认识它们,直接返回 403(拒绝)或 422(字段不合法),旧版本把这当成普通请求失败,于是每一轮都失败。

据 CHANGELOG,2.1.317 里和 auto mode、网关相关的条目有:

条目内容
主修复网关作为 base URL、对服务端安全检查返回 403 或 422 时,auto mode 不再每轮失败(带 apiKeyHelper 的 403 不变)
新提示auto mode 的检查对子代理(subagent)的工具调用没有结论时,主界面会显示提示,以前什么都不显示
403 文案区域或网络封锁返回的 403 不再显示成登录失败,错误信息会说明是封锁
OTel指标、事件和 span 新增 anthropic.plan、anthropic.seat_type、anthropic.provider、anthropic.custom_base_url

之前几个版本也在修同一块,据 CHANGELOG:

版本相关条目
2.1.316修复在代理或 LLM 网关后、由宿主应用(如 Claude Desktop)启动且关闭实验 beta 的会话里,CLAUDE_CODE_AUTO_MODE_SERVER=1 被忽略
2.1.314修复安全检查没有结论时,auto mode 把调用报成 blocked 并列进 /permissions
2.1.304/auto-mode-setup 引导式设置,可在 Bedrock、Vertex、Foundry、Claude apps gateway 和关闭遥测的会话中使用
2.1.302新增 CLAUDE_CODE_AUTO_MODE_MODEL,选择客户端分类器用的模型,不影响服务端 auto mode;claude -p 在第三方提供方、关闭遥测或全新安装时不指定权限模式就从 default 开始,--permission-mode auto 仍是 auto

谁会遇到这个问题

同时满足下面三条才会遇到:

  1. 用的是 auto mode(2.1.283 起终端和 VS Code 默认就是 auto mode,据官方文档)。
  2. ANTHROPIC_BASE_URL 指向第三方 LLM 网关、中转或公司自建代理。
  3. 这个网关对带 safeguards 字段或 dangerous-tool-use beta 头的请求返回 403 或 422。常见原因是网关严格校验请求体(不认识的字段直接 422)或有安全策略拦截(403)。

只用官方 Anthropic API 登录、或网关会原样转发未知字段的,不受影响。网关怎么转发请求头和字段可以看官方 LLM 网关文档。

我们抓到的安全检查请求长什么样

我们在 Claude Code 和 aicodewith 之间放了一个只记录请求、不改内容的本地代理。auto mode 会话的第一个请求带着下面这些内容(节选):

text
POST /v1/messages?beta=true
anthropic-beta: claude-code-20250219, ..., dangerous-tool-use-2026-09-03, afk-mode-2026-01-31

"safeguards": [{"type": "dangerous_tool_use",
                "classifier_context": {"v": 1, "permission_mode": "auto", "platform": "linux", ...}}]

服务端不做检查时,后续请求就不再带 safeguards,改为每次执行 Bash 等操作前,单独发一个请求给本地分类器模型(默认 claude-sonnet-5)。

实测:2.1.316 和 2.1.317 对照

测试环境:2026 年 11 月 3 日 15:12–15:35(北京时间),Linux,模型 claude-opus-5-5,本站 Key,每次都用全新的配置目录。任务是让 Claude 写一个打印斐波那契数列的 fib.py 并用 python3 运行,这会触发一次文件写入和一次 Bash 命令,Bash 命令需要经过 auto mode 检查。命令如下:

bash
claude -p "Create a file fib.py that prints the first 10 Fibonacci numbers, then run it with python3 and tell me the output." \
  --permission-mode auto --model claude-opus-5-5 \
  --output-format json --debug-file ./cc-debug.log

grep -E "server-classifier|API error" ./cc-debug.log

「模拟网关」是我们在本地代理里加的规则:只要请求带 safeguards 字段就返回 403 或 422,其余请求原样转发给 aicodewith。它用来复现 CHANGELOG 描述的场景,不代表 aicodewith 的真实行为。

场景2.1.3162.1.317
直连 aicodewith成功,3 轮,12.0 秒成功,4 轮,17.7 秒
模拟网关对安全检查返回 403失败,0.6 秒,Failed to authenticate. API Error: 403 ...;下一轮同样失败成功,3 轮,11.8 秒
模拟网关对安全检查返回 422失败,0.7 秒,API Error: 422 ...;下一轮同样失败成功,3 轮,15.7 秒
模拟 403 + apiKeyHelper—失败,重试 11 次,248.4 秒,Failed to authenticate
2.1.316 + CLAUDE_CODE_AUTO_MODE_SERVER=0,模拟 403 / 422成功,13.7 秒 / 10.8 秒不需要

2.1.317 直连那次多了一轮,是 Claude 自己把脚本又跑了一遍确认输出,和版本无关。所有成功的运行都输出了 0、1、1、2、3、5、8、13、21、34。

直连 aicodewith:两个版本都正常

本站接口收到带 safeguards 的请求会返回 200,但不返回检查结果。debug 日志里能看到 Claude Code 判断「服务端不做检查」,这个会话之后都改用本地分类器:

text
[server-classifier] the platform gave no classification for this request (server_no_result);
  treating that as this deployment's answer: auto mode classifies locally for the rest of
  this session and stops sending the classifier context
[auto-mode] new action being classified: tool=Bash actionChars=26
[Stall] classifier_request_finished tool=Bash stage=xml_s1 outcome=ok durationMs=2727

每次 Bash 命令的本地检查耗时约 2.5–2.7 秒。启动时 stderr 会打印一段英文说明,提示当前地址不支持新版服务端分类,auto mode 照常工作,可以忽略。

2.1.316 遇到拒绝安全检查的网关:每轮都失败

{OLD403}

注意 403 被显示成了 Failed to authenticate(认证失败),很容易让人以为是 Key 填错了。其实 Key 没问题,换成 manual 模式就能用。

2.1.317:去掉安全检查字段重试一次

升级后同样的网关,debug 日志是这样的:

text
[ERROR] API error (attempt 1/11): 403 403 {"type":"error","error":{"type":"permission_error",
        "message":"gateway policy: field safeguards is not allowed"}}
[WARN] [server-classifier] HTTP 403 with no cause Claude Code recognises, on a request that
       carried the dangerous-tool-use beta header; sending it once more without that header
       and the safeguards field, to learn whether they caused the refusal
[WARN] [server-classifier] a request was refused (HTTP 403) and answered when sent again
       without the dangerous-tool-use beta header and the safeguards field. Until Claude Code
       restarts, neither is sent and auto mode does not ask the server to check actions.
       To keep the check, let the gateway pass that header and field, then restart Claude Code.

也就是说,2.1.317 收到原因不明的 403 / 422 后,会去掉 dangerous-tool-use beta 头和 safeguards 字段再发一次;成功的话,这次会话剩下的时间都不再请求服务端检查,改用本地分类器。auto mode 的权限检查仍然在做,只是由本地分类器完成。想恢复服务端检查,要让网关放行这个请求头和字段,再重启 Claude Code。

带 apiKeyHelper 的 403 仍然失败

用 apiKeyHelper 动态取 Key 时,CHANGELOG 写明 403 的处理不变。我们的实测也是这样:2.1.317 重试 11 次,约 4 分钟后报错退出:

text
# 2.1.317 + apiKeyHelper, gateway answers 403 to the safety check
[ERROR] API error (attempt 1/11): 403 ...
...
[ERROR] API error (attempt 10/11): 403 ...
Failed to authenticate. API Error: 403 gateway policy: field safeguards is not allowed
# exit 1 after 248.4 s

用 apiKeyHelper 的话,要么让网关放行 safeguards,要么用下文的 CLAUDE_CODE_AUTO_MODE_SERVER=0。

升级到 2.1.317

据官方安装文档,原生安装会在后台自动更新;npm、Homebrew、WinGet 安装要手动升级。npm 要用 npm install -g ...@latest,不要用 npm update -g。

bash
# native install (curl -fsSL https://claude.ai/install.sh | bash)
claude update

# npm install
npm install -g @anthropic-ai/claude-code@latest

# Homebrew (the claude-code cask follows the stable channel)
brew upgrade claude-code@latest

# Windows WinGet
winget upgrade Anthropic.ClaudeCode

# check
claude --version
# 2.1.317 (Claude Code)

claude --version 显示 2.1.317 或更高就可以了。Homebrew 的 claude-code cask 跟随 stable 渠道,一般比 latest 晚一周左右,想马上拿到这次修复用 claude-code@latest。在会话里运行 /status 可以看到 Auto mode server 是否为 Enabled。

配置 ANTHROPIC_BASE_URL 与 Key

先在 aicodewith 创建一个 API Key:

创建 API Key,接入 Claude Code →

macOS / Linux:

bash
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="你的 API Key"
claude --permission-mode auto

Windows PowerShell:

powershell
$env:ANTHROPIC_BASE_URL = "https://api.aicodewith.ai"
$env:ANTHROPIC_AUTH_TOKEN = "你的 API Key"
claude --permission-mode auto

想长期生效,写进 ~/.claude/settings.json。permissions.defaultMode 设为 auto 只在用户级设置里有效,写在项目的 .claude/settings.json 里不生效(据官方文档):

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "你的 API Key"
  },
  "permissions": {
    "defaultMode": "auto"
  }
}

更多写法(Windows 永久变量、模型配置)见《Claude Code 如何接入第三方 API》。

开启 auto mode

  • 启动时:claude --permission-mode auto。
  • 会话中:按 Shift+Tab 切换,状态栏显示 ⏵⏵ auto mode on 就是 auto mode。
  • 非交互(claude -p):据 2.1.302 的 CHANGELOG,在第三方提供方、关闭遥测或全新安装时,不指定权限模式就从 default 开始,要 auto 就显式加 --permission-mode auto。
  • 想换本地分类器的模型:设置 CLAUDE_CODE_AUTO_MODE_MODEL(2.1.302 起),它不影响服务端检查。

暂时没法升级,又遇到网关拒绝安全检查,可以关掉服务端检查,只用本地分类器:

{SERVER0}

我们在 2.1.316 上配合模拟的 403 和 422 网关测过,任务都能正常完成。

常见报错对照表

现象原因处理
每轮 API Error: 403 ...,前面带 Failed to authenticate,换 manual 模式就正常网关拒绝 auto mode 的服务端安全检查升级到 2.1.317;或设 CLAUDE_CODE_AUTO_MODE_SERVER=0
每轮 API Error: 422 ...,信息里提到 safeguards网关严格校验请求体,不认识 safeguards 字段同上;或让网关放行该字段
403,用了 apiKeyHelper2.1.317 对这种情况不改行为,仍按认证失败处理让网关放行 safeguards 和 beta 头,或设 CLAUDE_CODE_AUTO_MODE_SERVER=0
403,所在地区或网络被封锁区域或网络限制2.1.317 起错误信息会说明是封锁,不再显示成登录失败;换网络或改用可访问的网关
操作被拦下,提示安全检查没有结论服务端对该操作没有给出结论2.1.314 起不再误报成 blocked;2.1.317 起子代理的这类情况也会提示。据官方文档,连续 10 次没有结论会停止本轮
每轮都 403 / 401,manual 模式也一样Key 本身无效或 Base URL 写错检查 Key 和 ANTHROPIC_BASE_URL,和 auto mode 无关

常见问题

我用 aicodewith,需要升级吗?

我们实测 2.1.316 和 2.1.317 直连本站都能正常使用 auto mode,不升级也不会遇到这个问题。不过 2.1.317 还带了别的修复,建议照常升级。

2.1.317 之后 auto mode 还安全吗?

还在检查。去掉的只是「请服务端检查」这一步,每个需要检查的操作改由本地分类器判断,我们的日志里每次 Bash 命令都有一次本地检查记录。

为什么 403 显示成「Failed to authenticate」?

旧版本把 auto mode 安全检查收到的 403 当成认证失败。所以如果 Key 刚测过是好的,manual 模式也能用,只在 auto mode 下报 403,多半就是这个问题。

怎么确认自己是不是这个问题?

带 --debug-file 跑一次,在日志里搜 server-classifier 和 API error。如果错误信息里出现 safeguards,或者 2.1.317 打出了「sending it once more without that header and the safeguards field」,就是网关拒绝了安全检查。

Codex 有类似的权限设置吗?

Codex 用沙盒和审批策略控制命令执行,配置方法见《Codex 沙盒和 /permissions 怎么配》。

延伸阅读

相关文章

DeepSeek Harness Creator Mode 怎么用?安装、接入第三方 API 和写第一个插件实测

DeepSeek Harness Creator Mode 怎么用?安装、接入第三方 API 和写第一个插件实测

DeepSeek Harness 官方 11 月 2 日推出 Creator Mode 演示:用一句话描述需求,智能体就写好插件、装进 Harness 并验证。本文讲清 Creator Mode 是什么、怎么用 npx 安装 Harness、怎么把 OpenAI 兼容的第三方 API(aicodewith Base URL + Key)接进来用 Claude、GPT 和 DeepSeek 模型,再用 Creator Mode 实际做一个 todo_scan 插件,附实测输出、常见报错和 Claude Code / Codex 的对应做法。

Claude Message Threads 怎么用?Messages API 消息线程公测:只发新消息、首 token 提速 35%(Claude Code / API 实测)

Claude Message Threads 怎么用?Messages API 消息线程公测:只发新消息、首 token 提速 35%(Claude Code / API 实测)

Anthropic 11 月 2 日给 Messages API 上线 Message Threads(消息线程)公测:第一轮发完整对话并建线程,之后每轮只发新消息和上一条回复的 id,长对话首 token 更快,但 token 用量和计费不变。本文对照官方文档讲清 thread 参数、beta 请求头、5 分钟过期和 404 重放,给出 curl / Python / TypeScript 写法,并用本站 Key 实测:通过 aicodewith 调用时 thread 字段会被忽略、续写拿不到上文,Claude Code 不受影响,附替代写法和常见报错。

Karpathy 的 HackerTube 怎么做?用 Claude Code / Codex 爬 Hacker News 评论,做自己的去算法视频站(实测)

Karpathy 的 HackerTube 怎么做?用 Claude Code / Codex 爬 Hacker News 评论,做自己的去算法视频站(实测)

Karpathy 用 Claude Code 和 Opus 5.5 花约两小时做出 HackerTube:从 Hacker News 20 年的评论里挑出 6,454 个被反复推荐的 YouTube 视频。本文用本站 Key 让 Claude Code 和 Codex 各做一个缩小版:用 HN 官方 Algolia API 抓两个月评论、抽 YouTube 链接、去重计数、生成静态页,附完整提示词、实测耗时、两边结果对比,以及从缩小版走到 HackerTube 还差的几步。