切换路由模式后 setting.json文件中用户添加的配置内容被覆盖丢失 Claude Code
Quick fix
将自定义环境变量添加到 CC-Switch 对应 Provider 的配置 JSON 中,而不是直接修改 Claude Code 的 settings.json。
Symptom
Section titled “Symptom”但是只要一切换到 路由模式 上面这段就消失了 被自动覆盖了 导致我设置失效CC-Switch 在切换路由模式或修改模型时,会重写 Claude Code 的 settings.json 文件中的 env 字段。由于程序在写回文件时未能保留用户手动添加的其他环境变量配置,导致诸如 DISABLE_AUTOUPDATER 等自定义设置被覆盖丢失。此外,关闭路由模式后,配置也会重置回开启路由模式前的状态。
停止直接在 Windows 下编辑 Claude Code 的 settings.json 文件来添加自定义环境变量。
打开 CC-Switch,找到你正在使用的 API 供应商(Provider)的配置界面,将需要自定义添加的环境变量内容直接放入该 Provider 的配置 JSON 内容中。
// CC-Switch Provider 配置 JSON{"env": {"DISABLE_AUTOUPDATER": "1","CLAUDE_CODE_ATTRIBUTION_HEADER": "0","CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"}}
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version3.16.3
PlatformsWindows
Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 为什么把配置写在通用配置段下面没有生效?
- 根据官方文档,这些环境变量设置只有放在 env 段下才会生效,但路由切换时 env 段会被自动覆盖清理。写在通用配置段下会被自动忽略,跟没写一样。
- 开启路由模式后如果需要调整配置,必须先关闭路由模式吗?
- 不需要。只要将自定义配置项写入 CC-Switch 对应 Provider 的配置 JSON 中,就可以避免路由切换 Provider 后配置被覆盖丢失的问题,无需反复开关路由模式。
- DISABLE_AUTOUPDATER 和 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 需要同时配置吗?
- 不需要。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 等同于设置 DISABLE_AUTOUPDATER、DISABLE_FEEDBACK_COMMAND、DISABLE_ERROR_REPORTING 和 DISABLE_TELEMETRY,单独配置前者即可,后者是多余的。
测试报504:Claude Code无法使用检查 cc-switch 是否已把 `glm-4.7` 模型映射读入代理;否则 Claude Code 会直接请求 glm 模型并返回 504。ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY执行 `claude daemon stop --any` 停止残留 Claude 后台进程,然后确保 `~/.claude/settings.json` 的 `env` 中只保留一种认证变量。ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY打开 `~/.claude/settings.json`,删除重复的 auth 环境变量,只保留当前供应商需要的 `ANTHROPIC_AUTH_TOKEN` 或 `ANTHROPIC_API_KEY`,保存后重启 Claude Code。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。