Codex 的 config.toml 被全量覆盖,自定义 MCP 和 UI 设置丢失(cc-switch)
Quick fix
多数相关 issue 仍未解决;把 MCP、[desktop]、[projects] 等自定义段落写进 cc-switch 的「应用通用配置」或供应商模板,并升级到最新版,避免接管/重启重写 config.toml 时被丢弃。
Symptom
Section titled “Symptom”cc-switch 完整重启后,Codex 的 config.toml 被全量覆盖,用户自定义的 MCP 和 UI 设置丢失cc-switch 的 Codex 本地代理接管(本地路由)在接管时会把整个 ~/.codex/config.toml 快照存入数据库的 proxy_live_backup 表,随后用数据库里保存的供应商模板「全量替换」式重建 config.toml,而不是增量合并。模板里没有的段落——[mcp_servers.*]、[desktop]、[features]、[memories]、[windows]、[projects]、permissions 配置、手动添加的 [model_providers.*] 别名等——在每次切换供应商、重启 cc-switch 或异常退出后的「重新接管」路径上都会被丢弃。退出时旧的快照又会被原样写回,导致已删除的 MCP 服务器「复活」,下次「导入已有 MCP」再次入库,形成删除无效的闭环。
同一机制还有几个变体:部分版本中重启会把 auth.json 覆盖为 experimental_bearer_token="PROXY_MANAGED",导致官方 OAuth 登录失效、重装插件(维护者称 v3.16.1/v3.16.3 起针对性修复,建议升级到 v3.16.4+ 并开启「保留 Codex 官方鉴权」);开启本地路由时官方供应商被硬编码为 cc-switch-official 桶,与第三方 custom 桶的会话历史互相不可见;Codex CLI 与 Desktop 共用 ~/.codex/config.toml,因此 CLI 的接管会影响桌面版。另外各 issue 对「应用通用配置」是否有效存在矛盾:有用户靠把片段放进通用配置保住了设置,但 #6017 报告在异常退出恢复路径上通用配置片段未被合并,该路径疑似回归。
升级到最新版 cc-switch(维护者在 #3423 中确认 v3.16.1 修复代理接管期间的 Codex OAuth 鉴权、v3.16.3 修复跨配置目录接管残留恢复与接管时保留 OAuth token,建议至少 v3.16.4),并在设置中开启「保留 Codex 官方鉴权」,然后重启验证登录与插件是否还会失效。
把需要长期保留的自定义段落(MCP 服务器、[windows]、[projects]、[desktop]、[memories]、permissions 等)写入 cc-switch 的「应用通用配置」(CLI 为 cc-switch -a codex config common)或供应商模板中,这样重写 config.toml 时这些段落会被重新合并/投影回去。注意:#6017 报告异常退出恢复路径上通用配置可能不被合并,重要配置请自行备份。
~/.codex/config.toml 中会被覆盖、应迁移到「应用通用配置」的段落示例 [windows]sandbox = "elevated"[projects."/path/to/your/repo"]trust_level = "trusted"临时绕过(来自 #4368):直接修改 ~/.cc-switch/cc-switch.db 中 proxy_live_backup 表的 original_config 字段,把缺失的 TOML 段追加进快照,退出恢复时就不会丢。缺点是每次改设置都要改数据库。
遇到已删除的 MCP 服务器重启后「复活」时,仅删除 mcp_servers 表和 config.toml 不够,还需清理 proxy_live_backup 快照与 providers.settings_config 中残留的旧 MCP 定义(#4012、#6377),否则重启和「导入已有 MCP」会把它们再写回来。
如果关闭/卸载 cc-switch 后 Codex 仍残留代理配置无法直连(#1422 场景,#1423):在 cc-switch 中添加一个官方供应商并切换过去;仍不行则删除 ~/.codex 目录后重新打开 Codex 让其自行初始化 config.toml。
插件/会话丢失类问题(#3423 场景):有用户报告在关闭路由的状态下安装插件,重启后插件就不会消失;折腾好的配置记得同步进通用配置,切换供应商后也要同步。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 15 个真实 issue
- #1423codex 配置问题
- #1755貌似最新版的cc switch设置了codex CLI 配置代理后会劫持桌面codex版本的请求
- #3423重启电脑后 Codex 插件全部失效,需要重新安装
- #3895Codex Desktop history temporarily disappears after provider/proxy switch
- #4012bug: stale Codex MCP servers resurrected from provider config and takeover backup
- #4254[Codex] Proxy takeover overwrites entire config.toml, silently destroying all user settings (UI preferences, MCP servers, memories, etc.)
- #4368codex重启会被cc-switch覆盖config.foml文件
- #5886Codex common_config_codex and route backup can be replaced by a partial config while proxy routing is active
- #5974[Bug] 开启 Codex 本地路由后 unifyCodexSessionHistory 对 OpenAI Official 失效:官方路由硬编码 cc-switch-official 桶导致官方/第三方会话历史分裂
- #6017[Bug] 代理接管(异常退出恢复路径)重写 config.toml 时不合并「应用通用配置」,导致 sandbox_mode/web_search 等设置丢失
- #6183Codex config.toml 在启动时被自动热切换覆盖,丢失 [windows] 和 [projects] 段
- #6265[Bug] 开启 Codex 本地代理接管后,重启 CC Switch 会清空 MCP 配置
- #6377[BUG]删除 MCP 服务器后,代理接管备份 (proxy_live_backup) 在退出时将其写回 config.toml,导致删除无效、再次导入时复活
- #6558bug(codex): CLI provider switch rewrites live config.toml from provider blob and drops permission profiles + compaction/reasoning keys
- #6860Config writer strips non-managed [model_providers.*] sections on takeover/switch, breaking old Codex threads
- 我在 cc-switch 里删掉了 MCP 服务器,为什么重启电脑后它们又回来了?
- 删除只清理了 mcp_servers 表和 config.toml,proxy_live_backup 里的接管前整文件快照仍包含这些服务器。退出/重启时快照被原样写回 config.toml,再点「导入已有 MCP」就重新入库。需要同时清理 proxy_live_backup 和 providers.settings_config 中的残留定义。
- 关闭甚至卸载 cc-switch 后,Codex 还是走代理、免费账号无法使用,怎么办?
- 接管时写入的代理配置残留在 ~/.codex/config.toml。可在 cc-switch 中添加一个官方供应商并切换过去让它写回直连配置;若已卸载,则删除 ~/.codex 目录后重新打开 Codex,让它自行初始化 config.toml。
- 为什么我只配置了 Codex CLI 的代理,桌面版 Codex 的请求也被劫持了?
- Codex Desktop 和 Codex CLI 默认共用 ~/.codex/config.toml,cc-switch 改写这个文件后两个客户端都会走本地代理路由。
- 重启后 Codex 官方 OAuth 登录失效、插件全部变成未安装,怎么解决?
- 这是 auth.json 被覆盖为 PROXY_MANAGED 占位 token 导致的。维护者确认 v3.16.1/v3.16.3 起已针对性修复,请升级到最新版并在设置中开启「保留 Codex 官方鉴权」;插件请在关闭路由的状态下安装。
- 切换供应商后 Codex Desktop 的历史会话列表空了,数据丢了吗?
- 多数情况下会话文件仍在磁盘上(~/.codex/sessions 的 jsonl 未删除),属于会话分桶/索引显示问题。开启本地路由时官方会话会被写入 cc-switch-official 桶,与第三方 custom 桶互相不可见,可尝试开启「统一 Codex 会话历史」开关。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。