config.toml中内容被重置了 Codex(cc-switch)
Quick fix
升级到 v4.0.0+:旧版整份覆盖 config.toml 导致 MCP、projects 等配置丢失,新版只替换关键字段,其余内容保留。
Symptom
Section titled “Symptom”此时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 彻底改为只替换路由、凭据、模型等关键字段,其余内容逐字节保留。
升级到 cc-switch v4.0.0 或更新版本(当前最新 v4.0.6):切换、进入和退出本地路由只替换路由、凭据、模型等关键字段,MCP、[projects]、注释及其他自定义内容逐字节保留,退出时不再用旧备份覆盖 config.toml。下载地址:https://github.com/farion1231/cc-switch/releases/latest
升级前先用备份找回丢失的配置:如果 config.toml 已被重置,可从 ~/.codex/ 目录下的备份文件或第三方工具(如用户分享的 Codex-Config-Guardian)恢复原有的 MCP、projects 配置,再升级。
如果暂时无法升级且使用本地路由/代理模式(3.16.x):修改 MCP 配置时按此顺序操作——先在 CC Switch 中关闭 Codex 本地路由/代理接管,等待原始配置恢复完成,再到「MCP 管理」中启用、禁用或删除 MCP,确认 ~/.codex/config.toml 内容正确后,最后重新开启本地路由,让 CC Switch 基于最新配置创建新备份。
配置 MCP 时务必通过 cc-switch 的「MCP 服务器管理」页面添加并启用到 Codex,不要手动写入 config.toml,否则切换或重启时会被覆盖;旧版中 mcp 管理的配置优先级高于通用配置,两处配置需保持一致。
v3.20.x 下 requires_openai_auth 被强制改写的问题(#7211)暂未修复:临时缓解方法是切换供应商后用脚本把 config.toml 中的 requires_openai_auth 值改回所需状态,或等待官方修复。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 17 个真实 issue
- #161切换 ‘启用’ 内容会乱
- #1088cc-switch导致codex的MCP、模型等设置直接丢失无法找回
- #1136更新到3.11.0后,无法保存部分配置
- #1364codex 配置无限增加问题
- #1863codex 切换供应商 config.toml 被重置
- #2030Codex 配置无法覆盖
- #2847model provider被强制更改为ccswitch
- #4142关闭/打开本地路由导致config.toml丢失
- #4358在Codex中各种设置,重启Codex之后 一切复原,
- #4780Codex config serialization splits parent and child TOML tables, causing `[projects]` to appear between `[model_providers]` and `[model_providers.xxx]`
- #5051安装ccswitch后 codex的会话还有插件被全部清空,去ccswitch中看会话管理列表里面东西也没有任何记录
- #5052切换供应商会导致codex沙箱配置出问题
- #5137ccs上改codex的node_repl这个配置, 改成true之后重启codex后 又会变成false
- #5665config.toml 右边的选中状态重新打开又变成未选中
- #6097MCP注入异常
- #6411设置了codex的颜色这些,当退出ccswitch的时候config.toml的颜色这些配置会被还原,每次都要修改一下
- #7211CCS 强制修改 Codex cli的config.toml配置的 requires_openai_auth 值 问题
- 写入通用配置的时机是什么时候?勾选后为什么感觉没生效?
- 维护者确认:写入通用配置与切换供应商是同步进行的,只要新供应商也勾选了「写入通用配置」就会写入。旧版中 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。本站不分发任何软件。