跳转到内容

切换供应商后 settings.json 配置丢失 - CC Switch

Quick fix

使用「共享配置片段」功能提取并保留 hooks/statusLine 等自定义字段,切换时自动带走。

报错原文
切换后发现 hooks 字段被完全覆盖/丢失,相关插件、自动化脚本、hooks 行为全部失效

CC Switch 在切换供应商时会用所选供应商的配置重写 `~/.claude/settings.json`,这是有意的设计行为。由于供应商配置只包含 env、model 等供应商相关字段,写入时只保留 cc-switch 内置字段,用户手工添加的 hooks、enabledPlugins、statusLine 等字段会被完全覆盖或清空。该问题在 v3.8.3 至 v3.19.2 等多个版本中长期存在。v3.11.0 曾引入「部分字段合并」机制,但在 v3.11.1 中被回退(commit `859f4137`),恢复了完全覆盖模式。维护者确认这是设计行为,推荐使用「共享配置片段」功能来保留共有数据。此外,部分用户在用过第三方镜像/路由后无法切换供应商,可能与 v3.16.2 修复的「代理占位符 backup/restore 循环」有关——之前若代理停止时把占位符残留在 Live 配置中,会导致切换变成空操作。

  1. 在 CC Switch 中编辑当前供应商,找到「共享配置」面板。

  2. 点击「从当前供应商提取」,将 enabledPlugins、hooks、statusLine 等共有字段提取为共享配置。

  3. 保存后,切换到其他供应商时,共享配置会自动合并写入 settings.json,自定义字段不再丢失。

  4. 如果使用 VSCode 且切换不生效,检查 CC Switch 设置中是否开启了「写入通用配置」选项。若 VSCode 中单独写了插件配置,该功能不会改写插件配置,需确保不单独写插件配置或手动同步。

  5. 如果使用 Codex 且 trust_level 等项目相关配置在切换后丢失,目前需在每次新项目首次确认后重新提取共享配置,或使用 PostToolUse hook 自动恢复。

  6. 临时方案:使用 Claude Code 的 PostToolUse hook 自动恢复丢失的字段。创建恢复脚本并在 settings.json 中添加 hook 条目,每次工具调用后自动补回缺失字段。

ToolClaude Code / Codex
Version3.8.3 - 3.19.2(受影响版本范围)
PlatformsWindowsmacOSLinux
切换供应商后 settings.json 里的 statusLine 配置消失了怎么办?
这是 CC Switch 的设计行为,切换时会重写 settings.json。请使用「共享配置片段」功能:编辑供应商 → 共享配置面板 → 「从当前供应商提取」,即可把 statusLine 等共有字段随切换自动带走。
原始 settings.json 被覆盖后还能找回吗?
可以。CC Switch 首次运行时会把所有配置读取到 default 供应商中,原始配置完整保存在首次启动时导入的默认供应商中,可随时找回。
在 VSCode 中切换供应商后 claudecode.environmentVariables 没有变化怎么办?
检查 CC Switch 设置中是否开启了「写入通用配置」功能。如果 VSCode 中单独写了插件配置,该功能不会改写插件配置;不单独写插件配置时功能是有效的。
CC Switch 界面的 >_ 按钮打开的终端里 Claude 不可用怎么办?
内置终端的 shell 环境可能与常用终端不同,node/claude 的路径可能未配置。建议直接从系统终端(PowerShell、iTerm2 等)运行 claude,CC Switch 会将配置写入 settings.json,系统终端可以正常读取到。
提示「Claude 配置文件不存在」怎么办?
CC Switch 管理的是 Claude Code CLI 的配置目录(如 Windows 的 %USERPROFILE%\.claude\settings.json),不是 Claude Desktop。请确认 Claude Code CLI 已安装并在终端运行过一次 claude 命令以生成 ~/.claude 目录。如果使用 WSL,CC Switch 的配置文件目录需指向 WSL 的 .claude 目录。
切换供应商后 enabledPlugins 被设为 null 导致插件全部禁用怎么办?
v3.11.1 回退了部分字段合并机制导致此问题。可通过通用配置(共享配置片段)传递插件数据,或使用代理模式(代理模式下切换不写入 live 配置,不触发此问题)。
Codex 的 trust_level 等项目相关配置在切换后丢失怎么办?
trust_level 与项目相关,切换供应商时会被替换。目前采用共享配置片段的话,每启动一个新项目需提取一遍。也可考虑使用 PostToolUse hook 自动恢复。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。