跳转到内容

Codex 供应商 API Key 重启或切换后互相覆盖 - CC Switch

Quick fix

开启 CC Switch 本地代理接管模式,或在 config.toml 使用 experimental_bearer_token 绕过 auth.json 同步缺陷。

报错原文
供应商 A 和 B 的 API Key 在重启/切换后互相覆盖。

CC Switch 在数据库 (DB) 和 Codex 的 Live 配置文件(~/.codex/auth.json)之间维护 API Key 时存在双向同步缺陷。由于 auth.json 是全局单例,当切换供应商、重启应用或新建配置时,CC Switch 的 backfill/autosync 逻辑会错误地读取 auth.json 中的陈旧值或官方登录态,并反向覆盖 DB 中当前供应商的正确配置。此外,直接写文件路径在某些版本下会失效,导致 UI 显示与底层实际生效的 Key 不一致。该同步缺陷会导致多种变体问题,包括:第三方 Key 被官方 OAuth 登录态覆盖、新建空供应商被旧 Live 数据污染、切换官方供应商后遗留第三方 Key 导致 OAuth 失效,以及 UI 编辑页显示陈年旧值。此外,集群中还混入了一个独立的翻译器 Bug:在 wire_api=responses 下,流式 tool_call 的 call_id 会被后续空 delta 覆盖导致工具调用假死。

  1. 开启本地代理接管模式(推荐)。在 CC Switch UI 中开启“路由”开关,让请求走本地代理(如 127.0.0.1:15721)。此模式走独立的内存配置路径,可避免直接读写 auth.json 触发的覆盖 Bug。

  2. 使用 experimental_bearer_token 绕过。若必须使用直接写文件模式,在 Codex 配置中为自定义供应商硬编码 Token,并关闭 requires_openai_auth,从而绕过 auth.json 的全局单例限制。

    ~/.codex/config.toml
    [model_providers.custom]
    requires_openai_auth = false
    experimental_bearer_token = "YOUR_API_KEY"
  3. 手动清理与重建。若已发生官方 OAuth 登录态丢失,需手动删除 ~/.codex/auth.json 中的 OPENAI_API_KEY 字段,并在终端重新运行 codex login 恢复官方登录。切换供应商时,务必先禁用路由再切换。

ToolCodex
Version未知
PlatformsWindowsmacOS
为什么在 UI 里保存了正确的 API Key,重启后又变回了旧的?
因为 CC Switch 重启时会读取 ~/.codex/auth.json 的全局值并反向同步到数据库。如果 auth.json 未被正确更新,旧值就会覆盖你在 UI 中保存的新值。建议开启代理接管模式来绕过此文件同步逻辑。
切换到官方供应商后,Codex 右下角显示 "OpenAI" 且无法使用 ChatGPT 账号怎么办?
这是因为 auth.json 中残留了第三方的 OPENAI_API_KEY,导致 Codex 优先使用 API Key 认证而忽略了 OAuth token。请手动清空 auth.json 中的 OPENAI_API_KEY 字段,然后重新运行 codex login。
使用第三方模型时,Codex 发起工具调用后假死且报 unsupported call: 是怎么回事?
这是一个独立的流式翻译器 Bug。在 wire_api=responses 下,CC Switch 累积逻辑会将后续空 delta 覆盖首个 chunk 的 call_id。目前无配置可绕过,建议改用官方直连或等待上游修复。

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