Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

认证错误

Not logged in、Invalid API key、apiKeyHelper 失败、组织禁用 API Key 或订阅访问、OAuth 过期、MCP 服务器登录、AWS / Google Cloud / Microsoft Foundry 认证、Claude apps gateway 登录等错误的含义与处理。

这些错误表示 Claude Code 无法向 API 证明你是谁。随时运行 /status 查看当前生效的是哪个凭证。多个凭证同时存在时 Claude Code 如何选择,见认证优先级。错误消息措辞和版本要求以官方为准。

登录与 API Key

Not logged in

本会话没有可用的有效凭证(在 Claude Desktop 应用运行的会话里,如 Code 标签页或 Cowork,消息是 Authentication required · Sign in again to continue,要从应用里重新登录)。怎么办:运行 /login 用 Claude 订阅或 Console 账号认证;本应由环境变量认证时,确认在启动 claude 的 shell 里设置并 export 了 ANTHROPIC_API_KEY;无法交互登录的 CI 或自动化,配置一个启动时取 Key 的 apiKeyHelper 脚本;反复被要求登录时看认证优先级。

Could not resolve authentication method

会话到达 API 客户端时没有任何凭证。后台会话和云会话在 worker 启动时没有凭证就显示这条;交互、-p 和 Agent SDK 运行把同一情形报告为 Not logged in,只把这个字符串写进调试日志。怎么办:后台或云会话里出现而凭证其实已配置时,升级到 v2.1.176 或更高;确认 ANTHROPIC_API_KEY、CLAUDE_CODE_OAUTH_TOKEN 或云服务商凭证设置在启动 worker 的环境里,而不只是你的交互 shell 里;Agent SDK 见快速上手里的认证设置;在同一环境的交互会话里运行 /status 确认解析出的凭证来源。

Invalid API key

ANTHROPIC_API_KEY 环境变量或 apiKeyHelper 脚本返回了被 API 拒绝的 Key,或 Claude Code 在发送之前就拦下了来自 ANTHROPIC_API_KEY 的 Key(消息在 Fix external API key 之后会给出描述,如 Key 里含有非法字符)。怎么办:检查拼写、确认 Key 没在 Console 里被撤销;在同一 shell 运行 env | grep ANTHROPIC(PowerShell 用 Get-ChildItem Env:ANTHROPIC*)——direnv、dotenv 类 shell 插件和 IDE 终端可能从项目里的 .env 加载了你没显式设置的陈旧 Key;取消设置 ANTHROPIC_API_KEY 并运行 /login 改用订阅认证;Key 来自 apiKeyHelper 脚本时,直接运行脚本确认它在 stdout 打印的是有效 Key。

Your apiKeyHelper script is failing

Claude Code 运行了你 apiKeyHelper 设置里的命令但没拿到 Key;没有 Key 时请求带着占位凭证到达 API,被 401 拒绝。终端里的 Authentication 面板会指出是哪种情况(命令出错或超时,或输出不符合要求)。怎么办:在 shell 里直接运行 apiKeyHelper 配置的命令复现失败;命令报告会话过期时,向你的凭证提供方重新认证(如重新登录 SSO 或密钥库);修好命令,使其只在 stdout 打印 Key——单个可打印 ASCII 令牌、最长 16384 字符,并以退出码 0 结束;运行 /status 查看失败并确认 apiKeyHelper 就是当前生效的凭证来源。

Invalid request header value

Claude Code 要作为请求头发送的某个值里含有 HTTP 头不能携带的字符:换行、NUL 字节,或高于 U+00FF 的字符(如弯引号、零宽空格)。Claude Code 在发出任何东西之前就停止请求,并点名要修的变量或设置。怎么办:重新设置消息点名的变量或设置,在报告的位置附近重新键入字符,而不是再次从同一来源粘贴;ANTHROPIC_CUSTOM_HEADERS 要每行一个 Name: Value,重写消息指出的那一对;运行 /status 确认生效的凭证来源。

This organization has been disabled

Claude Code 在用一个来自已被禁用 Console 组织的陈旧 ANTHROPIC_API_KEY;有已保存的订阅登录时,该 Key 会覆盖它。· 之后的提示取决于你保存的凭证。怎么办:在当前 shell 取消设置 ANTHROPIC_API_KEY 并从 shell 配置里删除,重启 claude;消息说 Update or unset 时说明你没有可回退的已保存登录,要么取消设置并 /login,要么换成来自有效 Console 组织的 Key;之后运行 /status 确认当前凭证是订阅;没设环境变量仍报错,联系支持或换账号登录。

Your organization has disabled API key authentication

(需要 v2.1.169+。)你的 Console 组织管理员关闭了 API Key 认证,所以 API 拒绝 Claude Code 发送的 Key;· 之后的恢复提示随 Key 的来源而不同。怎么办:消息点名 ANTHROPIC_API_KEY 时,在当前 shell 取消设置并从 shell 配置或 .env 里删除,重启 claude;点名 apiKeyHelper 时从 settings.json 里删掉该设置;运行 /login 用 claude.ai 账号登录;之后运行 /status 确认当前凭证是订阅而不是 API Key;自动化确实需要 API Key 认证时,请组织管理员在 Console 里重新启用。

Your organization has disabled Claude subscription access

你的 Claude 组织不允许用订阅登录 Claude Code;用同一账号重新 /login 会得到同样的错误。这是服务端的组织设置,不能被本地设置、环境变量或 CLI 标志覆盖。怎么办:请管理员为你的组织启用 Claude Code 访问;改用 Console API Key 认证;你是管理员却看不到启用选项就联系 Anthropic 支持。同一区域还有「Routines are disabled by your organization's policy」:Team 或 Enterprise 组织的 Owner 在组织层面关闭了 routines,创建或运行时出现该错误。

Remote Control requires the Anthropic API

Remote Control 要求会话直接与 Anthropic API 通信,而本会话没有。第二句话说明是什么把会话引离了 Anthropic API(v2.1.219 之前只有第一句),消息会点名 CLAUDE_CODE_USE_* 服务商变量或 ANTHROPIC_BASE_URL 等原因。怎么办:取消设置消息点名的变量并重启会话,或从直接与 Anthropic API 通信的会话启动 Remote Control;shell 里没设就查看设置文件的 env 键(它把环境变量应用到每个会话);这条及其他 Remote Control 启动消息见 Remote Control 的故障排查。另有「Remote Control couldn't refresh your login」:Remote Control 连接依赖有效的登录,刷新失败时需要重新登录。

OAuth 登录

OAuth token revoked or expired

已保存的登录不再有效:令牌被撤销表示你在所有地方登出或管理员移除了访问;令牌过期表示会话中途的自动刷新失败。怎么办:运行 /login 重新登录;用 CLAUDE_CODE_OAUTH_TOKEN 环境变量认证时,Claude Code 在请求以 401 失败后仍继续发送你设的值,而不是改用已保存登录的令牌(/status 里显示为读作 CLAUDE_CODE_OAUTH_TOKEN 的 Auth token 行)——用 claude setup-token 生成新令牌并用它重启,或取消设置该变量并 /login。

API Error: 401 Invalid authentication credentials

API 认出了你凭证的格式,但拒绝了它背后的账号或组织。凭证最近被撤销、组织被禁用或移除了你的访问、或账号本身被停用时 Anthropic 都返回这条,所以不是令牌过期。怎么办:/status 显示有未标为「not in use」的 API key 行时,被批准的 ANTHROPIC_API_KEY 是当前凭证并优先于你的登录,/login 不会替换它——在 Console 里轮换该 Key,或用 unset ANTHROPIC_API_KEY(PowerShell 用 Remove-Item Env:ANTHROPIC_API_KEY)回退到订阅;/status 只显示你的登录时,运行一次 /login,凭证被撤销的话新登录会替换它;同一消息对同一账号反复出现,就联系支持。

Login expired

Claude Code 尝试续期已保存的 claude.ai 登录,OAuth 服务拒绝了存储的刷新令牌,所以 Claude Code 清除了已保存的凭证;之后每个模型请求在到达 API 之前就在本地以这条消息停止,因为只有 /login 能创建新凭证。怎么办:运行 /login 重新登录(不登录而重试每次都显示同样的消息);非交互模式下在同一环境里运行 claude、完成 /login、再重跑命令;无法交互登录的自动化改用 ANTHROPIC_API_KEY,或用 claude setup-token 生成长期令牌。

Failed to start OAuth callback server

通过浏览器登录(/login、claude auth login、claude setup-token)时,Claude Code 在 127.0.0.1 上开一个监听端口让浏览器把登录结果交回来;这条消息表示它打不开该端口,登录在浏览器窗口或登录 URL 出现之前就停止。怎么办:想立刻登录而不用本地监听——claude.ai 订阅用户在一台能登录的机器上运行 claude setup-token,把它打印的令牌设为本机的 CLAUDE_CODE_OAUTH_TOKEN,否则把 ANTHROPIC_API_KEY 设为 Claude Console 的 Key;想在本机用浏览器登录,Claude Code 必须能监听 127.0.0.1——在沙箱里运行就检查沙箱是否允许监听本地端口,或换一个未被占用的环境。

Claude login not accepted

你想启动云会话,服务器以 401 拒绝创建:它不接受这台机器发来的 Claude 登录,通常因为登录过期或被撤销。怎么办:运行 /login、完成登录,再启动会话。同一区域的「Artifacts need a claude.ai login」:会话里没有可用于制品的 claude.ai 登录,运行 /login 并选 Claude account with subscription(Anthropic Console account 选项不提供 claude.ai 登录)。

Your account is on hold

你登录背后的 Claude 账号被暂停。Claude Code 在尝试续期已保存登录并得知暂停时显示第一条消息,在你于浏览器完成的登录报告该状态时显示第二条;用同一账号重新登录不会消除消息,因为暂停是在账号上。怎么办:打开消息里的链接查看暂停详情或申诉;有另一个不受影响的 Claude 账号或 API Key 时,可以在问题解决期间继续工作:用那个账号 /login,或用 ANTHROPIC_API_KEY 设置 Key。

Anthropic profile login expired

Claude Code 通过一个 Anthropic 凭证 profile 认证,该 profile 保存的登录凭证已过期,且 profile 里没有 Claude Code 可用来续期的刷新凭证;Claude Code 在本地不重试地停止每个请求,因为重试会读到同样的过期凭证。怎么办:重新登录该 profile 后重试——在提供无密钥登录的机器上运行 /login 并选 Anthropic Console 账号(针对由无密钥 Console 登录或 Claude Platform CLI 的 ant auth login 写入的 profile),其他 profile 用创建它们的工具;管理员预置的 profile 凭证,请管理员签发新的;运行 /status 确认凭证来源和 profile 名;不想再用 profile 就取消设置 ANTHROPIC_PROFILE。

OAuth scope requirement

存储的令牌早于较新功能所需的权限范围。怎么办:运行 /login 获取带当前范围的新令牌,不需要先登出。

MCP 服务器与 claude.ai 连接器

claude.ai rejected the session token

claude.ai 连接器请求失败,因为 claude.ai 拒绝了你 Claude Code 登录里的令牌。被拒绝的是你的登录,不是连接器在 claude.ai 里自己的授权,所以重新授权连接器没用;/mcp 里该连接器显示 session token rejected。怎么办:运行 /login 重新登录;然后在 /mcp 里重连连接器,或运行 /mcp reconnect <名称>——登录之前重连只会让连接器停在同样的状态(/mcp 面板的 Reconnect 选项会报告 your claude.ai session token was rejected,而键入的 /mcp reconnect 形式即使令牌仍被拒绝也报告重连成功;v2.1.222 之前 Claude Code 把它标为需要认证,把你引向连接器自己的授权流程)。

MCP server needs you to sign in again

远程 MCP 服务器在会话中途的工具调用里拒绝了凭证,通常因为登录或令牌过期,或令牌缺少该工具需要的权限;工具调用失败,/mcp 把该服务器标为需要认证。怎么办:对你从 Claude Code 登录的服务器(含 claude.ai 连接器),登录过期或被撤销了,运行 /mcp、选该服务器、从它的菜单重新登录;对配置了 headersHelper 脚本的服务器,Claude Code 在显示这条之前已重新运行了 helper 并重试了一次——检查 helper 返回的是服务器接受的凭证,然后从 /mcp 重连(会再次运行 helper)。

MCP server URL is missing or not a valid URL

Claude Code 拒绝为某个远程 MCP 服务器开始 OAuth 登录,因为该服务器配置的 url 无法解析成 URL。怎么办:把该条目的 url 设为服务器的真实端点,或设置它的 ${VAR} 引用所指的环境变量,然后重新登录。

Issuer mismatch in authorization response

MCP OAuth 登录期间,授权服务器重定向回 Claude Code 时带的 iss 参数,与 Claude Code 从服务器 OAuth 元数据期望的签发者不一致;这一步签发者错误正是授权服务器混淆攻击的样子,所以 Claude Code 让登录失败而不是去交换令牌。怎么办:从 /mcp 再试一次;反复出现就报告给服务器运营者——修复在服务端,授权服务器必须在 iss 里返回与其元数据通告相同的签发者;服务器修好之前想连上,用 MCP_SDK_GENERATION=v1 启动 Claude Code(其运行时不做这项检查,但这会移除对混淆攻击的一层保护,所以优先服务端修复)。

Refusing to send credentials to non-https token endpoint

在 v2 运行时上,Claude Code 只向通过 HTTPS 提供、或位于 localhost、127.0.0.1、::1 的令牌端点发送 MCP OAuth 令牌请求;这条消息表示服务器的令牌端点两者都不是,Claude Code 在发送前就停了——这发生在浏览器登录之后,所以浏览器那一步成功而该错误随后出现。怎么办:让令牌端点走 HTTPS(例如把服务器放在终止 TLS 的反向代理或隧道之后,并让服务器通告 https:// 地址);想在不改服务器的情况下连接,用 MCP_SDK_GENERATION=v1 启动(它的运行时不适用这条规则,用明文 HTTP 发令牌请求,且持续到你退出、对每个服务器都生效;v1 运行时同样跳过签发者检查,所以优先让端点走 HTTPS)。

云服务商认证

AWS credentials expired or invalid

你的 AWS 会话令牌过期或被拒绝;这条出现在 Claude Platform on AWS 或 Mantle 端点的 401 上(这些服务商这样报告过期的安全令牌)。中间的操作提示随你的设置而变,稳定的部分是开头的 AWS credentials expired or invalid。怎么办:提示说凭证由本环境管理时,启动 Claude Code 的应用拥有该凭证,下面的步骤不适用,重试或联系管理员;设置了 awsAuthRefresh 时,在另一个终端运行消息里点名的命令(如 aws sso login --profile myprofile)并完成浏览器登录,然后重试;否则刷新你自己用的 AWS 凭证(SSO 登录、访问密钥、API Key 或代理令牌)。

AWS authentication failed

AWS 服务商返回了 403,或 Bedrock 返回了 401。Bedrock 把过期的安全令牌报告为 403,但 403 也用来报告授权拒绝(如缺少 IAM 权限的 AccessDeniedException),Claude Code 无法区分这两种原因。怎么办:先刷新 AWS 凭证以排除过期(运行消息点名的 awsAuthRefresh 命令,或刷新 SSO 登录、访问密钥、API Key 或代理令牌);凭证有效就确认 IAM 配置里的权限已附加到你使用的身份上。

Google Cloud credentials expired or invalid

你用于 Google Cloud Agent Platform 的凭证过期或被拒绝:请求返回 401(Agent Platform 这样报告凭证过期)。怎么办:用应用默认凭证认证时,运行消息点名的 gcpAuthRefresh 命令,或 gcloud auth application-default login 并完成登录后重试;经 LLM 网关并设置了 CLAUDE_CODE_SKIP_VERTEX_AUTH 时,刷新 ANTHROPIC_AUTH_TOKEN 里的网关令牌。

Google Cloud authentication failed

Agent Platform 返回 403(它用 403 表示授权拒绝,而不是凭证过期)。通常是你认证所用的身份缺少 IAM 权限,或模型没有为你的项目启用。怎么办:确认 IAM 配置里的角色已授予你认证所用的身份;确认模型已为你的项目启用(见请求模型访问)。v2.1.273 之前 Agent Platform 的 403 显示的是通用的 Please run /login 或 Failed to authenticate,而它们刷新不了 Google Cloud 凭证。

Microsoft Foundry authentication failed

Microsoft Foundry 返回 401 或 403:请求上的 Azure 凭证被拒绝,或其背后的身份没有访问 Foundry 资源的权限;/login 无法生成 Azure 凭证。怎么办:刷新你配置的凭证——轮换 ANTHROPIC_FOUNDRY_API_KEY、生成新的 ANTHROPIC_FOUNDRY_AUTH_TOKEN,或运行 az login 让默认的 Microsoft Entra 凭证链重新登录;凭证有效就确认该身份有访问 Foundry 资源的权限。

Could not load AWS or Google Cloud credentials

Claude Code 无法从运行它的这台机器上的 AWS 凭证提供链或 Google 应用默认凭证里取得可用凭证,所以没有请求到达你的云服务商;它清除缓存的凭证并重试两次后才显示这条。怎么办:运行你的服务商登录命令(如 aws sso login --profile myprofile 或 gcloud auth application-default login)后重试,并按「Bedrock、Agent Platform 或 Foundry 凭证无法加载」的步骤在 Claude Code 之外确认凭证;· 之后的详情读作 AWS default-chain credential resolve timed out 时是链挂住而不是失败,按下一条处理。

AWS default-chain credential resolve timed out

AWS 默认凭证提供链在 60 秒内没有产出凭证,所以 Claude Code 停止解析并让请求失败;这是上一条的原因之一,失败发生在本地凭证解析阶段,请求从未到达 Bedrock 等服务。怎么办:在同一 shell、同一 AWS_PROFILE 下运行 aws sts get-caller-identity,若它也挂住就修 profile(交互式提示的 credential_process 命令是常见原因);启动 Claude Code 前先完成登录步骤(如 aws sso login --profile myprofile);链确实运行需要超过 60 秒的交互登录(如经 aws-vault 这类包装器的带 MFA 的 SSO),用 CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS 调高(毫秒)。

Bedrock setup verification timed out waiting for AWS

Bedrock 设置向导做凭证验证时对 AWS 的某次调用(如凭证查找或身份检查)没在 60 秒限制内完成,向导停止等待并让验证步骤失败(数字反映你的限制)。怎么办:在同一 shell 运行 aws sts get-caller-identity,若也挂住,停滞在 Claude Code 之外(你的网络、代理或 AWS profile 里的凭证 helper),先修那个;打开向导前先完成任何交互登录;凭证 helper 确实需要更久来提示你时,用 CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS 调高。

Claude apps gateway

Cloud gateway session expired

你通过 Claude apps gateway 登录,这台机器上保存的网关会话已过期且无法续期,或网关不再接受它(例如网关的 JWT 密钥被替换之后)。怎么办:在会话里运行 /login 并完成浏览器登录;非交互启动则在同一环境里启动 claude、运行 /login,再重跑命令。

Sign-in timed out while waiting for you to continue

Claude apps gateway 登录期间,网关点名了登录的账号,Claude Code 在保存凭证前请你确认;你让确认一直开着、超过了该登录自己的有效期,而网关没有签发刷新令牌。怎么办:再次运行 /login,在登录过期之前确认账号。

Gateway refused the request

你通过 Claude apps gateway 登录,一个请求返回 403:网关或其背后的上游拒绝了它。重新登录改变不了拒绝,所以消息把你指向网关管理员。怎么办:请网关管理员查这个请求(API Error: 尾部带着网关返回的拒绝信息);管理员侧:网关上的访问控制规则返回的 403 会在审计日志里记录原因,上游的授权拒绝按「上游错误消息」透传。v2.1.273 之前网关会话上的 403 显示通用的 Please run /login 或 Failed to authenticate,重新登录也消除不了拒绝。