跳转到内容

切换 Codex 供应商会覆盖 config.toml - Codex

Quick fix

先升级 cc-switch 到 v3.17.0+,并把要保留的 MCP/插件/偏好同步进「通用配置」;仍被旧快照回写时切走再切回一次。

报错原文
`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` 格式导致桌面端选择器不渲染。

  1. 先备份 `~/.codex/config.toml`、`~/.codex/auth.json` 和 `~/.cc-switch/`,再把 cc-switch 升到 v3.17.0 或更高;不要停在 3.12.0/3.12.1(会清空配置且回退会提示 db 不匹配),会话历史/provider 名问题至少升到 v3.16.2。

  2. 把需要长期保留的 Codex 改动放进 cc-switch 的「通用配置」或对应供应商模板,而不是只改 live `config.toml`:包括 `[mcp_servers.*]`、插件/桌面偏好、`web_search = "live"` 这类会被供应商模板重写清掉的手动项。

  3. 如果删除过的 MCP 保存后又出现,到 cc-switch 右上角「MCP 管理」里删除同名条目,并检查各 Codex 供应商配置里是否还保存着旧 `[mcp_servers.*]`;只删 `~/.codex/config.toml` 不够,因为数据库/快照还会回写。

  4. 已经怀疑旧 provider 快照被污染时,在 v3.17.0+ 上切到另一个供应商再切回来一次,触发切走剥离 `[mcp_servers]` 的自愈;若只是重启过 cc-switch 而没有切换,需要手动做一次这个切换。

  5. Codex Desktop 插件、Computer Use/Browser/Chrome、`[desktop]`/`[windows]`/`[features]` 被还原后,先把这些段补进通用配置再切换;#5049 的临时方案是手动导入通用配置,Claude 侧已自动读取,Codex 侧自动化需等后续版本。

  6. 若症状是 `/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 = true
    models = [
    { 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"
  7. 开启“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
  8. 若 MCP 面板开关在 3.19.2 仍不写入 `~/.codex/config.toml`(#6344 打开中),只能临时手动维护 `[mcp_servers]` 或用桥接脚本把 `enabled_codex=1` 合并写入,并保留非 cc-switch 管理条目;关注该 issue 等待官方修复。

ToolCodex(Desktop App / CLI;少量报告同时涉及 Claude Code)
Version受影响报告横跨 3.12.0–3.19.2;v3.16.0/v3.16.2 修复历史分桶与接管,v3.17.0 修复通用配置合并和切换快照主路径,#6344 在 3.19.2 仍打开
PlatformsWindowsmacOS

本页汇总自 21 个真实 issue

有没有勾选“写入通用配置”?勾没勾都只剩 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。本站不分发任何软件。