跳转到内容

Codex 的 config.toml 被全量覆盖,自定义 MCP 和 UI 设置丢失(cc-switch)

Quick fix

多数相关 issue 仍未解决;把 MCP、[desktop]、[projects] 等自定义段落写进 cc-switch 的「应用通用配置」或供应商模板,并升级到最新版,避免接管/重启重写 config.toml 时被丢弃。

报错原文
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 报告在异常退出恢复路径上通用配置片段未被合并,该路径疑似回归。

  1. 升级到最新版 cc-switch(维护者在 #3423 中确认 v3.16.1 修复代理接管期间的 Codex OAuth 鉴权、v3.16.3 修复跨配置目录接管残留恢复与接管时保留 OAuth token,建议至少 v3.16.4),并在设置中开启「保留 Codex 官方鉴权」,然后重启验证登录与插件是否还会失效。

  2. 把需要长期保留的自定义段落(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"
  3. 临时绕过(来自 #4368):直接修改 ~/.cc-switch/cc-switch.db 中 proxy_live_backup 表的 original_config 字段,把缺失的 TOML 段追加进快照,退出恢复时就不会丢。缺点是每次改设置都要改数据库。

  4. 遇到已删除的 MCP 服务器重启后「复活」时,仅删除 mcp_servers 表和 config.toml 不够,还需清理 proxy_live_backup 快照与 providers.settings_config 中残留的旧 MCP 定义(#4012、#6377),否则重启和「导入已有 MCP」会把它们再写回来。

  5. 如果关闭/卸载 cc-switch 后 Codex 仍残留代理配置无法直连(#1422 场景,#1423):在 cc-switch 中添加一个官方供应商并切换过去;仍不行则删除 ~/.codex 目录后重新打开 Codex 让其自行初始化 config.toml。

  6. 插件/会话丢失类问题(#3423 场景):有用户报告在关闭路由的状态下安装插件,重启后插件就不会消失;折腾好的配置记得同步进通用配置,切换供应商后也要同步。

ToolCodex(CLI 与 Desktop,二者共用 ~/.codex/config.toml)
Version报告覆盖 3.11.1 - 5.10.1(v3.16.1/v3.16.3 起部分修复 auth.json 覆盖问题,config.toml 全量覆盖问题在 3.19.2 及更新版本中仍有报告)
PlatformsWindowsmacOS

本页汇总自 15 个真实 issue

我在 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。本站不分发任何软件。