Invalid type for 'messages': expected an array Codex
Quick fix
升级 cc-switch 至最新版修复转换 Bug,或降级 Codex CLI 至 0.80.0 并改用 wire_api="chat" 绕过。
Symptom
Section titled “Symptom”Invalid type for 'messages': expected an array of objects, but got null instead.当 Codex CLI 版本 >= 0.99 时,官方移除了 wire_api = "chat" 选项,强制使用 Responses API。当 cc-switch 尝试将 Codex 的 Responses API 请求(包含 input 字段)转发给仅支持 Chat Completions 的上游(如 MiniMax、JD Cloud)时,由于转换逻辑缺陷,未能将 input 正确映射为 messages 数组,导致 messages 字段为 null。上游 API 校验失败并返回 HTTP 400 错误。
升级 cc-switch 至最新版本,官方已修复 Responses API 到 Chat Completions 的转换逻辑。
若暂时无法升级 cc-switch,可降级 Codex CLI 至 0.80.0(最后一个支持 chat 模式的版本),并修改 Codex 配置文件:
~/.codex/config.toml wire_api = "chat"
Affected Versions
Section titled “Affected Versions”ToolCodex
Version>= 0.99.0
PlatformsWindowsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 4 个真实 issue
- #2806Codex responses → chat translator forwards `messages: null` to upstream (0.99+ wire_api=responses required)
- #2832[Bug] MiniMax provider: Responses → Chat Completions 转换后 messages 字段为 null
- #2833[Bug] MiniMax provider: Responses → Chat Completions 转换后 messages 字段为 null
- #2834[Bug] MiniMax provider: Responses → Chat Completions 转换后 messages 字段为 null
- 为什么用 curl 直接请求上游 API 不会报错?
- 上游 API 本身是健康的。报错是因为 cc-switch 作为中间件,在协议转换时未能正确生成 messages 数组,上游实际收到的是 null。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。