跳转到内容

settings.json 被代理接管覆盖导致插件配置丢失 - Claude Code

Quick fix

将 hooks、statusLine 等自定义字段放入「通用配置」面板,或升级至 v3.12.2+ 以修复旧版备份恢复逻辑。

报错原文
settings.json 文件会因为cc switch代理模式重置,导致plugin每次重启都是禁用,因为enabledPlugins 配置没了

cc-switch 的本地代理(接管)模式工作原理是接管 `~/.claude/settings.json`。在切换供应商或开启/关闭代理时,程序会写入供应商的配置以使代理正常工作。早期版本(v3.12.2 之前)在恢复备份时使用了旧快照,导致 `statusLine`、`permissions`、`enabledPlugins` 等自定义字段丢失。该问题在 v3.12.2 中通过重构 Proxy Takeover Restore Flow 得到修复。

然而,即使升级到最新版本,核心设计仍未改变:cc-switch 采用「以数据库模板为源全量覆盖 live 文件」的策略,而非字段级合并。这意味着,如果第三方工具(如 Orca)或用户手动在 `settings.json` 中写入了不属于任何供应商模板的顶层字段,在切换供应商时这些字段仍会被覆盖抹掉。维护者明确表示,曾尝试在 v3.11.0 实现字段级合并,但因引入复杂的状态冲突问题而在 v3.11.1 回滚。当前推荐的做法是将共享配置通过「通用配置」功能在不同供应商间传递。

  1. 升级 cc-switch 至 v3.12.2 或更高版本,以获取重构后的 Proxy Takeover Restore Flow,避免恢复旧快照导致的问题。

  2. 在 cc-switch 中编辑当前 Claude 供应商,进入「通用配置」面板。

  3. 点击「从当前供应商提取」,将磁盘上 `~/.claude/settings.json` 中的 `hooks`、`statusLine`、`permissions`、`enabledPlugins` 等自定义字段提取到通用配置中。

  4. 保存配置。确保在新建或切换供应商时勾选「写入通用配置」(通常默认已勾选),这样切换时即可保留插件等共享数据。

  5. 如果需要在开启代理时修改环境变量等配置,请先在 cc-switch 中关闭代理功能,修改完成后再重新开启,以确保配置正确同步。

ToolClaude Code
Version3.12.2 之前的版本受影响,3.12.2 及之后版本修复了备份恢复逻辑;但全量覆盖策略在 3.20.0 等版本中依然存在
PlatformsWindowsmacOSLinux

本页汇总自 15 个真实 issue

升级到最新版后,为什么我的 hooks 配置在切换供应商时还是会丢失?
最新版虽然修复了旧快照恢复的 bug,但底层仍采用全量覆盖策略。如果 `hooks` 等字段不在供应商配置或「通用配置」中,切换时就会被抹掉。请将这些第三方工具写入的字段提取到「通用配置」中。
开启代理后,为什么修改供应商的环境变量没有同步到 settings.json?
这是早期版本的已知问题。请尝试关闭 Claude 代理开关再重新开启,以触发配置更新。建议升级至 v3.12.2+ 以获得更稳定的代理同步体验。
关闭代理或重启电脑后,settings.json 里的配置被清空了怎么办?
这通常是因为代理关闭或服务重启时,恢复流程使用了旧的备份快照。升级至 v3.12.2+ 可解决此问题。若已是最新版,请检查是否因第三方工具写入的字段未加入「通用配置」而被覆盖。
为什么不直接修改代码,只覆盖 env 等代理相关字段,保留其他所有配置?
维护者表示曾在 v3.11.0 尝试过字段级合并方案,但引入了更复杂的状态冲突问题,因此在 v3.11.1 回滚。当前设计要求请求地址和 API Key 是供应商独有的,其他共享配置通过「通用配置」传递。

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