Codex 提示“Model metadata for gpt-5.6-sol not found”时,通常不是在宣告 GPT-5.6 Sol 这个模型不存在,而是在说明当前客户端没有找到与该模型对应的本地能力描述,于是只能套用一组回退参数。真正决定请求能否成功的,是紧随其后的服务端响应:如果同时收到“该模型不支持通过 ChatGPT 账号使用”之类的 400 错误,问题重点就是当前登录方式、账号权限或客户端支持范围,而不是提示中的 metadata 本身。
这类故障容易让人困惑,是因为一次启动可能连续打印两种性质完全不同的信息。第一种是客户端警告,第二种是服务端错误。它们出现在相邻位置,却不代表同一件事。
模型元数据是 Codex 用来描述模型能力和运行边界的信息,例如上下文窗口、可用推理强度、自动压缩阈值、工具能力以及其他客户端需要据此决定的行为。客户端按模型标识查找这些信息。如果安装的 Codex 版本、启动时载入的模型目录或自定义模型目录里没有 gpt-5.6-sol 这一项,就会提示未找到元数据,并改用 fallback metadata。
回退并不等于请求已经被拒绝。它只说明 Codex 无法按该模型的专属资料优化本地行为,可能采用通用的上下文限制、压缩策略或能力假设。警告中提到“可能降低性能或导致问题”,说的正是这种不精确配置带来的风险。
随后出现的 HTTP 400 则来自请求所连接的服务。它表示服务端已经看到了模型名,但不接受当前认证身份以这种方式调用。引用案例中,服务端明确指出通过 ChatGPT 账号使用 Codex 时不支持该模型。此时即使手工补齐本地元数据,服务端的访问控制也不会随之改变。
官方模型目录已经列出 GPT-5.6 Sol,模型 ID 是 gpt-5.6-sol,而 gpt-5.6 是指向该档位的别名。因此,在当前时间点,把这条警告解释为“官方没有这个模型”是不准确的。更合理的解释是:模型发布、账号开放、客户端发布和本地目录刷新并不一定在同一时刻完成。
Codex 客户端必须认识模型,账号也必须获得模型访问权,这两个条件缺一不可。新模型刚进入部分产品、部分账号或测试范围时,可能出现服务端已经能识别模型 ID,而某个旧版客户端仍没有对应元数据的情况。反过来,客户端中出现一个模型名,也不证明当前账号已经取得服务端权限。
此外,Codex 的可用模型范围与认证方式有关。通过 ChatGPT 登录时,访问权由该 Codex 客户端支持的模型和当前 ChatGPT 身份决定;通过 API 密钥连接时,则由密钥所属的 API 组织、项目及其模型权限决定。ChatGPT 网页上的模型可见性、Codex 中的模型可见性和 API 项目的可调用性不能互相推导。
因此,同一台电脑上可能发生这样的组合:模型 ID 能被命令行参数接受,本地目录却没有专属元数据;请求被发到服务端后,服务端又因 ChatGPT 登录范围不支持而返回 400。三步分别属于参数解析、本地能力配置和远端授权,不能混为一谈。
不要只截取“metadata not found”这一行。继续查看后面是否还有 HTTP 状态码、错误类型和服务端消息。若只有回退警告但会话仍能正常开始,说明主要风险是客户端采用了不精确的默认配置;若随后出现 400 或 403,请优先处理认证与访问范围。
诊断时至少记录 Codex 版本、实际使用的模型标识、登录方式以及完整错误消息。不要记录或分享 API 密钥、访问令牌和 Cookie。可以使用下列命令确认客户端版本,并在交互会话中查看当前状态和可选模型:
codex --version
codex
# 进入交互会话后执行
/status
/model
/status 用于确认当前会话配置,/model 用于从客户端提供的模型列表中选择模型。若目标模型根本不在列表里,优先更新客户端并使用受支持的选择,不要依靠手写模型名绕过选择器。
本地模型目录通常随客户端版本或启动时获取的信息变化。旧版本不知道新模型,是最常见也最容易排除的原因。按原来的安装渠道更新 Codex,完全退出旧进程,再启动新会话。仅在旧会话中重复提交请求,通常不会让启动时载入的目录自动变化。
更新后再次运行 codex --version,确认终端调用的确实是新版本。如果系统中同时存在独立安装、npm 安装或其他路径下的多个可执行文件,还应检查实际命中的路径:
command -v codex
codex --version
若版本仍未变化,应先解决 PATH 指向旧安装的问题。不要为了消除警告就随意下载第三方模型目录,来源不明的配置可能改变服务地址、认证行为或模型参数。
模型标识必须准确。GPT-5.6 Sol 的明确模型 ID 是 gpt-5.6-sol,官方也提供 gpt-5.6 别名。输入错误、不可见字符、过时脚本中的旧名称,都会导致本地查找失败。应检查命令行参数、环境变量、项目配置和用户级 config.toml,确认没有多个位置互相覆盖。
# 显式启动,仅用于账号和客户端已支持该模型的情况
codex --model gpt-5.6-sol
# config.toml 中的默认模型示例
model = "gpt-5.6-sol"
显式填写模型名只是选择模型,不会授予访问权限。如果服务端明确返回当前 ChatGPT 账号不支持该模型,反复修改 config.toml 或增加重试次数都不能解决授权问题。
先判断当前 Codex 是使用 ChatGPT 身份登录,还是使用 API 密钥连接。两种方式对应不同的权限来源、额度与可用模型集合。通过 ChatGPT 登录时,应以 Codex 客户端中实际显示的模型为准;通过 API 密钥时,应以该密钥所属组织和项目实际获得的模型权限为准。
不要因为模型出现在用量分析页面、网页选择器或其他产品中,就推断当前 Codex 登录态一定可以直接选择它。分析页面里的模型标签可能反映后台处理或统计归类,而不等同于用户可选模型列表。引用讨论中正是先观察到分析页面出现 GPT-5.6 Sol,手工指定模型后却收到 ChatGPT 账号不支持的错误,这说明“观察到名称”和“拥有调用权”是两件事。
完成更新、重新登录和模型选择后,启动一个没有自定义代理、复杂插件或项目覆盖配置的最小会话。先从 /model 中选择可见模型,再提交一个短请求。若可见模型正常、手写 gpt-5.6-sol 仍被拒绝,就可以把问题缩小到该模型的访问范围,而不是网络或整个 Codex 安装。
如果使用自定义模型提供商或自建兼容端点,还要分别确认提供商是否返回模型列表、是否接受该模型 ID,以及本地目录是否为它提供正确能力描述。第三方声称兼容 OpenAI 协议,并不代表它与官方模型的权限、上下文限制和工具能力完全相同。排错时不要把第三方端点的响应当成官方 Codex 行为。
只有元数据警告、没有服务端错误,并且会话能够继续时,可以先更新客户端并观察实际功能。此时不宜自行猜测上下文窗口或压缩阈值;回退值可能让长会话提前压缩,也可能对工具能力判断不够准确。重要任务应使用客户端明确支持的模型,直到专属元数据可用。
出现“model is not supported when using Codex with a ChatGPT account”时,应改用 /model 中当前账号可见的模型,或者等待目标模型对该登录范围开放。若组织管理员管理模型权限,还需要由管理员核对工作区策略。更换本地模型名、清缓存或复制别人的配置都不会扩大账号权限。
若使用 API 密钥时收到模型无权访问或模型不存在的响应,应检查密钥是否属于预期项目、项目是否具备该模型权限,以及请求是否发往预期的官方端点。不要把 ChatGPT 订阅等同于 API 额度,也不要把另一个项目能调用模型当作当前项目也能调用的证据。
如果更新后目标模型已经出现在 /model,但仍同时出现元数据警告,应保留可复现信息并向官方支持渠道报告。一个有效报告应包含脱敏后的完整错误、Codex 版本、操作系统、安装方式、认证类型、模型 ID、复现命令和发生时间。不要只提交一句“模型不能用”,否则很难区分目录、权限和网络问题。
不应通过伪造模型目录来绕过服务端授权。手工增加一条本地 metadata 最多影响客户端如何规划请求,不能让无权限账号获得模型访问权,错误的窗口和能力参数反而可能造成会话截断或工具调用异常。
不应对明确的 400 权限错误实施指数退避重试。退避适合临时限流或网络波动,而权限拒绝是稳定结果。持续重试只会制造噪声,也可能消耗请求配额。只有 429、连接超时或明确的暂时性服务错误,才适合在限制次数的前提下重试。
也不应根据社区对 A/B 测试、后台路由或地区开放的猜测下结论。社区帖子可以证明某个用户看到了什么错误,却不能证明平台内部为何路由、何时全面开放或哪些套餐必然拥有权限。文章能可靠确认的是:当时有人遇到了本地回退警告和 ChatGPT 登录范围的服务端拒绝;当前官方目录则确认 GPT-5.6 Sol 是有效模型。两者结合后,足以说明这不是简单的“模型不存在”。
修复不能只以警告消失为标准。完整的成功条件是:客户端版本符合预期,模型可在当前认证范围的选择器中看到,请求不再收到访问拒绝,/status 显示实际使用的模型与选择一致,并且短会话与工具调用均能正常完成。
如果目标模型仍不可见,但选择官方推荐的可用模型后工作正常,那么 Codex 本身并未损坏,剩下的是模型开放范围问题。若所有模型都失败,再转向检查登录状态、网络、代理、组织策略和服务状态。采用这种分层判断,可以避免把一个明确的权限问题误诊为安装故障,也能避免为了消除本地警告而改动无关配置。
归根结底,“模型元数据不存在”描述的是客户端手头缺少专属说明,“模型不支持当前账号”描述的是服务端拒绝访问。先升级客户端、再核对模型 ID,随后确认认证方式和模型可见性,最后用最小会话验证,通常就能确定该更新、该换用可用模型,还是该等待账号范围开放。
Work Agent、Workflow 与高代码应用应如何按自主性和可控性选型?
Workspace Agent 如何通过团队知识、审批和跨工具协作形成差异化?
从手写代码到 Vibe Coding:程序员真正不能丢掉的能力
Code Agent 应从集成、编排、治理、记忆和部署等哪些维度比较?
AI 编程时代,为什么还要给自己留一块“手写代码”的自留地?
Code Agent 编排工具分别适合项目管理、桌面协作还是云端执行?