跳转到内容

settings.json 被全量重写,enabledPlugins 被清空 Claude Code

Quick fix

将需保留的 Claude Code 项目设置放入 .claude/settings.local.json,避免 cc-switch 覆盖用户级 settings.json 时丢失。

报错原文
但是只要一切换到 路由模式 上面这段就消失了  导致我设置失效  CC还自动升级 缓存也无法有效命中

该报告称 cc-switch 会以 provider 配置与数据库中的 common config 重新生成并整文件写入 `~/.claude/settings.json`。不属于 common config 白名单的 `statusLine`、`enabledPlugins`、`permissions`、`hooks` 及自定义 `env` 键可能不会被保存到该片段,因此在切换、同步或路由模式等写盘动作后静默丢失。

讨论中指出,3.17.0 到 3.18.0 的 switch 路径已加入部分同步,但 update、add、路由模式和启动同步等路径仍可能使用旧片段覆盖文件。评论者已提交 PR #5786 拟补齐这些路径,但原帖未显示该 PR 已合并或发布;因此不能将其视为已验证的正式修复。

  1. 若问题只需在特定项目中规避,在该项目仓库根目录创建 `.claude/settings.local.json`,保存需要跨 cc-switch 切换保留的设置。该文件是项目级 Local scope,cc-switch 不会写入它。

    // .claude/settings.local.json
    {
    "statusLine": {
    "type": "command",
    "command": "node ~/.claude/plugins/claude-hud/statusline.mjs",
    "padding": 0
    },
    "enabledPlugins": {
    "claude-hud@claude-hud": true
    },
    "skipDangerousModePermissionPrompt": true,
    "hooks": { ... },
    "permissions": { ... }
    }
  2. 切换或同步后检查 `~/.claude/settings.json` 中的自定义设置是否已丢失;对于多个项目,需要分别在各项目的 `.claude/settings.local.json` 中配置。

  3. 关注 issue #3631 中提到的 PR #5786 是否合并并发布;原帖尚未提供已发布版本可验证的根治方案。

ToolClaude Code
Version受影响:3.17.0 - 3.18.0(报告称非 switch 写盘路径仍可能受影响)
PlatformsWindowsmacOS
`~/.claude/settings.local.json` 能作为用户级设置的避难所吗?
不能。讨论说明不存在用户级 `.local` 变体;`.claude/settings.local.json` 仅在项目仓库根目录生效。
3.18.0 是否已修复 `statusLine` 丢失?
讨论称 3.18.0 仅在 switch 路径加入部分 autosync;update、add、路由模式和启动同步路径仍可能覆盖陈旧片段,原帖未确认正式发布的完整修复。
为什么自定义 `env` 键也会消失?
讨论中的源码分析称 common config 采用白名单序列化;报告列出的 `DISABLE_AUTOUPDATER`、`CLAUDE_CODE_ATTRIBUTION_HEADER` 等自定义键不会进入该片段。

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