跳转到内容

config.toml中内容被重置了 Codex(cc-switch)

Quick fix

升级到 v4.0.0+:旧版整份覆盖 config.toml 导致 MCP、projects 等配置丢失,新版只替换关键字段,其余内容保留。

报错原文
此时config.toml中内容被重置了

根因是旧版 cc-switch 在切换 Codex 供应商、启用/关闭本地路由或自身完整重启时,用供应商模板或 proxy_live_backup 备份模板对 ~/.codex/config.toml 做全量覆盖重写,而非增量合并,导致用户自定义的 [mcp_servers.*]、[projects]、[desktop]、[features]、[memories]、颜色/UI 设置、对话会话索引、model_provider 等全部丢失或被强制改写。维护者解释这是历史遗留设计:早期为避免供应商特殊字段互相冲突,采用了「覆盖配置文件 + 通用配置片段」方案。

该问题在不同版本有多个变体:v3.11.0 白名单过严导致通用配置无法保存;v3.11.1 通用配置无限追加;部分版本会强制把 model_provider 改成 "ccswitch";勾选「写入通用配置」时前端用 smol-toml 整文档重新序列化会打乱 TOML 表顺序;v3.20.x 会强制覆盖 requires_openai_auth 值(issue #7211 仍 open)。另外 mcp 管理中的配置优先级高于通用配置,也会造成「通用配置修改不生效」的假象。官方修复路径为:v3.12.2 引入 Section-Aware TOML 编辑、v3.13.0 修复切换保留 MCP、v3.17.0 把合并回写移到后端 toml_edit,最终在 v4.0.0 彻底改为只替换路由、凭据、模型等关键字段,其余内容逐字节保留。

  1. 升级到 cc-switch v4.0.0 或更新版本(当前最新 v4.0.6):切换、进入和退出本地路由只替换路由、凭据、模型等关键字段,MCP、[projects]、注释及其他自定义内容逐字节保留,退出时不再用旧备份覆盖 config.toml。下载地址:https://github.com/farion1231/cc-switch/releases/latest

  2. 升级前先用备份找回丢失的配置:如果 config.toml 已被重置,可从 ~/.codex/ 目录下的备份文件或第三方工具(如用户分享的 Codex-Config-Guardian)恢复原有的 MCP、projects 配置,再升级。

  3. 如果暂时无法升级且使用本地路由/代理模式(3.16.x):修改 MCP 配置时按此顺序操作——先在 CC Switch 中关闭 Codex 本地路由/代理接管,等待原始配置恢复完成,再到「MCP 管理」中启用、禁用或删除 MCP,确认 ~/.codex/config.toml 内容正确后,最后重新开启本地路由,让 CC Switch 基于最新配置创建新备份。

  4. 配置 MCP 时务必通过 cc-switch 的「MCP 服务器管理」页面添加并启用到 Codex,不要手动写入 config.toml,否则切换或重启时会被覆盖;旧版中 mcp 管理的配置优先级高于通用配置,两处配置需保持一致。

  5. v3.20.x 下 requires_openai_auth 被强制改写的问题(#7211)暂未修复:临时缓解方法是切换供应商后用脚本把 config.toml 中的 requires_openai_auth 值改回所需状态,或等待官方修复。

ToolCodex
Versioncc-switch 3.11.0 - 3.20.2 受影响(其中 model_provider 强制改写问题在 v3.16.0 修复,TOML 序列化乱序在 v3.17.0 修复,整份覆盖问题在 v4.0.0 彻底修复;requires_openai_auth 强制改写在 3.20.2 仍存在)
PlatformsWindowsmacOS
写入通用配置的时机是什么时候?勾选后为什么感觉没生效?
维护者确认:写入通用配置与切换供应商是同步进行的,只要新供应商也勾选了「写入通用配置」就会写入。旧版中 MCP 管理页的配置优先级高于通用配置,会造成通用配置修改被覆盖的假象,两处需改成一致。v4.0.0 起通用配置片段功能已移除,全局设置直接留在 config.toml 中。
切换供应商后会话记录、插件、历史对话全没了,能找回吗?
会话文件本身通常未被删除,多是 config.toml 被覆盖后 model_provider 被强制改成 "ccswitch" 导致 Codex 桌面版按 provider 索引不到原 session,或插件市场地址被重置。可手动把 model_provider 改回 "OpenAI" 查看记录;v3.16.0+ 已不再强制改写该字段。若插件被清空,需重新配置 marketplace 路径。
开启本地代理模式后,删除的 MCP 重启电脑又回来了怎么办?
这是 3.16.x 整份覆盖备份模板的问题。临时方案:先关闭 Codex 本地路由,等原始配置恢复,再到 MCP 管理中修改,确认 config.toml 正确后重新开启路由。彻底修复需升级到 v4.0.0+。
保存后 [projects] 被插到 [model_providers] 和 [model_providers.xxx] 之间,配置是不是坏了?
这是旧版前端用 smol-toml 整文档重新序列化导致的表顺序错乱,TOML 本身仍有效。v3.17.0 已改为后端 toml_edit 流程修复。临时规避:配置中省略空的父表头(如 [model_providers]),只写子表。
v3.20.2 切换供应商后 requires_openai_auth 被强制改成 false(或 true)导致 401 怎么办?
该问题(#7211)仍未修复:CCS 会有意将 requires_openai_auth 与 Codex 自身观察到的认证状态对齐。临时缓解:切换后用脚本把该值改回所需状态;若 provider 使用 experimental_bearer_token,通常需要 requires_openai_auth = false。
升级到 v4.0.0 后还需要勾选「写入通用配置」吗?
不需要。v4.0.0 起通用配置片段和相关勾选项已移除,编辑器底部显示的就是切换后的配置文件,直接在其中修改的全局设置会写入文件,切换时只替换关键字段,其余保留。

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