跳转到内容

切换后配置丢失:Claude Code / Codex / WSL 路径核对

Quick fix

切换供应商会重写 settings.json,请把 hooks/statusLine/enabledPlugins 等字段放入“通用配置/共享配置片段”,不要只写在本地文件里。

报错原文
切换 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" 时可能被静默跳过。这些不是同一根因,但都表现为“配置切换后不生效或被覆盖”。

  1. 确认你使用的是 Claude Code CLI,而不是只安装了 Claude Desktop。Claude Code 通常读取 ~/.claude/settings.json;Windows 原生为 %USERPROFILE%\.claude\settings.json,WSL 内为 /home/<用户名>/.claude/settings.json。

  2. 在 cc-switch 中打开对应供应商的“编辑供应商”界面,找到共享配置/通用配置面板,使用“从当前供应商提取”或类似入口,把 enabledPlugins、hooks、statusLine、permissions 等需要跨供应商保留的字段提取为共享配置。

  3. 保存后重新切换供应商,然后检查 live 配置文件是否保留了这些字段。

    ~/.claude/settings.json
    {
    "env": { },
    "enabledPlugins": { },
    "hooks": { },
    "statusLine": { }
    }
  4. 如果切换后仍不生效,检查 cc-switch 版本。第三方代理占位符残留导致切换无效的问题在 v3.16.2 相关修复中被提及;请升级到 v3.16.2 或更新版本后重试。

  5. 如果使用 Codex,并发现切换后需要重新确认 Hooks trust、Sandbox 或项目 trust_level,请把这些项目级配置纳入 cc-switch 可保留的共享配置;否则每次切换后可能需要重新确认。

ToolClaude Code / Codex
Version未知
PlatformsWindowsmacOSLinux
为什么 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。本站不分发任何软件。