跳到正文

CC-021:401 Invalid API Key format(Key 含不可见字符)


问题现象

API Key 已写入配置,目视检查看起来正确,但请求仍返回以下错误之一:

Invalid API Key format
API Error: 401 Unauthorized

重新填写 Key 后问题依然复现。相同提示也可能来自 Key 与 Base URL 不属于同一服务,不应只按不可见字符处理。


根因分析

用户从 PDF / 网页 / 截图获取 Key
  → 复制过程中混入不可见字符(零宽空格、不换行空格、\r 换行符等)
  → 或 OCR 识别将相似字符误读(0/O、1/l/I)
  → 写入环境变量时字符串被污染
  → API 服务端对 Key 格式校验失败 → 401 / Invalid format

常见污染来源:

来源典型污染字符
从 PDF 复制零宽空格(U+200B)、不换行空格(U+00A0)
从网页复制HTML 实体残留、换行符
截图 OCR 识别字符误识别(如 0Ol1
粘贴到终端末尾混入 \r(Windows 换行符)

这是一个可能原因,不是官方对所有 401 的统一根因。先用 /status 核对最终域名和活动配置来源。


修复步骤

第一步:检测 Key 是否含有不可见字符

以下命令只报告长度和是否含空白/控制字符,不打印 Key 本身:

python3 -c 'import os; v=os.getenv("ANTHROPIC_API_KEY", ""); print({"set": bool(v), "length": len(v), "has_whitespace": any(c.isspace() for c in v), "has_control": any(ord(c) < 32 for c in v)})'

第二步:重新获取干净的 Key

如果 Base URL 是 Anthropic 官方端点,先从 Anthropic Console 进入当前 API Key 管理页重新复制或轮换 Key;如果是第三方网关,只能在该网关自己的正式控制台管理 Key。不要依赖可能变化的深层设置 URL,也不要混用两边的密钥。

第三步:重新写入环境变量

# 编辑配置文件
nano ~/.zshrc   # macOS/Linux,或对应的 ~/.bashrc
 
# 删除旧值后,粘贴从对应控制台复制的新值
export ANTHROPIC_API_KEY='sk-xxx'
 
# 使配置生效
source ~/.zshrc

第四步:验证

重新运行上面的非回显检查,然后用 claude doctor/status 核对配置。若真实 Key 曾进入截图、剪贴板同步、在线 JSON 校验站或公共日志,应立即在对应平台轮换,而不只是重新粘贴。


预防措施

做法避免的问题
始终从 Console 的复制按钮获取 Key避免手打或 OCR 引入字符错误
使用 shell 正常引号并避免把 Key 写入命令历史降低特殊字符解析与泄露风险
使用不回显内容的检查在不暴露 Key 的前提下发现空白或控制字符

资料来源:Claude Code 环境变量参考 · Anthropic Console API Keys · 配置诊断(2026-07-26 核对)