切换后配置丢失:Claude Code / Codex / WSL 路径核对
Quick fix
切换供应商会重写 settings.json,请把 hooks/statusLine/enabledPlugins 等字段放入“通用配置/共享配置片段”,不要只写在本地文件里。
Symptom
Section titled “Symptom”切换 provider 后 hooks 字段丢失,插件及自定义脚本失效cc-switch 的 live 配置文件由所选供应商的配置生成,切换供应商或重启代理路由时会重写对应配置文件。对 Claude Code 是 ~/.claude/settings.json,对 Codex 是 ~/.codex/config.toml。如果用户把 hooks、enabledPlugins、statusLine、permissions、skipDangerousModePermissionPrompt、Codex 项目 trust_level 等字段直接写在本机配置文件里,而没有纳入 cc-switch 的通用配置/共享配置片段,这些字段在切换后会被清掉。
部分 issue 还涉及其他变体:第三方镜像/代理占位符残留可能导致切换变成空操作;Claude Desktop 与 Claude Code 的配置目录不同,手动创建 ~/.claude/settings.json 可能只是通过文件存在检查但实际不生效;Codex 统一会话历史在官方 Provider 显式 model_provider = "openai" 时可能被静默跳过。这些不是同一根因,但都表现为“配置切换后不生效或被覆盖”。
确认你使用的是 Claude Code CLI,而不是只安装了 Claude Desktop。Claude Code 通常读取 ~/.claude/settings.json;Windows 原生为 %USERPROFILE%\.claude\settings.json,WSL 内为 /home/<用户名>/.claude/settings.json。
在 cc-switch 中打开对应供应商的“编辑供应商”界面,找到共享配置/通用配置面板,使用“从当前供应商提取”或类似入口,把 enabledPlugins、hooks、statusLine、permissions 等需要跨供应商保留的字段提取为共享配置。
保存后重新切换供应商,然后检查 live 配置文件是否保留了这些字段。
~/.claude/settings.json {"env": { },"enabledPlugins": { },"hooks": { },"statusLine": { }}如果切换后仍不生效,检查 cc-switch 版本。第三方代理占位符残留导致切换无效的问题在 v3.16.2 相关修复中被提及;请升级到 v3.16.2 或更新版本后重试。
如果使用 Codex,并发现切换后需要重新确认 Hooks trust、Sandbox 或项目 trust_level,请把这些项目级配置纳入 cc-switch 可保留的共享配置;否则每次切换后可能需要重新确认。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 15 个真实 issue
- #479settings.json配置覆盖问题
- #480[Bug] 切换 Provider 后 settings.json 中的 statusLine 配置丢失
- #804切换供应商在vscode中不生效
- #1031请求添加settings.json文件, "保留用户自定义字段"
- #1218>_进入终端不起作用
- #1277[Bug] 非代理模式下切换供应商导致 enabledPlugins 配置丢失
- #1280用过第三方claude code镜像服务之后无法切换提供商
- #2871Workaround: auto-restore settings.json fields (statusLine, permissions, hooks) via PostToolUse hook
- #29793.15Bug:ccs错误写入claude的配置与显示的不同
- #3946切换 provider 后 hooks 字段丢失,插件及自定义脚本失效
- #4897claude桌面版1M上下文的配置问题
- #4947首次安装cc-switch原始 settings.json 被覆盖
- #5887提示Claude 配置文件不存在
- #6324重写 ~/.claude/settings.json 时清空用户配置(enabledPlugins/statusLine 等),导致 Claude Code 插件被禁用
- #6340[Bug][已定位根因] 统一 Codex 会话历史对 OpenAI Official 静默失效:显式 model_provider 使注入被拒、官方历史迁移 gate 永不通过(#4710/#5467 补充)
- 为什么 cc-switch 切换供应商会覆盖 settings.json?
- 维护者说明这是设计行为:live 配置文件由所选供应商配置生成,切换时会被重写。需要跨供应商保留的字段应放入共享配置/通用配置,而不是只写在本机 settings.json。
- enabledPlugins、hooks、statusLine 应该怎么保留?
- 在 cc-switch 的供应商编辑页找到共享配置/通用配置面板,使用“从当前供应商提取”把 enabledPlugins、hooks、statusLine 等字段提取出来,使其随供应商切换自动带走。
- 我找不到“编辑通用配置”在哪里。
- 有用户反馈可在 cc-switch 的 Claude Code 界面随便设置一个供应商,然后在该供应商设置中找到通用配置/共享配置面板,读取已配好的 settings.json 并保存为默认通用配置。
- Claude Desktop 和 Claude Code 的配置是不是同一个?
- 不是。issue 中指出 Claude Desktop 与 Claude Code 使用不同配置;cc-switch 主要管理 Claude Code CLI 的 ~/.claude/settings.json。如果只安装 Claude Desktop,可能不会自动生成该目录。
- 切换供应商后 VS Code 里的 claudecode.environmentVariables 没有变怎么办?
- 有 issue 提到需要开启 cc-switch 的相关写入功能;如果 VS Code 中单独写了插件配置,可能不会改写该配置。请确认 cc-switch 中对应同步/写入选项已开启。
- 可以用脚本自动恢复被清掉的字段吗?
- 有用户提供了临时 workaround:通过 Claude Code 的 PostToolUse hook 在工具调用后自动恢复 statusLine、permissions、hooks 等字段。但这不是官方最终方案,且切换后到第一次工具调用前仍有空窗期。
- Codex 切换后为什么要重新确认 Hooks trust 或 Sandbox?
- 因为切换 Provider 后相关配置可能被重写。有用户反馈即使使用 codex --dangerously-bypass-approvals-and-sandbox --dangerously-bypass-hook-trust 启动,切换后仍会再次确认。建议将需要保留的配置纳入 cc-switch 共享配置。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。