切换 Codex 供应商会覆盖 config.toml - Codex
Quick fix
先升级 cc-switch 到 v3.17.0+,并把要保留的 MCP/插件/偏好同步进「通用配置」;仍被旧快照回写时切走再切回一次。
Symptom
Section titled “Symptom”`config.toml` 被重写后,Codex Desktop 相关配置丢失或被还原。这类问题的共同点是:Codex 把 MCP、插件、features、desktop/windows 偏好和 model/provider 都放在 `~/.codex/config.toml`,而 cc-switch 切换供应商、重启接管本地路由或从数据库同步时也会重写这个文件。旧版本会把整份 `config.toml` 或 provider 快照(`providers.settings_config`)、`mcp_servers` 表、通用配置一起回写,结果只保留 model/provider/base_url 等字段,或者把用户后来删掉/改过的 `[mcp_servers.*]`、`[plugins.*]`、`[features]`、`[windows]`、`[desktop]` 又恢复回来;#5149/#5049 表现为插件和桌面设置丢失,#4697/#4699/#4856/#956 表现为 MCP 被旧快照或 MCP 表“复活”,#2844/#4713 则是 provider 名或 auth/config 改写后带来会话历史、重连登录问题。
修复并不完全一致:维护者确认通用配置合并不稳、嵌套表丢失在 v3.17.0 通过后端 `toml_edit` 结构化合并修复;切走供应商时把 live `[mcp_servers]` 烙进快照的污染也在 v3.17.0 改为剥离,并已污染快照可在下次切走时自愈。但维护者同时说明这只覆盖“切换供应商”路径:单纯重启不切换不会立即自愈,代理接管/备份合并仍可能保留孤儿 MCP;#6344 在 3.19.2 仍报告 MCP 面板开关只导入不写入。另有些“不生效”不是 cc-switch 写错:#3548 维护者确认 `base_url` 应写在 `[model_providers.<name>]` 下而不是 `openai_base_url`;#2614 是 Codex 从模型 catalog 的 `context_window` 读取窗口而非顶层 `model_context_window`;#4970/#4971/#3668 是 model catalog/`models` 数组或 `openai_chat` 格式导致桌面端选择器不渲染。
先备份 `~/.codex/config.toml`、`~/.codex/auth.json` 和 `~/.cc-switch/`,再把 cc-switch 升到 v3.17.0 或更高;不要停在 3.12.0/3.12.1(会清空配置且回退会提示 db 不匹配),会话历史/provider 名问题至少升到 v3.16.2。
把需要长期保留的 Codex 改动放进 cc-switch 的「通用配置」或对应供应商模板,而不是只改 live `config.toml`:包括 `[mcp_servers.*]`、插件/桌面偏好、`web_search = "live"` 这类会被供应商模板重写清掉的手动项。
如果删除过的 MCP 保存后又出现,到 cc-switch 右上角「MCP 管理」里删除同名条目,并检查各 Codex 供应商配置里是否还保存着旧 `[mcp_servers.*]`;只删 `~/.codex/config.toml` 不够,因为数据库/快照还会回写。
已经怀疑旧 provider 快照被污染时,在 v3.17.0+ 上切到另一个供应商再切回来一次,触发切走剥离 `[mcp_servers]` 的自愈;若只是重启过 cc-switch 而没有切换,需要手动做一次这个切换。
Codex Desktop 插件、Computer Use/Browser/Chrome、`[desktop]`/`[windows]`/`[features]` 被还原后,先把这些段补进通用配置再切换;#5049 的临时方案是手动导入通用配置,Claude 侧已自动读取,Codex 侧自动化需等后续版本。
若症状是 `/model` 或桌面模型下拉为空:确认供应商 apiFormat 为 `openai_responses`;`openai_chat` + 本地路由在 #4970/#4971 中 catalog 已生成但桌面端不显示。可临时按 #3668 手工补齐 `model` 字段和 provider 的 `models` 数组,并同步 `models_cache.json`。
~/.codex/config.toml [model_providers.deepseek]name = "deepseek"base_url = "http://127.0.0.1:15721/v1"wire_api = "responses"requires_openai_auth = truemodels = [{ model = "deepseek-v4-pro", display_name = "DeepSeek V4 Pro" },{ model = "deepseek-v4-flash", display_name = "DeepSeek V4 Flash" },]model_catalog_json = "cc-switch-model-catalog.json"开启“1M 上下文”但仍是 258k 时,不要只依赖顶层 `model_context_window = 1000000`;按 #2614 用自定义 catalog 把该模型 `context_window` 设为 1000000,`effective_context_window_percent` 默认 95 会显示约 950k。
~/.codex/config.toml model = "deepseek-v4-pro"model_provider = "custom"model_catalog_json = "/Users/luca/.codex/custom-models.json"model_auto_compact_token_limit = 900000若 MCP 面板开关在 3.19.2 仍不写入 `~/.codex/config.toml`(#6344 打开中),只能临时手动维护 `[mcp_servers]` 或用桥接脚本把 `enabled_codex=1` 合并写入,并保留非 cc-switch 管理条目;关注该 issue 等待官方修复。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 21 个真实 issue
- #3668CC-Switch 写入的 config.toml 和 model-catalog 格式不被 Codex 识别,导致 /model 不显示第三方模型
- #1440更新之后,所有配置都不写入,还会清除配置
- #5149[Bug] 切换 Codex 供应商会覆盖 config.toml,导致 Codex Desktop 的插件与桌面设置丢失
- #5049插件仍然无法在供应商切换后保留安装
- #2656codex通用配置问题
- #2614codex开启1m上下文失败
- #3356Codex 配置好供应商后点击启动后,无法覆盖config.toml,只有启用后,再重启软件才会写进去
- #956[Bug][macOS 26.2] Codex Provider 修改已保存,但切换后 MCP 配置被改回旧内容
- #3548关于codex的base_url配置
- #4856历史配置覆盖新配置
- #28443.15.0版本 会导致codex会话历史异常丢失
- #4317Codex配置覆盖问题(已关闭问题重复报告)
- #4970[Bug] openai_chat + routing: model catalog generated but Codex desktop doesn't display models
- #4971[Bug] openai_chat + routing: model catalog generated but Codex desktop doesn't display models
- #4468打开 codex 应用增强模式时,启动第三方 api,会有一套旧配置覆盖掉当前配置
- #4697[Bug] Codex 普通 MCP 配置会被旧 provider 快照/CCS MCP 表回写,导致用户修改失效
- #4699Codex 普通 MCP 配置会被旧 provider 快照/CCS MCP 表回写,导致用户修改失效
- #4713[Bug] 从 OpenAI Official 切换到第三方 Provider 再切回后 Codex 卡在重连/需重新登录
- #5430RFC: Codex Provider configuration ownership, session routing, model mapping, and outbound proxy / Codex Provider 配置所有权、会话路由、模型映射与出站代理
- #6344[Bug] Codex 的 MCP 服务器只有导入没有写入,面板开关不会写入 ~/.codex/config.toml
- #6556[Bug] Codex 桌面 App 使用第三方供应商时完全不提供 web_search 工具(同配置 CLI 正常)
- 有没有勾选“写入通用配置”?勾没勾都只剩 base_url 怎么办?
- #1440 里维护者追问过这一点,用户确认勾选/不勾选都会只剩 base_url,且 3.12.0/3.12.1 连通用配置注释也写不进去;这是旧版本写入/清空问题,升级到修复版本并确认通用配置里确实有内容,不要回退到提示 db 不匹配的旧版。
- 哪里能手动导入到通用配置?是 skills 和 MCP 管理那里吗?
- #5049 的答复是把新增插件等配置项手动放进「通用配置」,让它进入 cc-switch 数据库,切换和重启后才能保留;Claude 侧的新增插件已自动读进通用配置,Codex 侧自动化当时承诺下个版本拓展。
- base_url 是不是写错了?Codex 不是识别 openai_base_url 吗?
- #3548 已关闭为无代码修改:cc-switch 给 Codex 写的是 `[model_providers.<name>]` 节下的 `base_url`,这是 Codex model_providers 的标准字段;`openai_base_url` 不在 cc-switch 写入字段中。
- 为什么我删掉的 MCP,点保存或切换后又恢复?
- #4856/#4697/#4699 的共同原因是 live 配置之外还有副本:`providers.settings_config` 快照、`mcp_servers` 表或 MCP 管理里仍留着旧条目。要在 cc-switch 的 MCP 管理/供应商配置里一起删,并在 v3.17.0+ 做一次切走再切回让污染快照自愈。
- 切回 OpenAI Official 后一直“正在重连...”或要重新登录,preserveCodexOfficialAuthOnSwitch 没用吗?
- #4713 报告即使 `preserveCodexOfficialAuthOnSwitch = true` 也可能 `config.toml`/`auth.json` 被改写,临时办法只有重新登录或手改配置,但下次切换会复发;该 issue 已 stale,仍属未完全解决路径。
- catalog 文件生成了、代理也正常转发,为什么桌面端模型选择器还是空?
- #4970/#4971 定位到 `openai_chat` + 本地路由时 catalog 生成但 Codex Desktop 不渲染,只有 `openai_responses` 正常;#3668 还列出 catalog 条目缺 `model` 字段、`[model_providers]` 缺 `models` 数组、`models_cache.json` 不同步三个独立点。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。