CC-006:请求返回 400,含实验性 Beta 参数
问题现象
通过第三方兼容网关执行对话请求时返回 400,日志中可见类似:
API Error: 400 {"error":{"type":"invalid_request_error","message":"...invalid beta flag..."}}错误与请求内容无关,新建对话后依然复现。
根因分析
Claude Code 构造请求
→ 自动附加实验性 Beta 功能请求头(anthropic-beta)
→ 部分网关或上游端点不接受该请求头(具体路由需由网关方按请求日志确认)
→ 返回 400 Invalid RequestClaude Code 会发送自身需要的 Anthropic Beta 请求头或相关 schema。官方提供 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1,用于兼容拒绝这些字段的代理网关;它不是所有 400 错误的通用修复。
修复步骤
第一步:先用环境变量确认问题
macOS / Linux
export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1
claudeWindows PowerShell
$env:CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS = "1"
claude如果加上该变量后可正常请求,说明错误很可能与网关的 Beta 兼容性有关;仍应由网关按请求日志确认。
第二步:写入全局配置文件,避免每次手动设置
Claude Code 全局配置文件路径:
| 平台 | 路径 |
|---|---|
| macOS / Linux | ~/.claude/settings.json |
| Windows | %USERPROFILE%\.claude\settings.json |
如果文件中已有 env 字段,在原有内容下追加这一项,不要覆盖已有配置:
{
"env": {
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
}
}如果你本来就是通过 settings.json 配置 Base URL 和 API Key,可以直接合并成:
{
"env": {
"ANTHROPIC_BASE_URL": "https://foropencode.com",
"ANTHROPIC_API_KEY": "sk-xxx",
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1"
}
}第三步:保存配置后重新打开终端并启动 Claude Code
保存
settings.json后,建议完全关闭当前终端窗口再重新打开,避免旧会话继续使用未更新的环境。
claude第四步:确认功能影响
该变量会移除 Anthropic 专用 Beta 请求头和部分 Beta tool schema,并禁用 MCP tool search、改为预先加载全部 MCP 工具。确认兼容性后再决定是否长期保留,不要把它预写入所有用户配置。
预防措施
| 做法 | 避免的问题 |
|---|---|
| 仅在网关明确拒绝 Beta 字段时启用该变量 | 避免无故关闭 Claude Code 功能 |
修改 settings.json 后彻底关闭终端再重开 | 旧会话沿用旧配置,误以为修复无效 |
foropencode.com 是第三方网关,不是 Anthropic。网关若要求此兼容选项,应在自己的正式说明中披露支持范围和功能影响。
资料来源:Claude Code 环境变量参考 · LLM Gateway(2026-07-26 核对)