- 要将您自己机器上的 Claude Code 连接到现有网关,请参阅将 Claude Code 连接到 LLM 网关
- 有关 Claude Code 发送到网关的内容以及要转发的内容,请参阅网关协议参考
前置条件
要完成推出,您需要:- 在您的基础设施上部署的网关,在您将分发给开发者的确切地址上提供 HTTPS,而不是重定向到它的地址,并配置为将 Claude 模型名称路由到您的提供商
- 网关转发的提供商凭证:
- 对于 Anthropic API:来自 Claude 控制台的 API 密钥
- 对于云提供商:具有模型访问权限的云凭证。请参阅 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 页面上的前置条件
- 一种向开发者机器交付设置文件的方式,例如 MDM 或配置管理
- 如果您还没有,设置如何到达设备比较了各种选项
网关要求
无论哪种产品提供网关,它必须:- 接受支持的 API 格式:API 格式表中的格式之一。下面的推出步骤假设 Anthropic Messages API 位于
POST /v1/messages,大多数网关都提供此格式 - 流式传输响应:按到达时传递服务器发送的事件,而不是缓冲整个响应
- 路由 Claude 模型名称:将开发者使用的每个名称映射到上游模型。Claude Code 在每个请求中发送模型名称,例如
claude-sonnet-4-6;在大多数网关产品中,映射是网关自己配置中的模型列表或路由表 - 转发标头和正文不变:在两个方向上传递
anthropic-beta、anthropic-version和请求正文;功能传递表将每个映射到没有它就会中断的功能 - 返回未修改的上游错误:Claude Code 的自动恢复与错误措辞匹配,因此在网关自己的信封中包装错误会破坏它
- 豁免路径免受请求正文 WAF 检查:Claude Code 提示包含源代码和 XML 样式标签,与跨站脚本正文规则匹配;网关前面的 WAF 在真实会话中返回
403,而短测试请求通过
GET /v1/models 以便 Claude Code 可以使用模型发现从您的网关填充模型选择器。
推出步骤
推出分为五个步骤,每个步骤都有一个检查点: 这些步骤涉及三个不同的凭证,检查点用占位符命名它们,以便您可以在出现问题时判断哪个有问题:| 凭证 | 谁持有它 | 检查点中的占位符 |
|---|---|---|
| 提供商凭证 | 网关,它将其转发给上游提供商 | 在网关上配置;从不出现在客户端命令中 |
| 网关管理凭证 | 您,如果您的网关产品为其管理或测试界面颁发一个 | <gateway-key> |
| 开发者密钥 | 每个开发者,由网关在颁发开发者凭证中颁发 | <developer-key> |
确认网关路由您的模型
您的网关应该已经配置了您的提供商凭证,在其基础 URL 上侦听,并将请求转发到您的提供商的 API。使用最小请求测试路径是否端到端工作,替换来自您的部署的两个值:<gateway-key>是任何让您现在调用网关的凭证:管理密钥、测试密钥或您自己的开发者密钥(如果您已经颁发了一个)。并非每个网关产品都有单独的管理凭证;如果您的没有,请先在颁发开发者凭证中为自己颁发开发者密钥model是您的网关配置为路由的 Claude 模型名称。示例使用claude-sonnet-4-6;替换为您配置的名称
- Bash 或 Zsh
- PowerShell
content 字段的 200 意味着网关以该模型名称到达了提供商。404 意味着该名称在网关处未路由;来自提供商的 401 意味着网关的提供商凭证错误。
对网关路由配置中的每个 Claude 模型名称重复请求一次。网关不路由的名称会向选择它的任何开发者返回 404,因此在推出前测试每个名称。
避免在重定向后提供网关。重定向可能会在推理请求上丢弃请求正文或剥离凭证标头,模型发现将任何重定向视为失败,因此凭证无法泄露到重定向目标。
颁发开发者凭证
每个开发者需要自己的网关密钥来进行身份验证。按照您的产品的凭证管理文档在网关处为每个开发者创建凭证。 使用与确认网关路由您的模型相同的请求确认新颁发的密钥对网关有效,将<gateway-key> 替换为新的 <developer-key>:
- Bash 或 Zsh
- PowerShell
content 字段的 200 意味着开发者密钥到达网关,网关转发它。当前一步成功时,这里的 401 意味着开发者密钥错误或尚未在网关处生效。
为每个开发者颁发一个密钥而不是共享密钥是使每个开发者使用归因和个人离职工作的原因。保存密钥的环境变量取决于网关读取的标头。对于在 Authorization: Bearer 标头中检查凭证的网关,开发者在 ANTHROPIC_AUTH_TOKEN 中设置他们的密钥。对于从 x-api-key 标头读取密钥的网关,开发者改为设置 ANTHROPIC_API_KEY;凭证表涵盖了映射。
针对网关测试 Claude Code
在分发任何内容之前,使用推出将交付的相同配置自己通过网关运行 Claude Code。直接在终端中键入这些,而不是在.env 或设置文件中;它们仅在此终端会话中持续,因此关闭它会将您的机器返回到其正常配置。如果您的网关读取 x-api-key 标头,请使用 ANTHROPIC_API_KEY 而不是 ANTHROPIC_AUTH_TOKEN:
- Bash 或 Zsh
- PowerShell
/v1/messages 路径的 POST,状态为 200。Claude Code 附加查询字符串,例如 ?beta=true,因此匹配路径,而不是完整 URL。两条失败消息指向不同的方向:
Not logged in:检查网关日志以区分两个原因。如果它是空的,没有凭证到达会话,没有请求离开机器;在您测试的 shell 中重新运行导出。如果它显示在401正文中带有x-api-key的被拒绝请求,网关期望密钥在该标头中;切换到ANTHROPIC_API_KEYFailed to authenticate. API Error: 401意味着凭证被发送并被拒绝,网关日志说明了在哪里:命名api.anthropic.com或您的提供商端点的401意味着网关到达了上游但其提供商凭证被拒绝,因此开发者密钥有效,网关持有的提供商凭证错误或是占位符
ANTHROPIC_BASE_URL 不指向网关。
分发配置
每个开发者机器都需要网关地址和凭证。您可以通过托管设置集中分发它们,以便开发者不配置任何内容,或者手动向开发者提供值以自己设置。要分发的内容
无论您选择哪条路径,都适用相同的变量集。大多数推出只需要ANTHROPIC_BASE_URL 和凭证;当您的网关设置需要时包括条件行。
| 变量或设置 | 它的作用 | 包括时间 |
|---|---|---|
ANTHROPIC_BASE_URL | 将 Claude Code 的 API 请求发送到网关而不是 api.anthropic.com | 总是 |
apiKeyHelper,或 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY 中的凭证 | 对网关的每个请求进行身份验证。助手运行命令来获取密钥;变量保存静态密钥,分别作为 Authorization: Bearer 和 x-api-key 发送 | 总是;三个中的一个 |
ANTHROPIC_CUSTOM_HEADERS | 向每个 API 请求添加额外的 HTTP 标头 | 您的网关在每个请求上需要租户或路由标头 |
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY | 在启动时查询网关的 /v1/models 并将返回的名称添加到 /model 选择器 | 您的网关提供 /v1/models 并且您希望开发者的选择器从中填充 |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS | 停止 Claude Code 发送预发布功能标头和正文字段 | 您的网关转发到拒绝 beta 字段的 Bedrock 或 Vertex 上游;请参阅网关要求 |
ANTHROPIC_MODEL 或 ANTHROPIC_DEFAULT_HAIKU_MODEL | 设置 Claude Code 为主会话和后台流量请求的模型名称 | 您的网关路由与 Claude Code 默认值不匹配的模型名称,或您将后台功能路由到不同的模型。在网关处路由覆盖名称和 Claude Code 的默认名称,因为某些子调用可以请求默认名称,无论覆盖如何 |
ANTHROPIC_BEDROCK_BASE_URL、ANTHROPIC_VERTEX_BASE_URL、ANTHROPIC_FOUNDRY_BASE_URL 或 ANTHROPIC_AWS_BASE_URL 以及该提供商的变量 | 通过网关将 Claude Code 指向网关。Bedrock 和 Vertex 也切换到这些提供商的本机请求格式 | 您的网关前置 Bedrock、Vertex、Foundry 或 AWS 上的 Claude 平台;请参阅 API 格式 |
通过托管设置分发
通过托管设置文件的env 块交付变量,由 MDM、注册表策略或配置管理推送:
env 块。托管的 ANTHROPIC_BASE_URL 被强制执行,不能被开发者的 shell 导出覆盖,因为 Claude Code 在进程环境和较低优先级设置上应用它。
不要在托管设置中与网关凭证一起包括 forceLoginMethod 或 forceLoginOrgUUID。在 Claude Code v2.1.146 及更高版本上,任一密钥在启动时阻止 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN 和 apiKeyHelper,因此开发者看到 This machine's managed settings require a first-party login 并且无法继续。
服务器管理的设置交付需要直接连接到 api.anthropic.com,因此它不会到达网关路由的会话。网关部署使用这个基于文件的托管设置路径,它强制执行相同的密钥。
对于凭证,在托管设置文件中分发一个 apiKeyHelper 命令,如上所示;该命令作为本地开发者对您的秘密存储进行身份验证,因此每台机器都接收自己的密钥。或者,通过您现有的秘密流程向每个开发者交付他们的密钥,并让他们自己设置 ANTHROPIC_AUTH_TOKEN。
某些环境需要单独的交付:
- 桌面应用仅从其 MDM 交付的第三方推理配置读取网关路由;部署该文件以及托管设置,以便桌面会话也通过网关路由。请参阅桌面第三方配置文档和桌面网关文档
- CI 运行器需要在运行器的环境中设置
ANTHROPIC_BASE_URL和凭证 - 托管 Windows 机器上的 WSL 仅在
wslInheritsWindowsSettings为true时读取 Windows 托管设置
手动向开发者提供值以自己设置
如果您没有托管设置分发,请向每个开发者发送他们需要的内容以遵循连接页面:- 网关 URL
- 他们的个人凭证
- 将凭证放在哪个变量中:对于 bearer-token 网关为
ANTHROPIC_AUTH_TOKEN,或对于x-api-key网关为ANTHROPIC_API_KEY。告诉开发者哪一个可以节省他们在连接页面上描述的试错 - 要分发的内容表中的任何条件变量,以及它们的值
claude 启动会话而不显示登录屏幕,因为分发的凭证满足身份验证。然后运行 /status 并打开状态选项卡:Anthropic base URL 行显示网关地址,对于托管分发,Setting sources 行包括托管设置。登录屏幕或缺少 Anthropic base URL 行意味着配置没有到达机器。
验证推出
从开发者机器而不是网关主机确认一切工作,以便测试涵盖开发者使用的网络路径。发送流式请求,它一次检查端点、流式传输传递和模型路由:- Bash 或 Zsh
- PowerShell
data: 行逐步到达。整个响应在暂停后一次到达意味着网关正在缓冲,这会停滞 Claude Code;404 意味着模型名称未路由。每个模型名称重复。
然后启动 claude 并发送消息。此步骤的每个症状都有一个原因:
- 登录提示意味着凭证缺口。运行
/status并打开状态选项卡:当Setting sources行不包括托管设置时,分发没有到达机器;当它包括时,开发者凭证没有被交付,因此设置ANTHROPIC_AUTH_TOKEN或apiKeyHelper Failed to authenticate错误意味着网关拒绝请求;其日志说明了哪个凭证失败。网关自己记录的拒绝命名开发者密钥,而来自api.anthropic.com或您的提供商端点的401意味着网关持有的提供商凭证被拒绝- 当网关期望密钥在
x-api-key标头中时,在首次使用时出现一次性批准提示是预期的,设置为ANTHROPIC_API_KEY。使用ANTHROPIC_AUTH_TOKEN,不会出现提示,变量会无声地接管;以前保存的 claude.ai 登录对该会话无效
x-claude-code-session-id 标头按会话对请求进行分组。如果功能因故障排除症状而失败,网关正在剥离标头或重写错误;请参阅上面的网关要求。
维护网关
推出后,三种变化会随着时间到达网关。每一种都有一个症状要观察和一个要采取的行动。| 变化 | 当网关没有跟上时的症状 | 行动 |
|---|---|---|
新的 Claude Code 版本添加 anthropic-beta 值和请求正文字段 | 开发者在更新 Claude Code 后报告 400 错误,命名新字段;请参阅功能传递 | 逐字转发 anthropic-* 标头和请求正文,而不是允许列表;在新 Claude Code 版本到达开发者之前针对网关测试它们 |
| 新的 Claude 模型变得可用 | 开发者选择新模型名称得到 404;/model 选择器不列出它 | 将模型名称添加到网关的路由配置,然后重新运行路由检查。如果您分发 ANTHROPIC_MODEL 或默认模型变量,更新托管设置 |
| 凭证过期或需要轮换 | 所有开发者请求开始从上游失败,出现 401 | 按照自己的计划轮换网关的提供商凭证;开发者密钥在网关处轮换,apiKeyHelper 处理每个开发者的轮换,无需重新分发设置 |
429 响应,最多 10 次,带有退避,遵守 Retry-After。将协议参考保持为每个 Claude Code 版本发送的内容的合同。
相关资源
- 将 Claude Code 连接到 LLM 网关:面向开发者的设置步骤,具有每个表面的配置和您可以交给开发者的故障排除表
- 网关协议参考:网关运营商的有线合同,涵盖端点、要转发的标头以及功能传递表
- 设置文件和优先级:托管、项目和用户设置如何组合,以及托管文件在每个平台上的位置
- 为您的组织设置 Claude Code:这个网关是其中一部分的更广泛推出,包括策略强制执行、使用可见性和数据处理