切换供应商后 settings.json 配置丢失(cc-switch)
Quick fix
把 enabledPlugins、hooks 等通用字段提取到「通用配置」并在各供应商勾选写入;v3.12.2 已修复代理接管下通用配置丢失的 BUG。
Symptom
Section titled “Symptom”原本有几十行配置, 还有配置好的hook, 现在就剩7行了cc-switch 切换供应商时会按所选供应商的配置整体重写 ~/.claude/settings.json,这是有意的设计(README FAQ 有说明),不属于供应商配置的字段(如 enabledPlugins、hooks、statusLine、includeCoAuthoredBy)若未放入「通用配置」就会被丢弃。早期版本(如 v3.12.1 开启代理接管时、3.11.0)还存在通用配置写回失败的 BUG;另有用户发现「从当前供应商提取」按钮实际读取的是数据库记录而非磁盘上的 settings.json,导致手动加的字段提取不到。此外,Codex 的 ~/.codex/config.toml 也会受到同样的覆盖影响。
打开「编辑供应商」→ 通用配置面板 → 点击「从当前供应商提取」,把 enabledPlugins、hooks、statusLine 等共有字段提取进通用配置
// ~/.claude/settings.json{"enabledPlugins": {"frontend-design@claude-plugins-official": true,"superpowers@claude-plugins-official": true,"code-review@claude-plugins-official": true,"typescript-lsp@claude-plugins-official": true,"gopls-lsp@claude-plugins-official": true,"pyright-lsp@claude-plugins-official": true},"includeCoAuthoredBy": false}在每个供应商上勾选「写入通用配置」(默认勾选),切换时这些字段会随切换自动写入
如果开启了代理接管且丢失通用配置,升级到 v3.12.2(该版本修复了代理下通用配置写回失败的 BUG)
如果已经丢失,原始配置保存在首次启动时导入的默认供应商中,可从中找回
如果 settings.json 的内容在点击保存后仍与界面不一致,检查是否开启了本地代理接管(地址为 127.0.0.1),第三方代理软件可能拦截了写入
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 29 个真实 issue
- #18codex切换到同时修改vscode里的setting
- #182切换失败,请检查配置
- #258gemini 配置无效
- #582[BUG] 配置目录
- #696更改了配置文件目录,还是会在 $HOME 下生成 .cc-switch 目录
- #1184昨天辛苦装一堆claude code插件,切换一下配置全没了。
- #1236cc-switch 切换时覆盖了claude code的 settings.json,丢失了很多配置。如何解决?
- #1354配置个供应商后,启动供应商,会将Claude的settings.json文件内的其他内容都清空,只保留env内模型相关的配置
- #1454[BUG反馈] 版本3.12.1 claude 丢失settings.json配置
- #1625怎么样在 zellij 或者 tmux 分屏软件中启用 不想要每次都要重新开启
- #1706settings.json中的插件启用状态丢失
- #1783提供商配置好后claude code 无法使用
- #1884手动修改~/.claude/settings.json时,会导致当前ccswitch当前模型配置也会被改了
- #1907[Bug] hooks in ~/.claude/settings.json get randomly deleted when switching nodes
- #1995[FEATURE] 切换供应商之后 , 安装的插件没有自动启动
- #2109[Bug] 'Extract Common Config' extracts from provider DB, not current settings.json — hooks/statusLine lost on switch
- #2261feat: 添加 Zed 编辑器配置支持
- #2462切换配置时settings.json内容顺序会随机变化, 导致出现git diff
- #2935切换路由状态失败
- #2992Claude settings.json overwrite drops enabledPlugins and hooks
- #3265Database files and .cc-switch directory lack explicit permission restrictions
- #3418切换模型之后对话不能保留
- #4061claude 配置文件不存在
- #4065切换claude code配置信息,会修改掉~/.claude/settings.json中enabledPlugins列表
- #4066claude 桌面 cowork描述回滚
- #4124ccs经常会自动覆盖provider
- #6345CC Switch v3.19.2 版本为啥cc-switch中保存的 key 变成掩码
- #6964编辑当前供应商:live 读取失败静默回退 DB 且允许保存;live 到达前的输入被 reset 吞掉
- #7614claude.json 被cc switch 强制恢复
- 切换供应商之后我的插件配置怎么不见了?
- CC Switch 使用「通用配置片段」功能,在编辑供应商的通用配置面板里点击「从当前供应商提取」,把 enabledPlugins 等通用数据提取到通用配置中,之后新建或切换供应商时勾选「写入通用配置」即可自动同步。
- 这是设计问题还是 bug?能不能只修改 env 不动 enabledPlugins?
- 这是有意的设计行为(README FAQ 有说明),live 配置文件由所选供应商配置生成、切换时会被重写;通用配置是官方提供的保留通道。
- 切换模型后对话不能保留,怎么办?
- Claude Code 启动时读一次 env、运行中不热重载,env 变化后会重新初始化会话;原对话仍在 ~/.claude/projects/<cwd>/ 下,可用 claude --resume 接续。
- 修改了配置目录,为什么 settings.json 还在默认目录生成?
- settings.json 里记录了 cc-switch 的路径,必须保存在默认位置,否则会有逻辑问题。
- 保存后 key 变成掩码字符,看不到原始值,是有意的设计吗?
- 开启本地路由接管时,后端会把配置文件里的凭据字段替换成掩码字符串,真实 key 只留在 cc-switch 的数据库里。
- 手动修改 settings.json 后,cc-switch 里当前供应商配置也被改了,正常吗?
- 这是当前的设计思路,为保证 live 配置与 cc-switch 状态一致;建议先复制一份配置再修改,避免直接改动当前生效配置。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。