切换 Codex provider 后 CLI 模型列表不更新:app-server daemon 缓存旧 model catalog,需手动杀进程重启
Author: Dean-opCreated Sep 28, 2026Updated Sep 28, 2026
Labelsbug
Self Checks / 自检
I have searched for existing issues, including closed ones. 我已搜索过已有的 Issue,包括已关闭的。
CC Switch Version / 版本号
v3.20.4
Operating System / 操作系统
Windows
Related App / 涉及应用
Codex
Steps to Reproduce / 重现步骤
- 多个 Codex provider 各自配置了不同的模型列表(通过 model_catalog_json 指向相对路径 cc-switch-model-catalog.json,CC Switch 每次切换时覆写该文件)。
- 启动 Codex CLI(此时后台会拉起常驻的 codex.exe app-server --managed-daemon 进程)。
- 在 CC Switch 里切换到另一个 provider(例如从 provider A 切到 provider B)。
- 重新打开 Codex CLI 的 Select Model 菜单。
Expected Behavior / 期望行为
Select Model 菜单显示当前所选 provider(B)配置的模型列表。
Actual Behavior / 实际行为
Select Model 菜单仍然显示切换前 provider(A)的模型列表,重开 TUI 窗口也无效。只有彻底杀掉所有 codex 进程后重开,才会显示新 provider 的模型。
Additional Context / 补充信息
经排查,根因是 Codex 新架构的 app-server daemon 缓存了 model catalog,而 CC Switch 切换 provider 时只改写了磁盘上的 config.toml 与 cc-switch-model-catalog.json,没有通知/重启这个常驻 daemon,导致其内存中仍是旧 provider 的模型目录。
验证过程(Windows):
- 切换 provider 后,磁盘配置是正确的:用全新进程执行
codex debug models读到的正是新 provider 的模型列表。 - 但正在运行的
codex.exe app-server --managed-daemon/app-server daemon pid-update-loop两个后台进程从首次启动时就常驻,缓存旧目录不重读,所以 TUI(连到该 daemon)一直显示旧模型。 - 执行
Get-Process codex | Stop-Process -Force杀掉全部 codex 进程后重开,模型列表立即变为新 provider 的正确列表。
建议的修复方向
CC Switch 在切换 Codex provider 时,除了改写配置文件外,主动重启(或通知 reload)Codex 的 app-server daemon,例如切换后执行等价于 taskkill /F /IM codex.exe 的操作,或调用 daemon 的 reload 接口,使新配置对 CLI 立即生效。目前用户只能手动杀进程重启作为 workaround。
Source: farion1231/cc-switch