> ## Documentation Index
> Fetch the complete documentation index at: https://docs.laozhang.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Code 使用 AWS Claude 报 400 ValidationException 怎么办？

> 说明 Claude Code 通过老张API使用 AWS Claude 官方通道时，遇到 400 ValidationException、Extra inputs are not permitted 或 cache_control.scope 错误的处理方式。

## 简短答案

如果 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 配置教程](/scenarios/programming/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 仍在请求阶段被拒绝

<Info>
  这类错误通常是请求字段兼容性问题，不一定代表账户余额不足、模型下线或 API Key 失效。不要先反复更换密钥，先按下面步骤关闭实验性 Beta 请求字段。
</Info>

## 临时生效：启动前设置环境变量

<Steps>
  <Step title="退出正在运行的 Claude Code">
    如果 Claude Code 已经启动，先退出当前进程。环境变量需要在启动前设置，启动后再设置通常不会影响已经运行的进程。
  </Step>

  <Step title="在同一个终端执行 export">
    在准备启动 Claude Code 的终端里执行：

    ```bash theme={null}
    export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
    ```
  </Step>

  <Step title="重新启动 Claude Code">
    在同一个终端进入项目目录并启动：

    ```bash theme={null}
    claude
    ```

    如果 400 错误消失，说明问题大概率与 Claude Code 实验性 Beta 请求字段和 AWS Claude / Bedrock 通道兼容有关。
  </Step>
</Steps>

## 推荐做法：写入 settings.json

为了避免每次打开终端都重新设置，建议把环境变量写入 `~/.claude/settings.json`：

```json theme={null}
{
  "env": {
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}
```

如果你已经在 `~/.claude/settings.json` 里配置了老张API地址、密钥和模型，只需要把这一项合并到现有 `env` 中，不要删除原来的配置：

```json theme={null}
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api2.laozhang.ai",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的老张API密钥",
    "ANTHROPIC_MODEL": "claude-sonnet-4-6",
    "CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
  }
}
```

<Warning>
  不要把包含完整 `ANTHROPIC_AUTH_TOKEN`、API Key 或 AccessToken 的 `settings.json` 截图发到公开渠道。需要给客服定位时，请只提供打码后的配置和完整错误信息。
</Warning>

## 为什么这个设置能解决 400

Claude Code 的部分版本可能会向请求里加入实验性 Beta 字段。AWS Claude 官方通道或 Bedrock 相关通道通常会严格校验请求体，遇到不接受的额外字段时，就可能返回：

* `400 ValidationException`
* `Extra inputs are not permitted`
* `cache_control.scope` 相关错误

`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` 的作用是让 Claude Code 不发送这些实验性 Beta 请求字段，使请求结构更接近通道可接受的标准格式。该设置主要解决字段兼容问题，不能替代模型权限、余额、API Key 或模型 ID 的排查。

## 仍然报错时怎么排查

1. 确认已经重新打开终端或重新启动 Claude Code。
2. 确认 `~/.claude/settings.json` 中的 `env` 没有写错层级。
3. 升级 Claude Code 到当前可用版本后重试。
4. 检查模型 ID 是否仍在控制台可用列表中。
5. 确认使用的是老张API密钥，并且令牌分组适合 Claude Code。
6. 查看[调用日志](/faq/call-logs)，确认错误是在请求校验阶段、模型权限阶段，还是余额/额度阶段。

## 需要联系客服时提供什么

如果关闭实验性 Beta 字段后仍然无法解决，请提供以下信息：

* 账号邮箱或用户名
* Claude Code 版本
* 操作系统和终端类型
* 使用的模型 ID
* 是否使用 AWS Claude 官方通道
* 完整错误信息，尤其是 `ValidationException` 后面的字段名
* 老张API控制台[调用日志](/faq/call-logs)中的请求时间、状态和 Request ID
* 打码后的 `~/.claude/settings.json`，不要包含完整 API Key 或 AccessToken

## 相关问题

* 如果还没有配置 Claude Code，请查看[Claude Code 配置教程](/scenarios/programming/claude-code)
* 如果不确定模型是否可用，请查看[可用AI模型与权限说明](/faq/model-availability)
* 如果需要创建或更换 API Key，请查看[API密钥获取与管理](/faq/token-management)
* 如果需要核对错误时间和请求状态，请查看[如何查看我的调用记录？](/faq/call-logs)
