auth 已变为 {},API Key 丢失 - cc-switch Codex
Quick fix
编辑当前生效的 Codex 供应商并保存时,若本机 ~/.codex/auth.json 缺失,DB 中的 auth.OPENAI_API_KEY 会被 live 空配置整体覆盖清空;避免直接保存或手动补回 key。
Symptom
Section titled “Symptom”重新查看数据库或再次打开编辑弹窗:auth 已变为 {},API Key 丢失。编辑弹窗对“当前生效”的 Codex 供应商会读取 live 配置并用它整体替换表单初始值:EditProviderDialog.tsx 在 provider.id === currentId 时调用 getLiveProviderSettings,成功后用 live 配置覆盖初始值。live auth 来自 read_codex_live_settings(),它直接读取 ~/.codex/auth.json,文件不存在时返回 {}。
而唯一的 key 回填保护 reconcileCodexLiveAuth() 只针对 config.toml 中的 experimental_bearer_token;当自定义供应商通过 Authorization 请求头认证、auth.json 缺失且 config 中也没有 experimental_bearer_token 时,表单初始值里的 auth 为空,保存后即整体覆盖并清空 DB 中已保存的 auth.OPENAI_API_KEY。key 被清空后,v3.20.3 的用量查询“官方订阅”判定还会误判该供应商,连带导致已保存的自定义用量查询方案被重置丢弃。
编辑当前生效的 Codex 供应商时,若发现弹窗中 auth 字段为空,不要直接点击保存,先手动补回 API Key 再保存;或暂不通过编辑弹窗保存该供应商,以避免空 auth 覆盖 DB 中的凭据。
~/.codex/auth.json # 本机 auth.json 缺失时,live 配置返回 {},保存会清空 DB 中的 key
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”- 为什么编辑当前生效的 Codex 供应商并保存后,API Key 会丢失?
- 因为编辑弹窗会用从 ~/.codex/auth.json 读取的 live 配置整体替换表单初始值;当该文件缺失时返回空对象 {},保存后就把数据库里已保存的 auth.OPENAI_API_KEY 覆盖清空。
- 为什么我的自定义用量查询方案也失效了?
- key 被清空后,cc-switch 的“官方订阅”判定会把该供应商误判为官方订阅,导致已保存的 meta.usage_script(如自定义余额查询方案)在打开弹窗时被重置丢弃,预设模板区也被过滤为只显示“官方订阅”。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。