Claude Code を LLM ゲートウェイにつなぐ: ANTHROPIC_BASE_URL の設定

Claude Code エンジニアリング 7分で読めます

組織によっては、Claude Code とモデル提供元のあいだに LLM ゲートウェイ(社内で運用するプロキシ)を置いています。この場合、Claude Code は個人の claude.ai ログインではなく、組織が発行したゲートウェイ用の資格情報で認証します。設定の中心は、ゲートウェイの住所を指す ANTHROPIC_BASE_URL と、資格情報を入れる ANTHROPIC_AUTH_TOKEN(または ANTHROPIC_API_KEY)の2つです。

本記事は公式ドキュメント「Connect Claude Code to an LLM gateway」と「Other LLM gateways」に基づき、管理者がすでに設定済みかの確かめ方、自分で設定する手順、curl と /status での確認、VS Code や GitHub Actions など各環境での設定、よくあるエラーの直し方を日本語で解説します。

LLM ゲートウェイとは

公式によれば、ゲートウェイを置くと組織は次のことを1か所で管理できます。

サポートされた API 形式を公開しているゲートウェイであれば使えますが、Anthropic はサードパーティのゲートウェイ製品を保証・保守しておらず、ゲートウェイ経由で Claude 以外のモデルへ流すこともサポートしていません。また、Claude Code はリリースごとに機能が増えるため、新しい機能を転送しないゲートウェイでは対応する機能が壊れる点に注意が必要です。

まず、管理者が設定済みかを確かめる

管理者が管理設定(managed settings)などでベース URL と資格情報を配布している場合、自分で設定するものはありません。確認の手順は次のとおりです。

  1. claude を起動する。ログイン画面が出た場合は資格情報が配布されていないので、次の節の手順で自分で設定します。
  2. セッションが始まったら /status を開き、Status タブで2つの行を見る。Anthropic base URL の行はゲートウェイの住所が設定されているときだけ表示されます。Auth token または API key の行に ANTHROPIC_AUTH_TOKEN、ANTHROPIC_API_KEY、apiKeyHelper のいずれかが出ていればゲートウェイ用の資格情報が有効です。代わりに claude.ai アカウントを示す Login method の行が出ている場合は、資格情報が配布されていません。
  3. /status を閉じて何かプロンプトを送り、エラーなく応答が返れば接続できています。

サブスクリプションとの関係

ゲートウェイ用の資格情報の変数か apiKeyHelper が有効なあいだ、リクエストは claude.ai のサブスクリプションではなくその資格情報で送られ、サブスクリプションの利用上限は適用されません。料金は、ゲートウェイが転送に使う資格情報の持ち主(組織の Console アカウントなど)にトークン単位で請求されます。逆に ANTHROPIC_BASE_URL だけを設定して資格情報を設定しない場合、リクエストはゲートウェイを通りますが、保存済みの claude.ai ログインが有効な資格情報のままなので、その上限と請求が適用されます。

認証変数とベース URL を設定する

自分で設定するには、ゲートウェイの担当チームから「ゲートウェイのベース URL」と「資格情報(キーやトークンの文字列、またはそれを取得するコマンド)」を受け取ります。

資格情報を入れる変数を選ぶ

入れる先使う場面送られるヘッダー
ANTHROPIC_AUTH_TOKEN「bearer トークン」「Authorization ヘッダー」と言われたAuthorization: Bearer
ANTHROPIC_API_KEY「API キー」「x-api-key」と言われたx-api-key
apiKeyHelper資格情報がローテーションする、または保管庫から取得する両方

どちらか言われていない場合は ANTHROPIC_AUTH_TOKEN から試すよう公式は案内しています。ゲートウェイが読まないヘッダーに資格情報が載ると 401 になるので、そのときはもう一方の変数に切り替えます。

シェルで設定する

最初の接続は、シェルで変数を設定して後述の確認リクエストを通してから設定ファイルへ移すのが公式の勧める順序です。値は担当チームから受け取ったものに置き換えてください。

# Bash / Zsh
export ANTHROPIC_BASE_URL=https://llm-gateway.example.com
export ANTHROPIC_AUTH_TOKEN=sk-gateway-key

# PowerShell
$env:ANTHROPIC_BASE_URL = "https://llm-gateway.example.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-gateway-key"

シェルでの設定はそのターミナルと、そこから起動したプログラムにしか効きません。Dock やスタートメニューから起動したエディタには届かず、バックグラウンドセッションにも確実には届かないため、常にゲートウェイを通したい場合は設定ファイルを使います。

設定ファイルで設定する

設定ファイルの env ブロックに書くと、Claude Code が動くすべての場所に適用されます。全プロジェクト共通なら ~/.claude/settings.json(Windows では %USERPROFILE%\.claude\settings.json)、1プロジェクトだけなら .claude/settings.local.json です。

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://llm-gateway.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-gateway-key"
  }
}

資格情報をプロジェクトの .claude/settings.json に書いてはいけません。このファイルはコミットされ、リポジトリを clone した全員に共有されます。settings.local.json を手で作る場合も、先に gitignore へ加えておくよう公式は注意しています。シェルと設定ファイルの両方で同じ変数を設定した場合は、設定ファイルの値が使われます。

既存のログインとの優先順位

ゲートウェイ用の資格情報の変数は、保存済みの claude.ai ログインや Console のキーより優先されます。ログインは保存されたまま使われず、変数を外すと元に戻ります。ANTHROPIC_AUTH_TOKEN はすぐに優先されますが、ANTHROPIC_API_KEY は対話モードで一度だけ承認を求められます。保存済みのログインを消してゲートウェイの資格情報だけにしたいときは /logout を実行します。

接続を確認する

Claude Code を開く前に、シェルの変数を使ってゲートウェイへ1トークンだけのリクエストを直接送ります。ここで失敗すれば、原因は自分の設定ではなくゲートウェイ側だと切り分けられます。

curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'

ゲートウェイが x-api-key ヘッダーでキーを受け取る場合は、Authorization の行を x-api-key: $ANTHROPIC_API_KEY に替えます。結果の読み方は次のとおりです。

Claude Code 側で確認する

同じシェルから claude を起動し、メッセージを送ってから /status を開きます。Anthropic base URL の行にゲートウェイの住所が出ていれば、リクエストがそこへ流れています。行が無ければ変数がセッションに届いていません。Auth token または API key の行に設定した変数名が出ていれば、claude.ai ログインではなくゲートウェイの資格情報が使われています。

VS Code・GitHub Actions・Agent SDK での設定

CLI は上記の環境変数と設定ファイルを読みますが、ほかの利用環境では読み込み方が異なります。

VS Code 拡張

VS Code 拡張では、コマンド「Preferences: Open User Settings (JSON)」で開く VS Code のユーザー設定に claudeCode.environmentVariables として書きます。拡張は起動前にこの設定で資格情報を確認するため、~/.claude/settings.json の値は起動したプロセスには届いても、拡張自身のログイン確認には使われません。

{
  "claudeCode.environmentVariables": [
    { "name": "ANTHROPIC_BASE_URL", "value": "https://llm-gateway.example.com" },
    { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-gateway-key" }
  ]
}

デスクトップアプリ

デスクトップアプリは ANTHROPIC_BASE_URL や settings.json ではなく、サードパーティ推論の設定からゲートウェイを読みます。管理者が配布していればそのまま使え、配布されていない端末では Help の Troubleshooting から Developer Mode を有効にし、Developer メニューの Configure Third-Party Inference でベース URL を入力します。この設定が有効なあいだは、セッションはローカルマシンでのみ動き、SSH セッションや Anthropic ホストのクラウド環境、Remote Control は使えません。

GitHub Actions

Claude Code GitHub Actions はワークフローの env から ANTHROPIC_BASE_URL と ANTHROPIC_CUSTOM_HEADERS を読みます。資格情報はアクションの anthropic_api_key 入力で渡し、これは ANTHROPIC_API_KEY(x-api-key ヘッダー)として送られます。

env:
  ANTHROPIC_BASE_URL: https://llm-gateway.example.com

steps:
  - uses: anthropics/claude-code-action@v1
    with:
      anthropic_api_key: ${{ secrets.GATEWAY_API_KEY }}

bearer トークン方式のゲートウェイでは、同じシークレットを anthropic_api_key 入力と、env の ANTHROPIC_AUTH_TOKEN の両方に渡します。アクションは起動前に anthropic_api_key などの存在を確認するため入力は必要ですが、Authorization ヘッダーに載せるのは env 側の変数です。

Agent SDK

Agent SDK にゲートウェイ専用のオプションはなく、起動する Claude Code プロセスへ環境変数を渡すだけです。TypeScript では options.env を指定すると環境が丸ごと置き換わるので、...process.env を展開して残します。Python の ClaudeAgentOptions(env=...) は継承した環境の上に重ねるため、展開は不要です。

const result = query({
  prompt: "...",
  options: {
    env: {
      ...process.env,
      ANTHROPIC_BASE_URL: "https://llm-gateway.example.com",
      ANTHROPIC_AUTH_TOKEN: process.env.GATEWAY_KEY,
    },
  },
})

ゲートウェイを通らない機能

Slack の Claude Code とクラウドセッションはゲートウェイの対象外で、クラウド環境の設定に書いた変数も適用されません。トラフィックを必ずゲートウェイに通したい場合は、これらを有効にしないよう公式は案内しています。また Remote Control と音声入力は claude.ai の ID に依存するため、ゲートウェイ用の資格情報が有効なあいだは使えません。

追加の設定とよくあるエラー

次の設定は、管理者からの指示やネットワークの制約、後述のエラーで必要になったときだけ使います。

独自ヘッダーを送る

テナント識別子やルーティング用のキーなどを別のヘッダーで送る必要がある場合は、ANTHROPIC_CUSTOM_HEADERS に1行1組の Name: Value 形式で設定します。設定ファイルの env に書く場合は、組と組のあいだを \n で区切ります。

{
  "env": {
    "ANTHROPIC_CUSTOM_HEADERS": "X-Org-Route: prod\nX-Tenant: example"
  }
}

apiKeyHelper で資格情報を取得する

資格情報が定期的に失効する、保管庫や SSO のコマンドから取得する、といった場合は apiKeyHelper に資格情報を標準出力へ出すコマンドを指定します。出力は資格情報だけにします。v2.1.227 以降では、バナーやログの行が混ざるとヘルパーが失敗扱いになります。

{
  "apiKeyHelper": "~/bin/get-gateway-key.sh"
}

出力は既定で5分間キャッシュされ、期限が切れると再実行されます。期間は CLAUDE_CODE_API_KEY_HELPER_TTL_MS(ミリ秒)で変えられ、たとえば 900000 で15分です。

ゲートウェイの外への通信を止める

モデルへのリクエストはゲートウェイを通りますが、Claude Code はバージョン確認やテレメトリなどの補助的な通信をゲートウェイの外へも送ります。ゲートウェイ以外への外向き通信を許可していないネットワークでは、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 を一緒に設定します。この場合は自動更新も止まるので、パッケージマネージャーなど別の更新手段を用意する必要があります。

ゲートウェイのモデルを /model に出す

ゲートウェイが Claude Code の組み込み一覧に無いモデル名を提供している場合、CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 を設定すると、起動時にゲートウェイからモデル一覧を取得して /model の選択肢に加えます。

よくあるエラーと直し方

症状原因直し方
起動時に2つの資格情報源を挙げて auth may not work as expected と警告されるゲートウェイの資格情報と保存済みログインが両方有効変数を外してログインを使うか、/logout でゲートウェイの資格情報だけにする
401 エラーゲートウェイが発行した資格情報ではない、または読まれないヘッダーに載っている資格情報の種類と変数の対応を見直す。失効していればゲートウェイ側で再発行する
接続拒否や名前解決のエラーベース URL が誤っている、または VPN やファイアウォールが経路を塞いでいるcurl の確認リクエストを送り、URL と経路を担当チームと確認する
API returned an empty or malformed response (HTTP 200)ゲートウェイや途中のプロキシが HTML のエラーページなど API 以外の応答を返しているcurl で確かめ、API 以外を返している経路を直す
context_management や Extra inputs are not permitted を含む 400転送先が Claude Code の送るフィールドを受け付けないCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 を設定する
curl は通るのにログインを求められるCLI 自身が資格情報を持っていない。プロジェクトの設定ファイルの env は初回の信頼確認の後でしか適用されないシェル、~/.claude/settings.json、管理設定のいずれかに ANTHROPIC_AUTH_TOKEN を設定する
ANTHROPIC_API_KEY を設定したのに無視される一度断ったキーは確認なしで無視される/config の Use custom API key で有効にする
curl は通るのに証明書や TLS のエラーが出る社内の TLS 検査プロキシの CA を Claude Code の実行環境が信頼していないNODE_EXTRA_CA_CERTS に CA バンドルのパスを設定する(プロキシ・社内 CA の設定を参照)

Amazon Bedrock や Google Cloud の Agent Platform、Microsoft Foundry の形式でゲートウェイへ送る構成もあり、その場合は ANTHROPIC_BASE_URL の代わりに ANTHROPIC_BEDROCK_BASE_URL などの提供元別の変数を使います。担当チームから提供元を指定された場合だけ使う設定で、詳細は公式ドキュメントにあります。クラウド提供元へ直接つなぐ場合はAmazon BedrockやGoogle Vertex AIの記事も参考になります。

本記事は Anthropic 公式ドキュメント「Connect Claude Code to an LLM gateway」と「Other LLM gateways」に基づく非公式の日本語解説です(確認日 2026-10-07)。仕様やバージョン要件は更新される場合があるため、利用前にLLM ゲートウェイへの接続とLLM ゲートウェイの概要をご確認ください。