中转站调用Claude Code时遇到的 “defer_loading: Extra inputs are not permitted” 错误完全解决指南

大家好,我最近在使用 Claude Code(claude -p)通过**转发站(LiteLLM 等代理)**调用 AWS Bedrock 上的 Anthropic 模型时,频繁遇到以下错误:

bash 复制代码
⎿ API Error: 400 {"error":{"type":"<nil>","message":"InvokeModelWithResponseStream: operation error Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: 8752a71a-e464-4591-8eeb-bf3aa405e8c5, ValidationException: ***.***.custom.defer_loading: Extra inputs are not permitted (request id: ...)"}

这个错误在 2025 年底到 2026 年初非常常见,尤其在使用 Claude Code 较新版本(2.1.x 系列)结合 Bedrock 时。

错误根本原因

defer_loading 是 Anthropic 推出的实验性(beta)功能,主要用于 Tool Search / 动态工具加载 。它的作用是允许把工具标记为 defer_loading: true,让 Claude 模型按需加载工具,而不是一次性把所有工具定义塞进请求中,从而节省 token 和提升效率。

然而,AWS Bedrock 当前对这个字段的支持并不完善。当请求体(尤其是 tools 定义)中包含 tools.*.custom.defer_loading 或类似自定义字段时,Bedrock 会直接抛出 ValidationException,认为这是"不允许的额外输入"(Extra inputs are not permitted)。

这个不兼容问题主要出现在:

  • 通过 LiteLLM、其他代理或自定义转发站调用 Bedrock 时
  • Claude Code 自动开启了实验性功能(如 Tool Search、Agent Teams、大量 MCP tools)
  • Claude Code 版本较新(2.1.22 及以上),默认或自动添加了 beta 字段

常见触发场景

  • 使用 claude -p 或 Claude Code 的 headless 模式
  • 启用了大量工具(tools)或 Tool Search 功能
  • 环境变量中开启了 ENABLE_TOOL_SEARCH 或类似实验特性
  • 通过 LiteLLM proxy 转发到 bedrock/us.anthropic.claude-xxx 模型

推荐修复方案(按优先级排序)

1. 最简单有效的方法:关闭实验性 Beta 功能(强烈推荐)

在运行 Claude Code 时设置环境变量:

bash 复制代码
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1

或者在 Claude Code 的配置文件(通常是 settings.json)中添加:

json 复制代码
{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}

这个变量会自动剥离 Anthropic 特定的 beta 请求头和工具 schema 中的实验字段(如 defer_loading),同时保留标准字段(name、description、input_schema 等)。设置后大多数情况下错误立即消失。

2. 如果使用 LiteLLM 作为转发站

在 LiteLLM 的模型配置中为 Bedrock 模型添加以下参数:

yaml 复制代码
litellm_params:
  model: bedrock/us.anthropic.claude-sonnet-xxx
  drop_params: true
  # 或者更精确地指定要丢弃的字段
  additional_drop_params: ["defer_loading", "context_management"]

drop_params: true 会让 LiteLLM 自动过滤不支持的额外参数,是通过代理时最方便的解决方案。

3. 其他实用调整
  • 临时关闭 Tool Search:设置 ENABLE_TOOL_SEARCH=falseENABLE_TOOL_SEARCH=auto:30(提高阈值,减少 defer_loading 触发)
  • 降低工具数量:如果工具列表过大,先精简工具定义
  • 更新相关工具到最新稳定版本,但注意 Claude Code 的新版本有时会默认开启更多实验特性
4. 长期建议
  • 如果对实验功能(如动态工具加载)有强需求,优先考虑直接使用 Anthropic 原生 API(非 Bedrock),兼容性更好。
  • 关注 Anthropic 和 AWS Bedrock 的更新,未来这个字段应该会得到更好的支持。
  • 在生产环境中,建议在代理层统一做好参数清洗(drop extra params),避免类似兼容性问题反复出现。

总结

这个错误本质上是 Anthropic 的实验特性AWS Bedrock 当前 API 限制 之间的兼容性问题,并非你的代码或配置有根本性错误。通过设置 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 或在 LiteLLM 中启用 drop_params,大多数用户都能快速解决。

如果你也遇到了类似问题,欢迎在评论区分享你的具体环境(Claude Code 版本、是否用 LiteLLM、用了多少 tools 等),我可以帮你进一步细化解决方案。

希望这篇文章能帮到正在被这个 400 错误困扰的同学!如果觉得有用,欢迎转发给同样在使用 Claude + Bedrock 的朋友。


发布日期 :2026 年 3 月
作者:Hong(基于实际踩坑经验整理)

有任何疑问或更新,欢迎留言讨论~

相关推荐
landuochong2008 天前
claude增加自动化日历提醒功能,并同步到iphone日历
人工智能·iphone·claudecode
sanshanjianke9 天前
claudecode/opencode 数学插件工具的调用
数学建模·mcp·claudecode·vibe
16Miku9 天前
基于MetaBot将Claude Code接入飞书实战-Win版
ai·agent·claudecode·feishu·metabot
java叶新东老师9 天前
claudeCode 使用总结
claudecode
landuochong20010 天前
用 Telegram 远程控制你本地的 Claude Code
人工智能·架构·claudecode
阿杜杜不是阿木木10 天前
从0到1构建像Claude Code那样的Agent(三):行动前先计划
java·服务器·windows·agent·ai编程·claudecode
landuochong20012 天前
SpecKit学习
人工智能·架构·claudecode
程序员小崔日记13 天前
Claude Code vs Codex:谁才是最强 AI 编程工具?我的真实体验分享
ai·codex·claudecode
KevinGuo45713 天前
【CC使用指南】Cloud Code 全流程实战指南:从环境搭建到高级功能扩展
claudecode