简短答案
如果 Claude Code 使用 AWS Claude 官方通道时出现400 ValidationException、Extra inputs are not permitted 或 cache_control.scope 相关错误,先在启动 Claude Code 前设置 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1。这个设置会关闭 Claude Code 实验性 Beta 请求字段,避免部分额外字段被 AWS Claude / Bedrock 通道判定为非法输入。临时排查可以用 export,长期使用建议写入 ~/.claude/settings.json。
适用场景
- 已经按Claude Code 配置教程接入老张API
- Claude Code 使用 AWS Claude 官方通道或 Bedrock 相关通道
- 终端、日志或报错里出现
400 ValidationException - 错误信息包含
Extra inputs are not permitted - 错误信息指向
cache_control.scope、cache_control、scope或类似额外请求字段 - API Key、余额和模型 ID 看起来正常,但 Claude Code 仍在请求阶段被拒绝
这类错误通常是请求字段兼容性问题,不一定代表账户余额不足、模型下线或 API Key 失效。不要先反复更换密钥,先按下面步骤关闭实验性 Beta 请求字段。
临时生效:启动前设置环境变量
推荐做法:写入 settings.json
为了避免每次打开终端都重新设置,建议把环境变量写入~/.claude/settings.json:
~/.claude/settings.json 里配置了老张API地址、密钥和模型,只需要把这一项合并到现有 env 中,不要删除原来的配置:
为什么这个设置能解决 400
Claude Code 的部分版本可能会向请求里加入实验性 Beta 字段。AWS Claude 官方通道或 Bedrock 相关通道通常会严格校验请求体,遇到不接受的额外字段时,就可能返回:400 ValidationExceptionExtra inputs are not permittedcache_control.scope相关错误
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 的作用是让 Claude Code 不发送这些实验性 Beta 请求字段,使请求结构更接近通道可接受的标准格式。该设置主要解决字段兼容问题,不能替代模型权限、余额、API Key 或模型 ID 的排查。
仍然报错时怎么排查
- 确认已经重新打开终端或重新启动 Claude Code。
- 确认
~/.claude/settings.json中的env没有写错层级。 - 升级 Claude Code 到当前可用版本后重试。
- 检查模型 ID 是否仍在控制台可用列表中。
- 确认使用的是老张API密钥,并且令牌分组适合 Claude Code。
- 查看调用日志,确认错误是在请求校验阶段、模型权限阶段,还是余额/额度阶段。
需要联系客服时提供什么
如果关闭实验性 Beta 字段后仍然无法解决,请提供以下信息:- 账号邮箱或用户名
- Claude Code 版本
- 操作系统和终端类型
- 使用的模型 ID
- 是否使用 AWS Claude 官方通道
- 完整错误信息,尤其是
ValidationException后面的字段名 - 老张API控制台调用日志中的请求时间、状态和 Request ID
- 打码后的
~/.claude/settings.json,不要包含完整 API Key 或 AccessToken
相关问题
- 如果还没有配置 Claude Code,请查看Claude Code 配置教程
- 如果不确定模型是否可用,请查看可用AI模型与权限说明
- 如果需要创建或更换 API Key,请查看API密钥获取与管理
- 如果需要核对错误时间和请求状态,请查看如何查看我的调用记录?