跳转到内容

打开cc switch 后无法使用谷歌邮箱登录的codex账号 - Codex

Quick fix

第三方 key 被写进 ~/.codex/auth.json 顶掉了 ChatGPT 登录:在 CC Switch 里添加官方供应商并切换以恢复登录,并升级到 v3.16.1+。

报错原文
只下载codex.app 使用谷歌邮箱登录可以使用,打开cc switch 之后只能走cc switch ,关闭cc switch 的codex 配置,也无法使用谷歌邮箱登录的codex账号

根因在于 CC Switch 切换 Codex 供应商时对 `~/.codex/auth.json` 与 `~/.codex/config.toml` 两份文件的处理方式。早期版本会把第三方供应商的 API key 写入 `auth.json` 的 `OPENAI_API_KEY`,Codex Desktop 据此把会话识别为 `auth_mode="ApiKey"`,于是 ChatGPT/OAuth 登录态失效,Fast mode、Remote Control 等依赖账号登录的功能不可用(#3034);反过来,当 `auth.json` 保留 `auth_mode = "chatgpt"`、`OPENAI_API_KEY = null` 而 key 只写在 `config.toml` 的 `experimental_bearer_token` 里时,`codex doctor` 显示仍是 ChatGPT auth,用量可能扣到 ChatGPT 账号而非 API 项目(#3596)。关于后者存在矛盾反馈:有用户实测 Remote Control 会话绕过自定义 provider 继续消耗 ChatGPT 额度,但同一用户后来又报告「没做任何改动就恢复正常、API 计费正确」,因此该现象是否已彻底解决无法确定。维护者表示 CC Switch 4.0 重写了 Codex 切换逻辑:第三方供应商一律写成 `[model_providers.custom]` + `experimental_bearer_token`,官方登录按设置保留或暂存,`requires_openai_auth` 按磁盘上的实际登录态重新计算。

本问题还有几个变体:在官方供应商的编辑器里手动删掉 `OPENAI_API_KEY` 后保存无效、key 会被重写回来(#3903,根因是 `write_codex_live_for_provider` 在提交的 auth 为空时只写 `config.toml`,被归并到 #3566 跟踪);Codex 用量/成本查询不显示(#2776,根因是查询路径只读 Claude 的 `ANTHROPIC_*` 环境变量而 Codex 的 key 存在 `auth.OPENAI_API_KEY`,v3.16.1 通过 #3355 修复);切换到自定义 provider 后 `codex resume` 失效、需加 `-c 'model_provider="custom"'`(#6608,resume 读取的是会话记录的 provider 而非配置文件当前值,尚无官方修复);Codex Desktop 模型选择器空白(#5679,报告者认为是 `/v1/models` 返回 `models[]` 而非 OpenAI `data[]` 格式所致,但另一位用户用 Codex 0.147 的本地缓存结构反驳说 Codex 内部契约本身就是 `models[]` + snake_case,真正的断点可能是 `OPENAI_API_KEY` 环境变量缺失导致首次拉空后不再重试——两种说法尚无定论)。

  1. 如果只是被切走后回不去官方账号:在 CC Switch 里添加一个「官方」供应商并切换过去,即可恢复谷歌邮箱(ChatGPT)登录的 Codex 账号,详见 README 的 FAQ 部分(维护者确认的方案,#1358)。

  2. 也可以不依赖 CC Switch 手动改文件:`~/.codex/auth.json` 保持官方登录(`auth_mode` 为 `chatgpt`、`OPENAI_API_KEY` 为 null),`~/.codex/config.toml` 里把中转站的 url 和 token 写进 `[model_providers.OpenAI]` 的 `base_url` 和 `experimental_bearer_token`(#1358 中用户验证的方案)。

    ~/.codex/auth.json
    {
    "auth_mode": "chatgpt",
    "OPENAI_API_KEY": null
    }
    # ~/.codex/config.toml
    model_provider = "OpenAI"
    [model_providers.OpenAI]
    name = "OpenAI"
    base_url = "xxxx"
    wire_api = "responses"
    experimental_bearer_token = "xxxx"
    requires_openai_auth = true
  3. 升级到 CC Switch v3.16.1 或更高版本:该版本修复了自定义供应商 key 被写入 `auth.json`、强制 `auth_mode="ApiKey"` 的问题(#3034),也修复了 Codex 用量查询因凭据只从 `ANTHROPIC_*` 读取而失败的问题(#2776,修复 PR #3355)。

  4. 如果升级后计费/登录态仍有疑虑,运行 `codex login status` 和 `codex doctor` 自查:确认 `auth mode`、`stored API key`、`stored ChatGPT tokens` 与 `reachability mode` 是否符合预期(API 计费应显示 `Logged in using an API key` / `reachability mode: API key auth`),如用量仍落在 ChatGPT 账号,请携带 CC Switch 与 Codex 版本及 doctor 输出到 #3596 反馈(维护者建议,且 4.0 已重写 Codex 切换逻辑)。

  5. 若遇到官方供应商里残留的 `OPENAI_API_KEY` 删不掉、保存后又自动填回:这是已知 bug(#3903,已归并到 #3566 集中跟踪),目前无解,请关注 #3566 的修复进展。

  6. 若症状是切换自定义 provider 后 `codex resume --last` 失败而新建会话正常:临时方案是启动时显式加参数 `codex -c 'model_provider="custom"' resume --last`(#6608,该 issue 仍 open,暂无正式修复)。

ToolCodex(Codex Desktop / codex CLI)
Version报告涉及 CC Switch 3.14.1 - 3.19.2;其中 #3034、#2776 在 v3.16.0/v3.16.1 修复,4.0 重写了 Codex 切换逻辑;#3903(残留 key 删不掉)与 #6608(resume 失效)在 3.19.2 上仍存在
PlatformsWindowsmacOS
被 CC Switch 接管后回不去谷歌邮箱登录的 Codex 账号,咋解决?
在 CC Switch 里添加一个官方供应商然后切换过去即可恢复(维护者原话,详情见 README 的 FAQ);或者手动改文件:`auth.json` 保持 `auth_mode = "chatgpt"`、`OPENAI_API_KEY = null`,中转站配置写进 `config.toml` 的 `experimental_bearer_token`。
「保留官方登录」切换第三方后,计费到底走 API key 还是 ChatGPT 额度?有进展吗?
无法确定。有用户实测本地会话走第三方计费、但 Remote Control 会话仍扣 ChatGPT 额度;同一用户后来又报告不做任何改动就恢复正常。维护者建议升级到最新版后用 `codex doctor` 复核,如用量仍落在 ChatGPT 账号请到 #3596 附上版本和输出反馈。
为什么在官方供应商里删掉 `OPENAI_API_KEY` 保存后又自动出现?
这是已知 bug(#3903):`write_codex_live_for_provider` 只在提交的 auth 含登录材料时才写 `auth.json`,清空 key 后提交为空,旧的 `auth.json` 原样保留,编辑器又读回旧值。已被归并到 #3566 集中跟踪,请关注该 issue 的修复进展。
为什么 Claude Code 的用量统计正常,Codex 却一直不显示?
这是 #2776 的问题:用量查询路径只从 Claude 的 `ANTHROPIC_*` 环境变量取凭据,而 Codex 的 key 存放在 `auth.OPENAI_API_KEY`,导致 Codex 拿到空凭据查询失败。已在 v3.16.1 修复(#3355 引入按应用解析凭据),升级即可。
Codex Desktop 模型选择器空白是 `OPENAI_API_KEY` 的问题吗?
可能相关但无定论:#5679 认为是 CC Switch `/v1/models` 返回 `models[]` 而非 OpenAI `data[]` 格式导致解析失败;另一用户用 Codex 0.147 的缓存结构反驳该结论,并观察到 `Missing environment variable: OPENAI_API_KEY` 导致首次拉空后 `model/list` 不再重试。该 issue 仍 open。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。