资讯动态

【Bug已解决】codex model not available / Invalid model specified — CodeX CLI 模型不可用解决方案:把 auth.json 改到 Tao

发布时间:2026/10/2 14:52:53 来源:尧图企业网站定制
1. CodeX CLI 报 model not available 的真实场景与定位思路CodeX CLI 里出现model not available或Invalid model specified本质是「你请求的模型标识」和「当前鉴权通道实际能调用的模型清单」对不上。它不是一个网络错误也不是 CLI 装坏了而是配置层的信息错位。我见过最多的三类触发方式命令行里--model写了一个通道根本不提供的名字auth.json里模型字段和 Base URL 指向的服务不匹配环境变量里残留了旧的模型名把配置文件里的正确值覆盖掉了。先明确 CodeX CLI 是什么、能做什么、适合谁。它是 OpenAI 官方开源的终端编码代理能在你的项目目录里读写文件、跑命令、按自然语言指令改代码。适合习惯命令行、想把「让模型改代码」这件事脚本化的人。它本身不绑定某一家模型服务模型从哪来、叫什么名字完全由你的auth.json和 Base URL 决定。所以当报错说模型不可用时第一反应不该是「模型下线了」而是「我这条通道的模型清单里有没有这个名字」。Invalid model specified和model not available在 CodeX CLI 里语义略有差别。前者通常是模型名压根不在通道的可用列表里CLI 在本地或首次请求时就拒绝了后者更多是请求发出去了服务端返回「这个模型对你不可用」常见于鉴权通道和模型归属不匹配。两者排查路径高度重合都从auth.json的模型字段和 Base URL 入手。我试过的一个典型坑本地~/.codex/auth.json里model写的是某个通用名但 Base URL 指向的通道只认它自己的模型标识于是每次启动都报Invalid model specified而codex --list-models又因为通道没实现这个接口直接报错让人误以为是 CLI 版本问题。实际把模型名换成通道文档里给出的标识就好了。这篇按「先定位、再改配置、再验证」的顺序走。核心动作有三个确认auth.json的字段结构、把 Base URL 和 Key 指向同一个通道、用最小请求验证模型真的能返回内容。下面每一步都给可复制的片段和预期返回你照着改就能收敛问题。需要先说明一点模型标识是大小写敏感且区分版本的GPT-4o和gpt-4o在多数通道里是两个结果。排查时先把大小写和空格问题排掉能省掉一半时间。2. TaoToken 前置准备Base URL、Key 与模型标识三件套在动auth.json之前先把「三件套」凑齐Base URL、API Key、Model ID。这三者必须来自同一个通道混用是model not available的头号原因。这里用 TaoToken 作为接入通道来演示它的 API 入口是https://taotoken.net/api官网是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。第一步拿到 API Key。打开控制台页面https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite登录后在 API Keys 区域创建一个新 Key。创建时给它起个能认出来的名字比如codex-cli-local方便以后区分是哪个工具在用。复制出来的 Key 一般以固定前缀开头只显示一次先粘到临时文本里。第二步确认 Base URL。CodeX CLI 走的是 OpenAI 兼容协议所以 Base URL 填https://taotoken.net/api注意不要带末尾斜杠也不要带/v1之外的路径不同版本对/v1的处理不一样下面配置片段里会写清楚。如果你在别的工具里见过https://taotoken.net/api/v1那是给显式声明了/v1的客户端用的CodeX CLI 的auth.json里按下面模板填即可。第三步确认 Model ID。这是最容易出错的一环。模型标识不是「你记得的名字」而是通道文档里列出的名字。打开接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite找到模型列表挑一个你要用的原样复制。常见的有通用对话模型和偏推理的模型名字里可能带版本号或日期后缀别自己简写。把这三样凑齐后先别急着写进auth.json用一条 curl 验证 Key 和 Base URL 是通的。这一步能把「Key 无效」和「模型名错」两类问题分开curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json预期返回是一个 JSONdata数组里每个元素有id字段那就是这个 Key 能调用的模型标识。如果这里返回 401说明 Key 或请求头有问题先解决鉴权如果返回 200 但data为空说明这个 Key 没有绑定任何模型权限回控制台检查。只有这一步通了再去改auth.json否则你会把鉴权问题和模型名问题搅在一起。注意不要把 Key 直接写进会提交到 Git 的文件里。auth.json放在用户目录下~/.codex/不要放进项目仓库。如果你打算长期在 CodeX CLI 里跑编码任务可以考虑 Coding Plan 这类按周期计费的方案入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite它更适合高频调用场景比按量付费更可控。但无论用哪种三件套的来源必须一致。3. 可复制配置auth.json 字段模板与模型标识对照CodeX CLI 的鉴权信息默认读~/.codex/auth.json。这个文件的结构在不同版本里略有差异但核心字段稳定OPENAI_API_KEY、OPENAI_BASE_URL以及模型相关字段。下面给一份可直接复制的模板路径就是~/.codex/auth.json{ OPENAI_API_KEY: sk-你的TaoToken密钥, OPENAI_BASE_URL: https://taotoken.net/api, model: 你的模型标识, provider: openai }几个字段的作用要讲清楚。OPENAI_API_KEY填控制台创建的那串 KeyOPENAI_BASE_URL填https://taotoken.net/api这是请求发往的地址model填文档里原样复制的模型标识这是解决Invalid model specified的关键provider保持openai因为走的是 OpenAI 兼容协议。如果你更习惯用 TOML 风格的配置部分版本支持~/.codex/config.toml可以写成[model_providers.taotoken] name taotoken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY [profiles.default] model 你的模型标识 model_provider taotoken这种写法把 Key 从配置文件里挪到环境变量TAOTOKEN_API_KEY更安全。设置环境变量export TAOTOKEN_API_KEYsk-你的TaoToken密钥想持久化就写进~/.zshrc或~/.bashrc然后source一下。注意如果你同时设了OPENAI_MODEL环境变量它会覆盖配置文件里的model这是很多人「改了配置却不生效」的原因排查时先env | grep -i model看一眼。模型标识对照这块给一张常见映射表帮你判断手里的名字是不是写错了你可能写的名字常见问题处理方式GPT-4o大小写错误改全小写gpt-4ogpt4o缺连字符补成gpt-4ogpt-5通道未提供换文档里实际存在的标识o1-preview权限或版本不符换当前 Key 可用的推理模型gpt-3.5-turbo旧模型已弃用换更新的通用模型这张表不是让你照抄而是给你一个判断方向报错时先对照「名字是否原样来自文档」。凡是自己凭记忆敲的八成有问题。改完auth.json后建议顺手检查文件权限避免被其他用户读到chmod 600 ~/.codex/auth.json到这里配置就位。下一步不是直接跑大任务而是用最小请求验证模型真的可用。4. 验证请求最小命令与预期返回配置改完先用一条最小请求确认模型能返回内容别一上来就跑复杂编码任务。CodeX CLI 的调用方式codex --model 你的模型标识 回复 ok 两个字母即可预期返回是一段模型输出内容里包含ok。如果这一步成功说明 Base URL、Key、Model ID 三件套对齐了model not available和Invalid model specified都不会再出现。如果codex --list-models在你的版本里可用先跑它codex --list-models预期返回一个模型列表。注意这个命令依赖通道实现/models接口如果通道没实现它会报错这不代表你的配置错了直接跳过用上面的最小请求验证即可。再给一条纯 curl 的验证方式绕开 CLI直接确认通道侧模型可用curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: 你的模型标识, messages: [{role: user, content: 回复 ok}], max_tokens: 16 }预期返回 JSON 里有choices数组choices[0].message.content是模型回复。如果这里报model not available说明模型标识或 Key 权限有问题如果报 401说明 Key 不对如果报连接错误说明 Base URL 写错了。三种错误对应三个字段逐个核对。验证通过后把模型设为默认省得每次敲--modelcodex 帮我看看当前目录的 README 有没有错别字不带--model时CLI 读auth.json里的model字段。如果这条也能正常返回说明默认配置生效了。提示验证阶段用max_tokens设小一点比如 16能快速拿到结果又不浪费额度。确认通了再放开。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth报错信息是最好的线索但很多人看到英文就慌。下面按真实报错逐条对照每条给原因和动作。401 Unauthorized。这是鉴权失败和模型名无关。检查auth.json里的OPENAI_API_KEY是不是完整、有没有多余空格、是不是过期或被删。用第 2 节的 curl 单独测 Key能快速定位。如果 Key 是对的但还 401检查请求头是不是被别的工具改写了比如某些 shell 别名。local proxy failed或connection refused。这是 Base URL 或本地网络层的问题。确认OPENAI_BASE_URL是https://taotoken.net/api没有多余路径、没有末尾斜杠。如果你本地设了 HTTP 代理环境变量HTTP_PROXY/HTTPS_PROXY先unset掉再试代理配置和通道地址冲突时会报这个。reading choices或cannot read property choices of undefined。这通常意味着返回体不是预期的 JSON 结构常见于 Base URL 少了/v1或多了/v1导致请求打到了错误端点返回了 HTML 或错误页。对照第 3 节模板OPENAI_BASE_URL填https://taotoken.net/api让客户端自己拼/v1/chat/completions。如果还是不行用第 4 节的 curl 直接打/v1/chat/completions确认端点正确。OAuth相关报错比如提示需要登录或 token 刷新失败。CodeX CLI 某些版本会尝试 OAuth 流程但走自定义 Base URL 时应该用 API Key 模式。检查auth.json里有没有残留的 OAuth token 字段有就删掉只保留OPENAI_API_KEY和OPENAI_BASE_URL。如果 CLI 启动时强制走 OAuth用--api-key参数显式传入或检查版本是否过旧。Invalid model specified反复出现但模型名看着没错。先env | grep -i model看有没有OPENAI_MODEL或CODEX_MODEL环境变量在覆盖。再确认auth.json里没有重复的model键JSON 里重复键后者覆盖前者容易看漏。最后确认模型标识是从文档原样复制的没有自己加空格或改大小写。model not available但 curl 测/models能看到这个模型。这多半是 Key 的权限范围问题列表接口返回的是通道支持的全部模型但你的 Key 可能只绑定了其中一部分。回控制台检查 Key 的权限设置或换一个权限更宽的 Key 测试。排查顺序建议固定成先 curl 测 Key排除 401→ 再 curl 测模型排除模型名→ 再跑 CLI 最小请求排除配置读取→ 最后跑实际任务。这个顺序能把问题范围一步步缩小不会来回改配置。6. 把模型对话与接入文档用起来配置通了之后日常有两类操作值得固定下来。一类是快速验证某个模型当前是否可用另一类是查字段和参数的确切写法。验证模型可用性最省事的是模型对话入口https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite在网页里直接选模型发一句话能立刻知道这个模型当前通不通不用改本地配置。当你在 CodeX CLI 里怀疑是模型侧问题时先去这里确认一下能快速区分「模型不可用」和「本地配置错」。查字段和参数用接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。auth.json的字段名、Base URL 的写法、模型标识的准确拼写都以文档为准。文档更新比博客快遇到对不上的地方以文档为准。Key 的管理在 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite创建、删除、查看权限都在这里。建议给不同工具建不同的 Key出问题时能快速定位是哪个工具在用。如果你在 Claude Code 或 Anthropic 协议的工具里也遇到类似的模型不可用问题接入方式在https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite思路和这篇一致Base URL、Key、Model ID 三件套对齐模型名原样来自文档。最后留一个我自己的习惯每次改完auth.json先跑一遍第 4 节的最小请求通过了再干正事。这一步花十秒能省掉后面半小时的排查。模型不可用这类问题九成不是模型真的没了而是名字或通道对不上把三件套对齐报错自然消失。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑