跳转到内容

切换供应商后 Codex config.toml 配置丢失 - CC Switch

Quick fix

升级 cc-switch 到 v3.17.0+,该版本改为增量合并而非全量覆盖 config.toml。

报错原文
codex 切换供应商 config.toml 被重置

cc-switch 在切换 Codex 供应商或重启本地路由时,早期版本采用全量替换逻辑写入 `config.toml`,导致用户自定义的 MCP 服务器、沙箱配置、桌面偏好等非供应商字段被覆盖丢失。此外,早期版本在处理 TOML 时存在缺陷,如 `base_url` 被错误写入 `[windows]` 段、通用配置无限重复增加、以及强制将 `model_provider` 改为 `ccswitch` 导致历史会话消失。

从 v3.12.2 开始引入 Section-Aware TOML Editing 修复了字段位置错误和重复问题;v3.13.0 修复了切换时 MCP 配置丢失;v3.16.0 解决了强制覆写 `model_provider` 的问题;v3.17.0 将合并与回写移至后端 `toml_edit` 流程,实现增量合并以保留非供应商字段。部分用户反馈在 v3.17.0 之后,特定配置(如 `node_repl`、颜色设置)在重启后仍有被还原的情况,说明边缘场景的覆盖问题可能仍存在。

  1. 升级 cc-switch 到 v3.17.0 或更高版本。该版本重构了 Codex 通用配置的合并与回写逻辑,改为增量合并,只覆盖供应商相关字段,保留用户自定义段。

    ~/.codex/config.toml
    # 保留 [mcp_servers.*], [desktop], [features] 等用户配置段
  2. 如果使用的是较老版本(如 v3.12.x),遇到 `base_url` 写入位置错误或通用配置无限增加,请升级到 v3.12.2+,该版本修复了 Section-Aware TOML Editing。

    ~/.codex/config.toml
    [model_providers.custom]
    name = "custom"
    wire_api = "responses"
    base_url = "https://your-api-url/v1" # base_url 正确写入对应供应商段下
  3. 对于 MCP 配置,不要手动写入 `config.toml`,应通过 cc-switch 的「MCP 服务器管理」界面添加并启用到 Codex,避免被覆盖。

    # 通过 cc-switch UI 管理 MCP,而非手动编辑 ~/.codex/config.toml
  4. 如果切换供应商后 `model_provider` 被强制改为 `ccswitch` 导致历史会话消失,升级到 v3.16.0+,该版本实现了 Codex Live Config Preservation,不再强制重写该字段。

  5. 若升级后仍发现特定配置(如 `js_repl`、颜色设置)在重启后被还原,检查是否开启了本地路由。本地路由的 live/backup 重建可能仍会覆盖部分配置,可尝试关闭本地路由或手动在数据库 `proxy_live_backup` 表中修改 `original_config` 字段作为临时 workaround。

ToolCodex
Version3.10.2 - 3.20.0
PlatformsWindowsmacOS

本页汇总自 40 个真实 issue

为什么我手动在 config.toml 里添加的 MCP 配置,切换供应商后就不见了?
早期版本 cc-switch 在切换供应商时采用全量替换逻辑覆盖 config.toml。建议升级到 v3.17.0+,或通过 cc-switch 的「MCP 服务器管理」界面统一管理 MCP 配置,避免手动写入被覆盖。
升级到最新版后,为什么 node_repl 或颜色设置在重启 Codex 后还是会变回 false?
v3.17.0 虽然将合并逻辑移至后端 toml_edit,但本地路由的 live/backup 重建可能仍会覆盖部分边缘配置。如果遇到此问题,可以尝试关闭本地路由,或手动修改数据库 proxy_live_backup 表的 original_config 字段作为临时方案。
切换供应商后,Codex 里的历史会话记录全部消失了,怎么恢复?
这是因为旧版本 cc-switch 强制将 config.toml 中的 model_provider 改为 ccswitch,而 Codex 根据该字段读取会话记录。升级到 v3.16.0+ 可避免此问题。对于已丢失的记录,需要手动将 model_provider 改回原值(如 OpenAI)尝试恢复。
base_url 被写到了 [windows] 段下,导致 Codex 无法读取,怎么解决?
这是 v3.12.0 的已知 bug,已在 v3.12.2 修复。升级到最新版本后,base_url 会正确写入到 [model_providers.custom] 等对应供应商的段下。
通用配置勾选「写入通用配置」后,配置内容会无限重复增加怎么办?
这是早期版本 TOML 合并逻辑的缺陷,未做 Section-Aware 处理。已在 v3.12.2 修复,升级后即可解决。
Codex Desktop 里看不到自定义模型,只能看到官方模型怎么办?
这可能与 Codex Desktop 本地缓存或路径解析有关。尝试完全退出 Codex Desktop 后重新打开,或重装/升级 Codex Desktop。同时检查 ~/.codex/config.toml 里的 model_catalog_json 和 ~/.codex/cc-switch-model-catalog.json 是否存在。
开启本地路由后,Claude Code CLI 下 opus 模型总是显示 opus4.8 而不是配置的 opus5?
开启本地路由后,cc-switch 会覆盖 config.toml 的 default_opus_model 字段。目前为已知问题,关闭本地路由后可恢复正常显示,等待官方修复。
保存供应商配置后,显示的 key 是其他供应商的 key,怎么解决?
这是 v3.20.0 的已知问题,编辑框优先从共享的 auth.json 读取密钥导致串染。已在 v3.20.1 修复,改为从 config.toml 中供应商自己的 bearer token 重建。修复前已串染的 key 需手动重填。

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