一句话答案
API Error: 400 的报错里提到 thinking,意思是 Claude Code 请求里的思考(thinking)设置和模型能接受的不一致。对照下表找到你的报错:
| 报错里包含 | 意思 | 先试什么 |
|---|---|---|
"thinking.type.enabled" is not supported for this model |
Claude Code 给只支持自适应思考的模型发了旧的固定预算思考模式 | claude update |
adaptive thinking is not supported on this model |
反过来:自适应思考发到了只支持固定预算的模型上 | 查清实际处理请求的是哪个模型 |
Effort '...' isn't available with thinking turned off |
关了思考,effort 又高于 high |
/effort high,或者把思考重新打开 |
max_tokens must be greater than thinking.budget_tokens |
思考预算把回答的空间占没了 | 调高 CLAUDE_CODE_MAX_OUTPUT_TOKENS,或调低 MAX_THINKING_TOKENS |
thinking blocks ... cannot be modified |
对话历史和 API 返回的不一致 | /rewind |
Invalid data in redacted_thinking block |
之前某一轮带着 API 不接受的思考块 | claude update,还不行就 /clear |
以上来自 Claude Code 错误说明 和 Anthropic 的 思考问题排查指南。如果你用的网关有自己的模型名,也请看下面网关那一节。
哪些模型接受哪种思考设置
现在的 Claude 模型有两种思考模式。自适应思考(thinking: {type: "adaptive"})由模型自己决定想多少,用 effort 档位来调节。扩展思考是更早的手动模式,用固定的 budget_tokens。按 Anthropic 指南:
| 模型 | 思考模式 | 会被 400 拒绝的 thinking.type |
|---|---|---|
| Fable 5.1、Fable 5、Opus 5.5、Opus 5、Opus 4.8、Opus 4.7、Sonnet 5.5、Sonnet 5、Haiku 5.5 | 只支持自适应 | "enabled"(其中几个也拒绝 "disabled") |
| Opus 4.6、Sonnet 4.6 | 自适应,以及扩展(已弃用) | 无 |
| Opus 4.5、Sonnet 4.5、Haiku 4.5 | 只支持扩展 | "adaptive" |
有些模型还不能关闭思考。按 Claude Code 模型配置文档,在 Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 系列上,alwaysThinkingEnabled: false 和 MAX_THINKING_TOKENS=0 都不起作用。
「"thinking.type.enabled" is not supported for this model」
API Error: 400 ... "thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.
Claude Code 错误说明里的解释是:你的 Claude Code 版本低于所选模型要求的最低版本。文档列出的版本:
| 模型 | Claude Code 最低版本 |
|---|---|
| Opus 4.7 | v2.1.111 |
| Opus 4.8 | v2.1.154 |
| Sonnet 5 | v2.1.197 |
| Opus 5 | v2.1.219 |
| Opus 5.5 | v2.1.280 |
| Sonnet 5.5 | v2.1.284 |
解决办法:
- 运行
claude update,然后重启 Claude Code。 - 如果你在 stable 发布通道,更新只会到最新的 stable 版本,可能仍然低于上面的版本。切到 latest 通道再更新。
- 暂时没法升级,就运行
/model换成 Opus 4.6 或 Sonnet 4.6。 - 如果是 Agent SDK 报的,升级 SDK 包。错误说明里列了各模型要求的 SDK 最低版本。
Opus 4.7 刚出来时这个报错很常见。在 anthropics/claude-code#49219 里,v2.1.110 用 /model claude-opus-4-7 切模型就报这个错,维护者回复说 v2.1.111 已修复。
「adaptive thinking is not supported on this model」
API Error: 400 adaptive thinking is not supported on this model
这是反过来的情况。按 Anthropic 指南,模型只支持扩展思考时会报这个错,比如 Opus 4.5、Sonnet 4.5、Haiku 4.5。
Claude Code 根据模型 ID 来决定思考设置。如果 ID 写的是新模型,实际处理请求的却是旧模型,请求里就可能带着模型不接受的自适应思考。查一下你的网关或代理把这个 ID 映射到了哪个模型,换一个它直接提供的 ID。anthropics/claude-code#89633(仍未关闭)报告说,一个会话里每次调用 WebSearch 工具都报这个错,换了主模型也一样。
「Effort isn't available with thinking turned off」
API Error: Effort 'xhigh' isn't available with thinking turned off on this model · run /effort high to continue, or turn thinking back on (unset MAX_THINKING_TOKENS=0)
你关掉了思考,同时把 effort 设得高于 high。有些模型(比如 Opus 5)不接受这种组合。
解决办法: 用 /effort high 降低 effort,或者重新打开思考:去掉 MAX_THINKING_TOKENS,或从设置里删掉 "alwaysThinkingEnabled": false。非交互运行时,用 --effort high 或 effortLevel 设置。
v2.1.242 之前,Claude Code 显示的是 API 的原始提示:
API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.
「max_tokens must be greater than thinking.budget_tokens」
API Error: 400 ... max_tokens must be greater than thinking.budget_tokens
用固定思考预算时,budget_tokens 必须小于 max_tokens,这样预算之外总能留出写回答的空间。只有 Claude Code 使用固定预算时才会碰到:模型只支持扩展思考,或者在 Opus 4.6、Sonnet 4.6 上设置了 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1。在自适应模型上,Claude Code 会忽略 MAX_THINKING_TOKENS 的正数值。
解决办法:
- 把
CLAUDE_CODE_MAX_OUTPUT_TOKENS调到高于思考预算,或者调低MAX_THINKING_TOKENS。 - 两个值都要查:终端环境变量里有没有,
~/.claude/settings.json的env里有没有。
Claude Code 自己会把 MAX_THINKING_TOKENS 限制在比请求最大输出少 1 个 token。对它无法识别的模型 ID,最大输出默认 32,000、上限 128,000(见 环境变量说明)。anthropics/claude-code#8756 报告在 Bedrock 经 LiteLLM 代理时偶尔会出这个错,再试一次往往就好了。
思考块和对话历史相关的报错
API Error: 400 ... thinking blocks ... cannot be modified
API Error: 400 ... Invalid `data` in `redacted_thinking` block
API 会检查之前的思考块是否原样传回。这类报错说明对话历史已经对不上了。
- 思考块不能修改: 运行
/rewind,或按两次 Esc,回到出问题那一轮之前的检查点。用 Opus 4.7 或 Opus 4.8 的话,先claude update:错误说明里写着,v2.1.156 之前的版本在正常调用工具时也可能触发,而且/rewind清不掉。 - redacted_thinking 数据无效: 从 v2.1.282 起,Claude Code 会自动去掉之前的思考并重试一次。更早的版本之后每一轮都会失败,所以先
claude update再恢复会话。还不行就/clear开一个不带这个块的新对话。 - 经过代理时: Anthropic 指南说,最常见的原因是代码丢掉了
redacted_thinking块,或者重新拼装了 assistant 消息。会转换或改写消息的代理也会造成同样的问题。
用网关或自定义模型 ID 时
Claude Code 是靠把模型 ID 和已知规则做匹配,来决定开不开 effort 档位和思考的。文档提到,匹配不上的 ID 可能让模型本来支持的功能保持关闭。也可能反过来出错:anthropics/claude-code#52541 报告,Cowork 接第三方网关时,给 claude-opus-4.7 发了 thinking.type.enabled,被模型拒绝,而 Opus 4.6、Sonnet 4.6 正常。
怎么处理:
- 留意启动警告。 如果 Claude Code 提示
Model "..." isn't recognized,说明它不认识这个 ID。 - 先更新。 比你的 Claude Code 版本更新的模型,它是认不出来的。
- 把网关的名字映射到模型。 在设置里加一条
modelOverrides,比如"claude-opus-4-8": "my-gateway-opus",Claude Code 就会把这个 ID 当成对应的模型来处理(见 模型配置文档)。 - 如果网关连
thinking参数本身都拒绝, 设置CLAUDE_CODE_DISABLE_THINKING=1。环境变量说明把它描述为给拒绝该参数的代理和网关用的兼容选项。默认会思考的模型仍然可能思考。
ANTHROPIC_DEFAULT_*_MODEL_SUPPORTED_CAPABILITIES 这组变量可以直接声明模型支持哪些功能,但它们只在 Amazon Bedrock、Google Cloud Agent Platform 和 Microsoft Foundry 上生效。ANTHROPIC_BASE_URL 指向网关时,只有对应的 _NAME 和 _DESCRIPTION 变量生效。
通过 TeamoRouter 使用 Claude Code
TeamoRouter 是一个 API 网关,一个 Key 可以调 Claude、GPT、Gemini、DeepSeek。Claude 走原生 Anthropic 协议(/v1/messages),Claude Code 只需要一个 Base URL 和一个 Key。没有订阅,按用量付费。
- 在 TeamoRouter 控制台 创建 API Key,Key 以
sk-teamo-开头。 - 充值,最低 $5。 充值弹窗支持银行卡;也可以点 「USDT支付」,用 USDT、USDC 或 ETH,从任意交易所 App 转账——收银台会按金额显示可用网络(BEP20 从 $5 起就能用)。步骤见 用 USDT 充值。
- 设置两个环境变量(macOS / Linux):
export ANTHROPIC_BASE_URL=https://api.teamorouter.com
export ANTHROPIC_AUTH_TOKEN="你的 TeamoRouter API Key"
claude
Base URL 后面不要加 /v1。可用的模型 ID 用 GET /v1/models 查。如果启动时某个模型出现 isn't recognized 警告,先运行 claude update,再按上一节用 modelOverrides 做映射。Windows 命令和模型设置见 安装与配置 Claude Code。
常见问题
重试有用吗? 一般没用。思考设置和模型不匹配,每次都会以同样的方式失败,直到你更新 Claude Code、换模型或改设置。
直接把思考关掉行不行?
不是所有模型都行。Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 系列不能关闭思考。能关的模型上,关掉思考的同时 effort 高于 high,又会触发上面的 effort 报错。
MAX_THINKING_TOKENS 现在还有用吗?
在自适应模型上,Claude Code 会忽略它的正数值,思考多少由 effort 档位控制。它在固定预算的模型上才起作用;在允许关闭思考的模型上,MAX_THINKING_TOKENS=0 会关掉思考。
我没用网关,为什么也报「thinking.type.enabled」?
通常是 Claude Code 版本太旧。用 claude --version 对照上面的表;如果更新后版本还是不够,切到 latest 发布通道。