1. freemodel 免费额度与 gpt-5.5 token 传闻,实际卡在哪
freemodel 免费送 5 美元 gpt-5.5 token 这件事,最近在几个技术群里传得挺快。核心卖点很直接:注册就送额度,配合 Codex CLI 就能用上 gpt-5.5 的 xhigh 推理档位。听起来像是白捡的便宜,但真正动手的人会发现,问题不在“有没有额度”,而在“认证通道能不能跑通”。
我自己也跟了一遍流程。注册、拿 Key、装 Codex CLI、写 auth.json、改 config.toml,每一步都照着教程走了。结果卡在最关键的一步:Codex 启动后读不到 auth.json 里的 Key,反复提示选择登录方式,手动粘贴 API Key 进去之后,模型请求要么超时,要么直接报模型不支持。等了 300 多秒没有任何输出,这种体验基本等于不可用。
这里要先把概念理清楚。Codex CLI 是 OpenAI 推出的命令行编程工具,和 Claude Code 定位类似,支持桌面端、Web 端和 VS Code 插件。它读取认证信息的方式有两套:一套是~/.codex/auth.json,一套是环境变量OPENAI_API_KEY和OPENAI_BASE_URL。freemodel 的教程给的是 auth.json 方案,但不同版本的 Codex 对字段名和读取优先级处理不一致,导致配置写了等于没写。
更麻烦的是,freemodel 的 base_url 指向的是它自己的网关,模型名写的是gpt-5.5,wire_api 用的是responses。这套组合在 Codex 的某些版本里并不被识别,/model切换也切不过去。你以为是额度问题,其实是通道和协议对不上。
所以这篇不是来劝你别用免费额度的,而是把问题拆开:auth.json 到底该怎么写、base_url 和 model 怎么配、验证请求怎么发、报错怎么读。把这些搞明白之后,你会发现真正稳定的做法不是死磕某个免费网关,而是把认证文件指向一个统一 Key/API 通道,比如 TaoToken,让 Codex 的认证层和模型层解耦。这样换模型、换额度来源都不用动 Codex 本体。
适合谁看:已经在用 Codex CLI、被 auth.json 配置坑过、想搞清楚认证文件字段含义、或者想找一个能长期跑 coding agent 的通道的人。下面按步骤来,每一步都给可复制的配置和验证动作。
2. TaoToken 前置准备:Key、Base URL 与 Codex 认证层的关系
在改 auth.json 之前,先把 TaoToken 这边的三件套准备好。所谓三件套,就是 Base URL、API Key、Model ID。这三个东西在 Codex 的配置里分别对应不同的字段,缺一个都跑不起来。
Base URL 用https://taotoken.net/api,注意这里不加任何查询参数。API Key 在 TaoToken 控制台的 API Keys 页面生成,生成后只显示一次,复制下来存好。Model ID 根据你要用的模型填,比如gpt-5.5或者你实际要调的模型名。这三个信息在后面的 auth.json 和 config.toml 里都会用到。
为什么要把 Codex 的认证指向 TaoToken,而不是继续用 freemodel 的网关?核心原因是 Codex 的认证读取逻辑对 base_url 和 wire_api 的组合有要求。freemodel 给的wire_api = "responses"在部分 Codex 版本里不被支持,而 TaoToken 的 API 通道兼容 OpenAI 标准的 chat/completions 和 responses 两种协议,Codex 读起来更顺。另外,TaoToken 的 Key 是统一管理的,你换模型不用重新生成 Key,也不用改 auth.json 的结构,只改 model 字段就行。
这里要提醒一点:Codex 读取认证信息的优先级是环境变量高于 auth.json。如果你之前 export 过OPENAI_API_KEY和OPENAI_BASE_URL,Codex 会优先用环境变量,auth.json 里的配置会被忽略。所以改 auth.json 之前,先把环境变量清掉,或者确认当前 shell 里没有残留。可以用env | grep OPENAI检查一下,有输出就先 unset。
另外,Codex 的配置目录在~/.codex,里面通常有auth.json和config.toml两个文件。有些版本还会读config.json,如果同时存在 config.json 和 config.toml,可能会冲突。建议只保留 config.toml,把旧的 config.json 删掉或改名。这一步不做,后面改了 auth.json 也可能不生效。
TaoToken 的接入文档里有针对 Codex 的配置示例,路径和字段名可以直接对照。如果你用的是 Claude Code 或者 Cline MCP,配置方式类似,都是把 Base URL 和 Key 填到对应的配置文件里。Codex 的特殊之处在于它多了一个 auth.json 专门管认证,config.toml 管模型和 provider。把这两层分开理解,后面排障会快很多。
准备好这三件套之后,下一步就是写 auth.json 和 config.toml。我会把完整的 JSON 和 TOML 片段贴出来,你直接复制改 Key 就行。
3. 可复制配置:auth.json 字段模板与 config.toml 完整片段
先处理 auth.json。这个文件的路径是~/.codex/auth.json,如果目录下没有就新建一个。内容是一个 JSON 对象,核心字段是OPENAI_API_KEY。有些 Codex 版本还认OPENAI_BASE_URL,但更稳妥的做法是把 base_url 放在 config.toml 的 provider 段里,auth.json 只放 Key。
可复制的 auth.json 模板如下:
{ "OPENAI_API_KEY": "sk-你的TaoTokenKey" }把sk-你的TaoTokenKey替换成你在 TaoToken 控制台生成的实际 Key。注意 JSON 里不能有注释,Key 两边用双引号,末尾不要多逗号。保存之后可以用cat ~/.codex/auth.json确认一下内容,再用python -m json.tool ~/.codex/auth.json校验 JSON 格式是否合法。格式错了 Codex 会直接忽略这个文件,然后回退到交互式登录。
接下来是 config.toml。路径同样是~/.codex/config.toml。如果之前有 config.json,先删掉或改名,避免冲突。config.toml 的内容如下:
model_provider = "taotoken" model = "gpt-5.5" model_reasoning_effort = "xhigh" disable_response_storage = true preferred_auth_method = "apikey" [model_providers.taotoken] name = "taotoken" base_url = "https://taotoken.net/api" wire_api = "responses"这里几个字段解释一下。model_provider指向下面[model_providers.taotoken]这个段,名字要一致。model填你要用的模型 ID,比如gpt-5.5。model_reasoning_effort是推理档位,xhigh 是最高档,响应会慢一些但推理更充分。disable_response_storage设为 true 表示不存储响应,适合对隐私有要求的场景。preferred_auth_method设为apikey,告诉 Codex 优先用 auth.json 里的 Key,而不是走 ChatGPT 账号登录。
base_url填https://taotoken.net/api,不要加末尾斜杠,也不要加 UTM 参数。wire_api填responses,这是 Codex 较新版本支持的协议。如果你的 Codex 版本较老,不认responses,可以改成chat,但gpt-5.5这类模型建议用responses。
配置写完之后,建议把环境变量也清一下,避免覆盖:
unset OPENAI_API_KEY unset OPENAI_BASE_URL如果你希望环境变量也指向 TaoToken,可以这样 export,但要注意这会覆盖 auth.json:
export OPENAI_BASE_URL="https://taotoken.net/api" export OPENAI_API_KEY="sk-你的TaoTokenKey"两种方式选一种就行,不要同时用。我实测下来,auth.json + config.toml 的组合更稳定,因为 Codex 启动时会先读 config.toml 确定 provider,再从 auth.json 取 Key,路径清晰。
配置完成后,进入一个随便什么目录,输入codex启动。如果配置生效,Codex 不会再弹登录方式选择,而是直接进入交互界面。如果还是弹登录,说明 auth.json 没被读到,回到第 5 节看排错。
4. 验证请求:一次 curl 与 Codex 内提问确认通道可用
配置写完不算完,得验证通道真的通。分两步:先用 curl 直接打 TaoToken 的 API,确认 Key 和 Base URL 没问题;再在 Codex 里问一个问题,确认 Codex 的认证层和模型层都跑通。
先做 curl 验证。TaoToken 的 API 地址是https://taotoken.net/api,兼容 OpenAI 的 chat/completions 接口。可以用下面这条命令发一个最小请求:
curl -s https://taotoken.net/api/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -d '{ "model": "gpt-5.5", "messages": [{"role": "user", "content": "回复一个字:好"}], "max_tokens": 10 }'如果返回的 JSON 里有choices字段,并且 content 是“好”,说明 Key 和 Base URL 都正确。如果返回 401,说明 Key 错了或者没带上。如果返回 404,说明路径不对,检查是不是漏了/api或者多了斜杠。如果返回 model not found,说明模型 ID 写错了,换成 TaoToken 文档里列出的可用模型名。
curl 通了之后,再进 Codex 验证。启动codex,在交互界面里输入一个简单问题,比如“用 Python 写一个 hello world”。如果 Codex 能正常返回代码,说明 auth.json 和 config.toml 都生效了。如果 Codex 卡住不动,或者报reading choices相关的错误,说明 wire_api 或 base_url 配置有问题,回到第 3 节检查。
这里有个细节:Codex 在启动时会打印当前使用的 provider 和 model。如果打印出来的是taotoken和gpt-5.5,说明 config.toml 读对了。如果打印的是默认的openai,说明 config.toml 没被读到,检查文件路径和文件名是否正确。
另外,Codex 的model_reasoning_effort = "xhigh"会让响应变慢,尤其是复杂问题。如果你只是想验证通道,可以先把这行改成medium或删掉,等确认通了再调回来。我实测 xhigh 档位下,简单问题也要十几秒,这是正常的,不是卡死。
验证通过之后,你就可以在 Codex 里正常跑 coding 任务了。换模型只需要改 config.toml 里的model字段,auth.json 不用动。这也是把认证指向 TaoToken 的好处:Key 统一,模型灵活。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
配置过程中最容易遇到的几个报错,我按实际出现的频率列一下,每个都给排查方向。
401 Unauthorized。这个最直接,Key 不对或者没带上。先检查 auth.json 里的OPENAI_API_KEY是不是完整的,有没有多余空格。再用第 4 节的 curl 命令单独测 Key,如果 curl 也 401,说明 Key 本身有问题,去 TaoToken 控制台重新生成一个。如果 curl 通了但 Codex 还 401,说明 Codex 没读到 auth.json,检查环境变量是不是有残留的旧 Key 覆盖了。
local proxy failed。这个报错通常出现在 Codex 尝试走本地代理但连不上网关的时候。检查base_url是不是写成了https://taotoken.net/api,有没有多写端口或者路径。另外确认本机网络能正常访问 TaoToken 的 API,可以用curl -I https://taotoken.net/api看返回头。如果返回 200 或 401 都说明网络通,返回超时就是网络问题。
reading choices 相关错误。这个多半是wire_api和模型协议不匹配。Codex 用responses协议发请求,但网关返回的是 chat/completions 格式,解析就会失败。解决办法是把 config.toml 里的wire_api改成chat试试,或者确认 TaoToken 的 responses 端点是否可用。TaoToken 的接入文档里有说明哪些模型走哪个协议,对照一下。
OAuth 登录循环。Codex 启动后反复弹登录方式选择,选了 API Key 还是弹。这说明 auth.json 没被识别,Codex 回退到了 OAuth 流程。检查 auth.json 的 JSON 格式是否合法,字段名是不是OPENAI_API_KEY全大写。有些版本要求字段名完全一致,写成openai_api_key就不认。另外确认preferred_auth_method = "apikey"这行在 config.toml 里,没有这行 Codex 可能优先走 OAuth。
还有一个坑:Codex 的配置目录权限。如果~/.codex目录权限不对,Codex 读不到 auth.json 也不会报错,直接静默回退。可以用ls -la ~/.codex看一下文件权限,确保当前用户可读。auth.json 的权限建议设成 600,避免被其他进程读到。
如果以上都排查了还是不行,最直接的办法是把 config.toml 里的 provider 段先注释掉,只留 auth.json,然后用环境变量指定 base_url 和 Key,看能不能通。环境变量方式绕过了 config.toml 的解析,能快速定位是配置文件问题还是通道问题。
6. 把 Codex 认证固定到 TaoToken 的长期用法
freemodel 那套免费额度,我试过之后放弃了。不是额度不够,是认证通道和 Codex 的兼容性太差,改了半天配置,最后卡在模型不支持上。免费的东西往往在你看不见的地方收成本,时间就是最大的成本。
把 Codex 的 auth.json 指向 TaoToken 之后,整个链路清晰了很多。auth.json 只管 Key,config.toml 管 provider 和 model,两层解耦。换模型只改一行model,换 Key 只改 auth.json,不用动其他配置。这种结构在长期跑 coding agent 的时候特别省心,不会因为某个网关改协议就整个崩掉。
如果你也在用 Claude Code 或者 Cline MCP,思路是一样的:Base URL 填https://taotoken.net/api,Key 用 TaoToken 生成的,Model ID 按需填。Codex 的特殊之处只是多了一个 auth.json,其他工具通常直接在设置里填 Base URL 和 Key 就行。
最后给一个实用技巧:把 config.toml 和 auth.json 备份一份,换机器或者重装 Codex 的时候直接复制过去,省得重新配。auth.json 里的 Key 记得定期轮换,TaoToken 控制台可以随时生成新的,旧 Key 删掉就行。这样即使 Key 泄露,影响也可控。
配置这件事,一次搞对,后面就是复制粘贴。与其在免费额度上反复试错,不如把认证层固定下来,把时间花在真正要写的代码上。