Codex:使用第三方 API 并保留登录态与历史
通过手动 config.toml 或 CC Switch 使用第三方 API,同时保留 Codex 官方登录。逐项解释认证、模型和可选调优参数,并说明会话历史与常见错误。
你可以让模型请求使用 BetterToken API Key,同时保留 Codex 官方账号登录。手动配置和 CC Switch 管理使用同一原则:官方登录凭据与第三方模型请求凭据分开。
开始前准备
先在 Codex App、Codex CLI 或 Extension 中完成官方登录,并准备 BetterToken API Key 和模型广场里的完整 Model ID。CLI、App 和 Extension 需要使用相同的 CODEX_HOME 才会共享配置。
配置方式
手动配置
保留官方登录凭据
完全退出 Codex,将现有配置备份到私密位置。官方登录凭据可能在 auth.json 或系统凭据存储中;保留当前存储方式,不改写为 API Key JSON。文件不存在时不要为了本方案创建假的登录文件。
编辑 config.toml
打开用户级 config.toml:macOS / Linux 默认 ~/.codex/config.toml,Windows 默认 %USERPROFILE%\.codex\config.toml;自定义 CODEX_HOME 时使用该目录。合并下面的设置,顶层键放在所有 TOML 表之前,不要重复添加已有表。只在本机将 YOUR_API_KEY 换成 BetterToken API Key。
model_provider = "bettertoken"model = "gpt-6-astra"
[model_providers.bettertoken]name = "BetterToken"base_url = "https://bettertoken.ai/v1"wire_api = "responses"requires_openai_auth = trueexperimental_bearer_token = "YOUR_API_KEY"supports_websockets = false保留官方登录生成的凭据,不要改成 API Key JSON。requires_openai_auth = true 使用官方认证流程;模型请求由当前 provider 的 experimental_bearer_token 提供第三方 Key。启用前者时 env_key 会被忽略,因此不要直接用它替换 Bearer Key。不要分享包含 Key 的配置文件。
配置参数
| 参数 | 作用与位置 | 默认行为与示例 |
|---|---|---|
model_provider | 用户配置顶层;选择下方定义的配置 ID。 | 默认 openai;本页使用 bettertoken。 |
model | 顶层;模型广场中的完整 Model ID。 | 示例 gpt-6-astra,按需要替换。 |
name | provider 表内;仅用于显示的名称。 | BetterToken 不是模型 ID。 |
base_url | provider 表内;模型 API 的 Base URL。 | 使用 https://bettertoken.ai/v1;Codex 自行添加 /responses。 |
wire_api | provider 表内;请求协议。 | 当前仅支持 responses,省略时也是该值。 |
requires_openai_auth | provider 表内;使用 OpenAI 认证流程及凭据存储。 | 默认 false;本页使用 true。它不是保留登录文件的开关。 |
experimental_bearer_token | provider 表内;第三方请求的 Bearer Key。 | 填 BetterToken API Key;它不改写官方登录缓存。此项仍受支持,但以明文保存在配置中。 |
supports_websockets | provider 表内;Responses WebSocket 支持。 | 默认 false;本页保持 HTTP/SSE 传输。 |
可选模型与连接设置
下面两项放在 config.toml 顶层,按需要使用,不是保留登录的前提。
review_model = "gpt-6-astra"model_reasoning_effort = "high"| 参数 | 作用与位置 | 默认行为与示例 |
|---|---|---|
review_model | 顶层;/review 使用的模型。 | 可省略;默认使用当前会话模型。 |
model_reasoning_effort | 顶层;模型投入的推理力度。 | 示例 high;有效档位和默认值取决于模型。 |
下面三项是可选调优,不是接入前提。需要时将它们合并到已有的 [model_providers.bettertoken] 表内,不要创建第二个同名表。
request_max_retries = 4stream_max_retries = 8stream_idle_timeout_ms = 300000| 参数 | 作用与位置 | 默认行为与示例 |
|---|---|---|
request_max_retries | provider 表内;HTTP 请求的最大重试次数。 | 默认 4;按连接情况调整。 |
stream_max_retries | provider 表内;流式响应中断后的重连次数。 | 默认 5;8 是可选的自定义值。 |
stream_idle_timeout_ms | provider 表内;流式响应无活动时的超时,单位毫秒。 | 默认 300000;这是空闲超时,不是整次任务的总时限。 |
CC Switch 配置
-
使用当前 CC Switch,先切到 OpenAI Official,启动 Codex 并完成官方账号登录。
-
在 设置 → 应用配置 → Codex 中开启 非接管切换时保留官方登录。该开关控制直连切换;路由接管期间官方登录会保留。
-
在 CC Switch 的 Codex 页面添加或启用 BetterToken:Base URL 填
https://bettertoken.ai/v1,协议选择 OpenAI Responses API,填入 BetterToken API Key 和 Model ID。BetterToken 原生支持 Responses,不需要协议转换或路由接管。 -
保存并启用该配置。第三方 Key 写入
config.toml的 provider 设置,不写入官方auth.json。
统一会话历史(可选)
统一 Codex 会话历史 只影响 CLI 的 resume 列表。当前桌面版已能显示全部会话,只用桌面版无需开启。迁移已有历史时按提示选择,CC Switch 会先备份。跨 provider 继续旧会话可能因 encrypted_content 不兼容失败,切换后优先新建会话。
重启并验证
-
完全退出并重新启动你实际使用的 Codex 客户端,新建会话。
-
确认官方账号仍处于登录状态;在支持相应功能的客户端检查插件或 Remote Control。
-
发送简短测试消息,确认使用指定 Model ID,并在 BetterToken 使用记录中核对请求。账号显示本身不代表模型请求的计费方。
配置层级与旧参数
模型和推理设置不要写入 [projects."<path>"]。项目专属模型可以放在受信任项目的 .codex/config.toml 顶层,但 provider 与认证配置仍放在用户配置。新版命名 profile 使用 CODEX_HOME 下的 NAME.config.toml,通过 codex --profile NAME 选择,不使用旧的 [profiles.NAME] 或顶层 profile 选择器。
常见问题
| 现象 | 处理方式 |
|---|---|
401、403 或登录提示 | 核对当前 CODEX_HOME、官方登录及 provider 内的第三方 Key;不要用 API Key JSON 覆盖官方凭据。 |
| 配置被忽略或模型未改变 | 顶层模型键放在所有 TOML 表之前,不放入 [projects."<path>"]。检查命令行、profile 和项目配置的覆盖。 |
disable_response_storage 或 windows_wsl_setup_acknowledged | 删除这些旧键;不要作为当前接入配置使用。 |
features.code_mode_tool_description_first | 若警告来自 session-flags,检查并更新生成启动参数的客户端;不要在用户配置中新增同名开关。 |
features.guardianv2.thread_context | 删除这一项,包括 profile 中的覆盖;保留其他 Guardian 设置。线程上下文始终启用。 |
| 会话历史可见,但跨 provider 续聊失败 | 新建会话,或使用创建旧会话时的原 provider。 |

