跳转到内容

Missing API key.:Claude Desktop OpenCode Go

Quick fix

将上游认证字段从 ANTHROPIC_AUTH_TOKEN 改为 ANTHROPIC_API_KEY,使请求通过 x-api-key 发送。

报错原文
{"type":"error","error":{"type":"AuthError","message":"Missing API key."}}

Claude Desktop 的 OpenCode Go 预设未指定 apiKeyField,表单因而默认写入 ANTHROPIC_AUTH_TOKEN。cc-switch 看到该字段后,会向 OpenCode Go 的 Anthropic Messages 端点发送 Authorization: Bearer;但该端点只接受 x-api-key,因此返回 401 Missing API key。把字段名改为 ANTHROPIC_API_KEY 后,cc-switch 会按 Anthropic 语义发送 x-api-key。

同一机制也曾影响 Claude Code 代理模式,但维护者已确认认证头逻辑支持 ANTHROPIC_API_KEY→x-api-key、ANTHROPIC_AUTH_TOKEN→Bearer。Claude Desktop 的预设问题在 3.20.0、3.20.4 和 4.0.5 均有报告;截至这些 issue 的最新回复,PR #8056 仍在审阅中。

  1. 先完全退出 cc-switch,并备份其 SQLite 数据库。

  2. 在已有 Claude Desktop OpenCode Go 供应商的 providers.settings_config 中,仅将认证字段名从 ANTHROPIC_AUTH_TOKEN 改为 ANTHROPIC_API_KEY,API key 的值保持不变。

    ~/.cc-switch/cc-switch.db
    "ANTHROPIC_AUTH_TOKEN": "sk-***"
    "ANTHROPIC_API_KEY": "sk-***"
  3. 重新启动 cc-switch,再启动 Claude Desktop 并重试请求。已报告的验证结果是上游请求恢复为 HTTP 200。

  4. 不要从 OpenCode Go 预设重新新建供应商;在相关修复合并前,新建操作会再次写入 ANTHROPIC_AUTH_TOKEN。

ToolClaude Desktop
Version受影响版本:3.20.0、3.20.4、4.0.5
PlatformsWindowsmacOSLinux
同问,解决了吗?
已有临时解决办法:退出 cc-switch 并备份数据库后,把该供应商 settings_config 中的 ANTHROPIC_AUTH_TOKEN 改为 ANTHROPIC_API_KEY,再重启 cc-switch。正式修复 PR #8056 在最新回复时仍处于审阅中。
为什么同一个 API key 在 Claude Code 可用,在 Claude Desktop 却返回 401?
Claude Code 的 OpenCode Go 预设明确使用 ANTHROPIC_API_KEY,因此发送 x-api-key;Claude Desktop 预设未指定 apiKeyField,会默认使用 ANTHROPIC_AUTH_TOKEN 并发送 Authorization: Bearer,而 OpenCode Go 的 Anthropic 端点不接受该认证头。
改完认证字段后为什么又出现 X-Opencode-Session 错误?
issue 中有用户反馈,可在设置中添加对应请求头解决;原帖没有提供该请求头的确切值,因此无法给出更具体的配置。

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