HTTP 400 / Error 400 - cc-switch
Quick fix
先升级 cc-switch 并按供应商要求核对 API 格式与认证字段;仍 400 时按上游返回的具体字段修正请求,Copilot 的修复反馈并不一致。
Symptom
Section titled “Symptom”CC Switch local proxy failed while handling Codex endpoint /responses. Provider: codextest; model: gpt-5.4; upstream_status: HTTP 400; cause: Invalid 'input[6].name': empty string. Expected a string with minimum length 1, but got an empty string instead.这一簇问题都不是同一个 400 文案,但共同点是:cc-switch 本地代理或格式转换层把请求转发给上游后,上游判定请求体不合法并返回 HTTP 400。#4578 是 Codex /responses 被拒绝,原因是 `input[6].name` 为空字符串;#1921 是 NVIDIA 的 Qwen 模型在 `openai_chat` 格式下要求 system role 消息必须位于 messages 数组开头,否则报 “System message must be at the beginning”;#1749 的解释是输入长度 174,551 已超过该模型 128,000 上限,适配层计算出负的 `max_tokens` 并发给上游;#1858 则把 GitHub Copilot 的 Error 400 归为请求格式或认证头不兼容。
修复状态存在矛盾:维护者在 #1858 称 v3.13.0 已关闭 Copilot 的 Error 400 子项 #1777,但有用户在 v3.12.3 及“更新到最新版本”后仍反馈存在;另有用户报告 Copilot 认证字段选 `AUTH_TOKEN` 会要求登录,选 `API_KEY` 会显示 error400。因此本页不能把某一个步骤写成对所有 400 都已确认有效的最终修复。
先完整记录报错中的 `upstream_status` 和 `cause`:空 `input[6].name`、system 消息位置、负 `max_tokens`、Copilot Error 400 是不同变体,不能混用同一个补丁。
升级到最新 cc-switch;若使用 GitHub Copilot,可至少验证 v3.13.0 之后的版本,因为维护者称其修复了 Copilot Auth 与 Error 400 相关子项,但要保留“用户仍反馈未修复”的可能性。
按供应商核对 API 格式与认证字段:NVIDIA OpenAI-compatible 端点需要 `openai_chat`,且 Qwen 3.5 严格要求 system 消息在 messages 开头;Copilot 若 `AUTH_TOKEN` 触发 `/login`、`API_KEY` 触发 400,应把这组对应关系连同版本号一起反馈,而不是盲改。
若错误类似 `max_token must at least 1, not -46551`,先压缩历史与代码上下文,使输入低于模型窗口上限;#1749 中的机制是模型上限减去输入长度后变成负数。
若错误是 Codex `/responses` 的 `Invalid 'input[6].name': empty string`,当前 issue 未给出确认修复;请保存 cc-switch 版本、Provider、model、完整 `cause` 与是否开启代理/整流器,到原 issue 补充复现。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 4 个真实 issue
- copilot GPT 400问题解决了吗?
- 维护者在 #1858 的 v3.13.0 状态更新中称 #1777 已关闭,但后续仍有用户回复“看起来没有”,并有人报告更新到最新版本后问题依然存在,所以不能视为已一致确认修复。
- 3.14 还没有解决吗?
- 线程里没有给出 3.14 的明确结论;只有 v3.13.0 的状态表称多数 Copilot 子项关闭,同时又有用户继续反馈 Error 400,因此需要以你本机完整 `cause` 和版本号为准。
- Copilot 认证字段该选 `AUTH_TOKEN` 还是 `API_KEY`?
- 有用户报告:选 `AUTH_TOKEN` 会要求登录,选 `API_KEY` 会显示 error400;这说明两种字段在不同环境下都可能触发失败,Issues 中没有给出 universally confirmed 的选择。
- 为什么不支持 codex?
- 本簇只能证明 Codex 在 cc-switch 3.16.3 / Windows 下出现过 `/responses` 被上游以 HTTP 400 拒绝的报告;Issues 没有提供 cc-switch 是否完整支持 Codex 的结论。
- NVIDIA Qwen 报 “System message must be at the beginning” 是什么原因?
- #1921 说明 NVIDIA Qwen 3.5 严格要求 system role 消息是 messages 数组第一个元素;在使用 `openai_chat` 格式接 NVIDIA OpenAI-compatible 端点时会出现该 400。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。