Claude Code の環境変数
Claude Code のすべての環境変数について、その役割、設定する場所、そして claudeCode.environmentVariables を経由して VS Code のパネルに届くまでの流れをまとめます。
Claude Code の設定は、ほぼすべて環境変数で行われます。認証、API エンドポイント、モデル、リトライとタイムアウトの挙動、そしてプロキシやゲートウェイ向けの互換スイッチは、すべて環境変数です。コマンドラインのフラグでも、設定ウィザードの入力欄でもありません。Claude Code の動作が期待どおりにならないときは、このページをチェックリストとして使ってください。どの変数か、どのファイルか、どの優先順位か、という順に確認できます。
claudeCode.environmentVariables とは
claudeCode.environmentVariables は、Claude Code 拡張機能のパネルに環境変数を渡すための VS Code 設定です。VS Code のユーザー settings.json に保存される、{ "name": ..., "value": ... } の組を並べた単純な配列です:
1 "claudeCode.environmentVariables": [2 { "name": "ANTHROPIC_BASE_URL", "value": "https://www.codebyai.net/api/agent" },3 { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-proj-xxxx" }4 ]
この配列を編集する前に知っておきたい性質が 4 つあります。どれも多くの人がつまずく点です:
| 性質 | 影響 |
|---|---|
| オブジェクトの配列であり、マップではない | "KEY": "value" は黙って無視されます。パネルは変数が空のまま起動します |
| マシンスコープである | そのコンピューター上のすべての VS Code ウィンドウに影響します。現在のフォルダーだけではありません |
| 無関係な変数と配列を共有する | プロキシ設定や NODE_EXTRA_CA_CERTS も同じ配列にあります。上書きするとそれらは消えてしまいます |
| エージェントの起動時に一度だけ読み込まれる | 編集しても、Developer: Reload Window(または VS Code の再起動)まで反映されません |
シェルの export が拡張機能パネルに届かない理由
claude CLI は、それを起動したプロセスの環境を引き継ぐため、~/.zshrc に export ANTHROPIC_BASE_URL=... を書けば有効です。拡張機能はそうではありません。拡張機能はVS Code のウィンドウプロセスからエージェントプロセスを起動するため、パネルが見るのは VS Code を起動したときのデスクトップ/ログイン環境であり、export を入力したシェルではありません。
これが最もよくある Claude Code の設定ミスの原因です。ターミナルでは動くのに、拡張機能パネルは既定のエンドポイントと通信し続けてしまいます。解決策は 2 つです。そのターミナルから VS Code を起動する(環境変数を引き継ぎますが、その場合はすべてのウィンドウがその経路になります)か、拡張機能自身の逃げ道である claudeCode.environmentVariables を設定するかです。
パネルが実際に見ているものを確認する
次のコマンドは、拡張機能が注入する変数名を一覧表示します(認証情報らしき値はマスクされます):
1 # macOS2 S="$HOME/Library/Application Support/Code/User/settings.json"3 # Linux: S="$HOME/.config/Code/User/settings.json"4 # Windows: S="$APPDATA/Code/User/settings.json"5 6 jq -r '.["claudeCode.environmentVariables"] // [] | .[] | "\(.name)"' "$S"
何も出力されない場合は、パネルが VS Code プロセスの環境を引き継いでいることを意味します。変数は別の場所から設定する必要があります。
変数を設定できる 3 つの場所
| 設定場所 | 適用対象 | 永続性 |
|---|---|---|
シェルの export(~/.zshrc、~/.bashrc、Windows の環境変数) | シェルから起動した claude CLI | あり。シェルセッションごと |
settings.json の env ブロック(~/.claude/settings.json、.claude/settings.json、.claude/settings.local.json) | CLI、VS Code 拡張機能、Agent SDK | あり。設定スコープごと |
claudeCode.environmentVariables | VS Code 拡張機能のパネルのみ | あり。マシン全体 |
settings.json のスコープは区別して覚えておくと便利です:
| ファイル | スコープ |
|---|---|
~/.claude/settings.json | すべてのプロジェクトにおける自分自身 |
.claude/settings.json | プロジェクトの全員(コミットしてください) |
.claude/settings.local.json | このプロジェクトだけの自分自身(git 管理外) |
| マネージド設定 | 組織の全員 |
1 {2 "env": {3 "ANTHROPIC_BASE_URL": "https://www.codebyai.net/api/agent",4 "API_TIMEOUT_MS": "600000"5 }6 }
優先順位のルール
- 環境変数は、対応する
settings.jsonのフィールドより優先されます(たとえばANTHROPIC_MODELはmodelより優先されます)。 - コマンドラインの
--modelとセッション内の/modelはANTHROPIC_MODELより優先されます。 ANTHROPIC_API_KEYは、対話モードでは対話型のサブスクリプションログインより優先されます。-p(print)モードでは常に API キーが使われます。- 変数はプロセスの起動時に読み込まれます。セッションの途中で読み直されることはありません。
claudeを再起動するか、VS Code で Developer: Reload Window を実行してください。
Claude Code を Code By AI に向ける
Code By AI は Anthropic 互換のエンドポイントを提供しているため、関係する変数はエンドポイントと、それに対応するトークンだけです。Claude Code の起動方法に合った設定場所を選んでください。
ターミナル / CLI
1 # ~/.zshrc or ~/.bashrc2 export ANTHROPIC_BASE_URL="https://www.codebyai.net/api/agent"3 export ANTHROPIC_AUTH_TOKEN="sk-proj-xxxx"4 export API_TIMEOUT_MS=6000005 export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
VS Code 拡張機能
1 "claudeCode.environmentVariables": [2 { "name": "ANTHROPIC_BASE_URL", "value": "https://www.codebyai.net/api/agent" },3 { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-proj-xxxx" },4 { "name": "API_TIMEOUT_MS", "value": "600000" },5 { "name": "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC", "value": "1" }6 ],
ウィンドウをリロードしてから、パネルのヘッダーにゲートウェイのエンドポイントが表示されていることを確認してください。Windows のコマンドラインでの同等の手順を含む詳しいやり方は、Claude Code の設定にまとめています。
ANTHROPIC_AUTH_TOKEN は Authorization: Bearer <value> として送信され、これが Code By AI ゲートウェイの期待する形式です。ANTHROPIC_API_KEY は代わりに X-Api-Key として送信されます。どちらか一方だけを使い、両方は決して使わないでください。意図しないほうが優先されてしまう可能性があります。
変数リファレンス
認証
| 変数 | 用途 |
|---|---|
ANTHROPIC_API_KEY | X-Api-Key ヘッダーとして送信される API キー。-p モードでは常に使用されます |
ANTHROPIC_AUTH_TOKEN | カスタムの Authorization ヘッダー値。Bearer が前置されます |
CLAUDE_CODE_OAUTH_TOKEN | Claude.ai 認証用の OAuth アクセストークン。SDK や自動化環境向け |
CLAUDE_CODE_OAUTH_REFRESH_TOKEN | claude auth login がブラウザなしで交換するリフレッシュトークン |
CLAUDE_CODE_OAUTH_SCOPES | リフレッシュトークンの発行時に指定されたスコープ(スペース区切り) |
エンドポイントとプロバイダーのルーティング
| 変数 | 用途 |
|---|---|
ANTHROPIC_BASE_URL | API エンドポイントを上書きします(プロキシまたはゲートウェイ)。ENABLE_TOOL_SEARCH=true でない限り、非ファーストパーティのホストでは MCP ツール検索が無効になります |
CLAUDE_CODE_USE_BEDROCK / _VERTEX / _FOUNDRY | Amazon Bedrock、Google Vertex AI、Microsoft Foundry 経由でルーティングします |
ANTHROPIC_BEDROCK_BASE_URL / ANTHROPIC_VERTEX_BASE_URL / ANTHROPIC_FOUNDRY_BASE_URL | プロバイダーごとのエンドポイントを上書きします |
HTTP_PROXY / HTTPS_PROXY / NO_PROXY | ネットワーク接続の外向きプロキシ |
CLAUDE_CODE_SKIP_BEDROCK_AUTH および同種の変数 | LLM ゲートウェイが自身でリクエストに署名する場合に、プロバイダー認証をスキップします |
モデルの選択
| 変数 | 用途 |
|---|---|
ANTHROPIC_MODEL | 使用するモデル。--model と /model で上書きされます |
ANTHROPIC_DEFAULT_SONNET_MODEL / _HAIKU_ / _OPUS_ | 各ティアの既定モデル ID を固定します |
ANTHROPIC_CUSTOM_MODEL_OPTION / _NAME / _DESCRIPTION | /model ピッカーにカスタム項目を追加します |
CLAUDE_CODE_SUBAGENT_MODEL | サブエージェントが使用するモデル |
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY | 1 に設定すると、ゲートウェイの /v1/models から /model を埋めます |
MAX_THINKING_TOKENS | 拡張思考の予算。Anthropic API では 0 で思考が無効になります |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | リクエストあたりの最大出力トークン数 |
タイムアウトとリトライ
| 変数 | 既定値 | 用途 |
|---|---|---|
API_TIMEOUT_MS | 600000 | API リクエストのタイムアウト(ミリ秒) |
BASH_DEFAULT_TIMEOUT_MS | 120000 | 長時間実行される Bash コマンドの既定タイムアウト |
BASH_MAX_TIMEOUT_MS | 600000 | モデルが Bash に設定できる最大タイムアウト |
CLAUDE_CODE_MAX_RETRIES | 10 | 失敗した API リクエストのリトライ回数 |
プロキシとゲートウェイの互換性
サードパーティのエンドポイントがそもそも動作するかどうかを決めるのが、これらの変数です:
| 変数 | 用途 |
|---|---|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 1 にすると、自動アップデーター、フィードバックコマンド、エラー報告、テレメトリーを 1 つのスイッチで無効にします |
CLAUDE_CODE_ATTRIBUTION_HEADER | 0 にするとシステムプロンプトから帰属ブロックを取り除き、ゲートウェイ経由でのプロンプトキャッシュのヒット率が向上します |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS | 1 にすると、プロキシが拒否する可能性のある anthropic-beta ヘッダーを取り除きます |
CLAUDE_CODE_DISABLE_THINKING | thinking パラメーターを完全に省略します |
ENABLE_TOOL_SEARCH | true / false / auto: カスタムの ANTHROPIC_BASE_URL における MCP の遅延ツール読み込みを制御します |
CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK | ストリーム途中の失敗時に、ツール呼び出しを非ストリーミングで再実行するのを防ぎます |
DISABLE_PROMPT_CACHING | プロンプトキャッシュを無効にします(デバッグ専用。コストが上がります) |
診断とパス
| 変数 | 用途 |
|---|---|
DEBUG | 1(または true、yes、on)でデバッグモードを有効にします。--debug と同じです |
CLAUDE_CODE_DEBUG_LOG_LEVEL | 最小ログレベル: verbose、debug、info、warn、error |
CLAUDE_CONFIG_DIR | 設定ディレクトリを上書きします。既定は ~/.claude |
CLAUDE_CODE_SIMPLE | 1 にすると、最小限のシステムプロンプトと Bash およびファイルツールのみで動作します |
トラブルシューティング
変数が無視されているように見えます。 まず設定場所を確認してください。シェルの export は VS Code 拡張機能のパネルには見えません。claudeCode.environmentVariables は CLI には見えません。次に再起動を確認してください。環境変数はプロセスの起動時に一度だけ読み込まれます。
エンドポイントを切り替えた後に 401 や invalid api key が返ります。 ANTHROPIC_API_KEY と ANTHROPIC_AUTH_TOKEN は別々のヘッダーで送信されます。同じスコープに ANTHROPIC_API_KEY が残っていると、-p モードではそちらが優先されます。トークンで認証するときは削除してください。
プロキシ経由だとすべてのリクエストが失敗します。 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 を追加してください。Claude Code が既定で送るベータヘッダーを拒否するプロキシがあります。
長い生成でリクエストがタイムアウトします。 リトライするのではなく API_TIMEOUT_MS を引き上げてください(既定値は 10 分です)。十分に長いタイムアウトですが、大きな差分はそれを超えることがあります。
ゲートウェイを使うと /model ピッカーが空になります。 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 を設定すると、ゲートウェイの /v1/models からピッカーが埋まります。あるいは ANTHROPIC_MODEL でモデルを明示してください。
ゲートウェイ経由だとプロンプトキャッシュのヒット率が低くなります。 CLAUDE_CODE_ATTRIBUTION_HEADER=0 を設定してください。帰属ブロックはセッションごとに変わり、キャッシュされたプレフィックスを無効にしてしまいます。
よくある質問
Claude Code は環境変数をどこから読み込みますか?
起動時のプロセス環境と、適用される settings.json ファイルの env ブロックをマージしたものです。同じ挙動を両方が定義している場合は、環境変数が優先されます。VS Code 拡張機能のパネルは別のプロセスツリーなので、代わりに claudeCode.environmentVariables が必要です。
変数を変更した後、再起動は必要ですか?
はい。Claude Code は起動時に設定を読み込みます。CLI なら claude を再起動し、拡張機能なら VS Code で Developer: Reload Window を実行してください。
ANTHROPIC_API_KEY と ANTHROPIC_AUTH_TOKEN はどちらが優先されますか?
-p モードでは ANTHROPIC_API_KEY です。また、対話型のサブスクリプションログインも上書きします。ベアラートークンで認証するゲートウェイを経由する場合は、ANTHROPIC_API_KEY を解除して曖昧さを取り除いてください。
変数を変更せずに別のモデルを使えますか?
はい。起動時の --model とセッション内の /model はどちらも ANTHROPIC_MODEL を上書きします。変数は既定値を決め、フラグはその変数を上書きします。
Claude Code、Codex、Gemini はすべて Code By AI の同じエンドポイントと同じキーで利用でき、料金は公式 API の 1/6 からです。料金比較を見る、またはチャージしてキーを取得してください。