跳转到内容

ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY set - cc-switch

Quick fix

执行 claude daemon stop --any 停止残留 Claude 后台进程,然后确保 ~/.claude/settings.jsonenv 中只保留一种认证变量。

报错原文
Both ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY set · auth may not work as expected

cc-switch 在启动、切换供应商、故障转移或恢复会话时,会直接改写 `~/.claude/settings.json`(有时还涉及 `~/.claude.json`),用接管/代理所需的 `env` 字段整体覆盖用户配置。在 v3.11.0 曾尝试字段级合并,后因状态冲突在 v3.11.1 回滚为全量覆盖(见 #1570),因此 `hooks`、`enabledPlugins`、`spinnerVerbs` 等用户自定义字段会丢失。与此同时,`ANTHROPIC_AUTH_TOKEN` 的注入存在多个变体:对受管 Codex 供应商开启接管时 v3.16.2 会漏注入该字段(#3632、#4157),而切换认证方式或进入 Agent View 恢复会话时,Claude daemon 可能保留旧认证状态,导致 `ANTHROPIC_AUTH_TOKEN` 和 `ANTHROPIC_API_KEY` 同时存在,Claude Code 报 `Both ... set`。此外,切换已删除供应商时 `~/.claude.json` 中的旧 `env` 不会被清理,造成路由看似切换成功但实际仍走旧供应商(#1096)。

  1. 在终端执行 `claude daemon stop --any`,停止所有残留的 Claude 后台进程;该进程可能会在切换认证方式后继续持有旧状态。

  2. 打开 `~/.claude/settings.json`,确认 `env` 中只有一种认证变量。如果同时看到 `ANTHROPIC_AUTH_TOKEN` 和 `ANTHROPIC_API_KEY`,删除与当前供应商不匹配的一个;使用路由/托管供应商时可将 `ANTHROPIC_AUTH_TOKEN` 设置为 `PROXY_MANAGED`。

    // ~/.claude/settings.json
    {
    "env": {
    "ANTHROPIC_AUTH_TOKEN": "PROXY_MANAGED"
    }
    }
  3. 将需要保留的自定义字段(如 `hooks`、`enabledPlugins`、`permissions`)写入 cc-switch 的通用配置:编辑供应商 → 通用配置 → 从当前供应商提取,后续切换时勾选“写入通用配置”。不要直接编辑 `settings.json` 与 cc-switch 数据库冲突。

  4. 升级到 v3.16.3 或更高版本,修复 Codex/路由接管时漏注入 `ANTHROPIC_AUTH_TOKEN` 导致 Claude Code 提示登录的问题;若暂不能升级,在 `env` 中手动添加 `"ANTHROPIC_AUTH_TOKEN": "PROXY_MANAGED"`。

ToolClaude Code
Version未知
PlatformsWindowsmacOSLinux
这样强制用本地的了?
Claude Code 会先读 `~/.claude/settings.json`,再读 `~/.claude/settings.local.json`,深度合并后 `settings.local.json` 对同名键优先级更高;但 `statusline` 等部分配置在 `settings.local.json` 里可能不会生效,建议用 cc-switch 的通用配置传递共享配置。
有没有办法修复这个的,要是我来回切换模型岂不是每次都要重新设置一次配置文件?
升级到 v3.16.3 后,接管时会自动注入 `ANTHROPIC_AUTH_TOKEN` 占位符,切换模型或供应商无需再手动改 `settings.json`;对于自定义 hook/插件,使用通用配置可在供应商之间保留。

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