删除供应商后托盘仍显示且切换静默失败 - cc-switch
Quick fix
原帖尚未提供可验证的解法;删除供应商后托盘条目残留,且 ~/.claude.json 中残留 env 会让切换看似成功实际无效,可关注 issue #1096 进展。
Symptom
Section titled “Symptom”删除一个供应商后,托盘菜单中仍然显示该供应商的条目。点击该条目后 CC Switch 静默"切换成功",没有任何错误提示,但实际写入 `~/.claude/settings.json` 的配置不可预期,导致后续切换到其他供应商(如 Claude Official)后,Claude Code 仍然使用已删除供应商的 API。该问题在原帖中被拆分为三个层面。第一(主要问题):删除供应商后托盘菜单没有刷新,已删除的条目仍显示在列表中;点击后 CC Switch 尝试从数据库查询一个不存在 provider 的 settings_config,行为不可预期且没有任何错误日志,日志仅显示 "切换到Claude供应商: xxx"。第二(次要问题):CC Switch 通过写入 ~/.claude/settings.json 的 env 字段切换供应商,但已运行的 Claude Code 进程不会热加载该文件,环境变量在进程启动时就已固定,切换后不重启 Claude Code 实际仍使用旧供应商的 API。第三(报告者定位的根因):Claude Code 同时从 home 目录根下的 ~/.claude.json 读取 env 配置,而 CC Switch 的 write_live_snapshot 只覆盖 ~/.claude/settings.json,导致 ~/.claude.json 中残留的 ANTHROPIC_AUTH_TOKEN / ANTHROPIC_BASE_URL 旧值仍然生效,即使 settings.json 已正确写入 "env": {},切换也"看起来成功了但实际无效"。该 issue 仍为 open 状态,尚无维护者确认修复或合入补丁。
原帖尚未提供可验证的解法,issue #1096 仍处于 open 状态,建议先关注该 issue 的后续进展。
以下为报告者提出的期望行为(未经维护者确认,仅供参考):删除供应商后立即刷新托盘菜单移除对应条目;若点击了已删除条目应提示"该供应商已被删除"并跳过切换。
报告者建议的临时排查方向(未经验证):检查 home 目录根下的 ~/.claude.json(注意与 ~/.claude/settings.json 路径不同),手动清理其中 env 字段里残留的 ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_BASE_URL,然后重启 Claude Code,使新供应商配置真正生效。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 1 个真实 issue
- 为什么切换回 Claude Official 后 Claude Code 仍然显示旧供应商的 base URL?
- 报告者排查后认为根因是 Claude Code 同时从 ~/.claude.json 读取 env 配置,而 CC Switch 只覆盖 ~/.claude/settings.json,~/.claude.json 中残留的旧 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN 仍然生效。
- 切换供应商后需要重启 Claude Code 吗?
- 需要。原帖指出 CC Switch 通过写入 ~/.claude/settings.json 的 env 字段切换供应商,但已运行的 Claude Code 进程不会热加载该文件,环境变量在进程启动时已固定,不重启则实际仍使用旧供应商的 API。
- 删除供应商后为什么托盘菜单里还能看到它?
- 这是原帖报告的主要 bug:删除操作后托盘菜单未刷新,已删除条目仍然展示,点击后 CC Switch 查询不存在的 provider 且静默失败、无任何错误提示。该问题尚无已确认的修复。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。