auth.json 不会随渠道改变而改变,编辑时覆写第三方渠道密钥(cc-switch)
Quick fix
cc-switch 3.20.0 编辑 Codex 中转站渠道时会把 auth.json 里的官方 key 写回该渠道,升级到含 #6534 修复的下个版本,并重新保存一次正确密钥即可。
Symptom
Section titled “Symptom”`auth.json` 不会随渠道改变而改变,在编辑时覆写第三方渠道的密钥根因由维护者确认:`~/.codex/auth.json` 是一个没有供应商身份的单槽共享文件。开启「保留官方登录」后,auth.json 里保存的是官方登录的 key,而中转站供应商自己的密钥实际存放在 `config.toml` 的 `experimental_bearer_token` 里。但 cc-switch 3.20.0 的编辑弹窗在加载 live 配置时优先读取了 auth.json,于是输入框里显示的是官方 key;保存时又把这把官方 key 写回了该供应商的数据库记录(`settings_config.auth.OPENAI_API_KEY`),造成「编辑一次渠道,密钥就被替换成官方 key」。修复(#6534)后,加载 Codex 配置时会把 `experimental_bearer_token` 提升为该供应商的密钥,显示和保存的都是它自己的那把。
注意同簇的 #1868 是另一条链路的问题:用户想在 Claude Code 里通过中转站使用 GPT 模型,遇到 `There's an issue with the selected model (gpt-5.4). It may not exist or you may not have access to it` 等报错,并困惑于该填 `ANTHROPIC_AUTH_TOKEN` 还是 `OPENAI_API_KEY`、是否需要中转站。维护者明确回复:codex 的 oauth 还没做,必须走中转站,按示例配置后开启代理接管即可,且一般 Response 接口的请求地址会多一个 `v1`;Claude Code 中的思考等级会映射到 GPT 模型的思考等级。这不是同一个 bug,只是都涉及中转站下的 key 配置。
升级 cc-switch:维护者确认该 bug 已由 #6534 修复,将随 3.20.0 之后的下个版本发布。升级到包含该修复的版本后,编辑弹窗会正确显示并保存供应商自己的密钥。
升级前的临时绕过:每次编辑第三方渠道后、保存之前,检查 API Key 输入框——如果显示的变成了官方 key(即 `~/.codex/auth.json` 里的那把),手动改回中转站密钥再保存;或者干脆避免编辑已配置好的渠道。
如果该供应商的数据库记录已被污染(保存过官方 key),升级后重新编辑该供应商,填入正确的中转站密钥再保存一次,把数据库里的 `settings_config.auth.OPENAI_API_KEY` 修正回来。
用维护者给出的三项对比自检修复结果:供应商数据库记录里的 `settings_config.auth.OPENAI_API_KEY` 应为中转站密钥;`auth.json` 里的 `OPENAI_API_KEY` 保持官方登录不变;`config.toml` 中实际生效的 `experimental_bearer_token` 应为中转站密钥。
~/.codex/config.toml # 中转站供应商自己的密钥应保存在这里,而不是 auth.jsonexperimental_bearer_token = "中转站密钥_KEY_A"
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 编辑第三方渠道后,输入框里的 key 变成了官方 key,怎么办?
- 这正是该 bug 的表现:编辑弹窗优先读取了 `~/.codex/auth.json` 里的官方登录 key。升级到含 #6534 修复的版本即可;升级前可在保存前手动把输入框里的 key 改回中转站密钥。
- 官方登录情况下再切换 API,重启 Codex 后 auth.json 依然是官方登录,手动改也不行,是同一个问题吗?
- 是同一根因:`auth.json` 是没有供应商身份的单槽共享文件,开启「保留官方登录」后它就固定保存官方 key,各渠道的密钥实际在 `config.toml` 的 `experimental_bearer_token` 里,不要再手动改 auth.json。
- 用第三方密钥登录 Codex 时提示令牌不合法,也是这个 bug 吗?
- 不是。维护者说明那是另一条链路:Codex CLI 从 0.149 起不再自动从 auth.json 附带 Authorization 头,该问题跟踪在 #6744,不在本条范围内。
- cc-switch 没有集成本地的 codex oauth 吗?一定要中转站吗?
- 维护者回复 oauth 还没做。目前要在 Claude Code 里用 GPT 模型需要走中转站:按维护者给出的配置示例设置好供应商并开启代理接管,注意 Response 接口的请求地址一般要多加一个 `v1`。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。