Claude Codeの環境変数、全部わかってますか?ANTHROPIC_API_KEYから上級設定まで完全解説
室谷今回はClaude Codeの環境変数を深掘りしましょう。これ、.AI(ドットエーアイ)コミュニティでも「どこで設定するの?」「どれを使えばいいの?」って声が毎週来るんですよね・・・
テキトー教師ですよね。講座でも「Claude Codeをインストールしたのに動かない」って相談の9割が環境変数の設定ミスか設定漏れです。
特に
特に
ANTHROPIC_API_KEYを設定していないケースが多くて(笑)
室谷公式ドキュメントを見ると変数の数がかなり多くて、最初は何を設定すればいいのか迷うんですよね。今回は実際に使う頻度が高いものを中心に、
claude code anthropic_api_keyの基本からclaude code anthropic_base_urlのプロキシ設定、claude code max_thinking_tokensの思考バジェット制御まで整理していきます。
テキトー教師この記事を読めば「なんとなく動いている」状態から「意図通りに制御できている」状態に変わると思いますよ。特にBedrockやVSCode、WSLで使っている方には役に立つ内容が多いはずです。
Claude Codeの環境変数とは何か、settings.jsonとの違い

室谷まず基本の話から入りましょう。Claude Codeの設定には2つのアプローチがあって、環境変数と
この2つの使い分けがわかっていない方が多い印象です。
settings.jsonです。この2つの使い分けがわかっていない方が多い印象です。
テキトー教師そうなんですよ。整理するとこういう構造になっています。
環境変数はシェルで
どちらで設定しても動きますが、用途が違います。
環境変数はシェルで
exportして起動時に渡す形式。settings.jsonはファイルに書いて永続的に管理する形式。どちらで設定しても動きますが、用途が違います。
室谷公式ドキュメントによると、環境変数は
settings.jsonのenvキーにも書けるんですよね。つまり「環境変数をファイルで管理する」という使い方もできる。
テキトー教師そこが面白いポイントで、コミュニティのメンバーさんがよく質問するんです。「
答えは「用途による」で、個人の認証情報(APIキーなど)は
.bashrcに書くべきか、settings.jsonに書くべきか」って。答えは「用途による」で、個人の認証情報(APIキーなど)は
.bashrcや.zshrcに、チームで共有する設定はsettings.jsonに書くのが基本です。
室谷その
settings.jsonにも実はスコープがあって、ユーザーレベル(~/.claude/settings.json)、プロジェクトレベル(.claude/settings.json)、ローカルレベル(.claude/settings.local.json)と3段階あります。APIキーをsettings.jsonに書いてしまってgitにコミットするのが一番危ない・・・
テキトー教師これほんと多いんですよ(笑)。
APIキーは必ずユーザーレベルか環境変数で管理してください。
.claude/settings.jsonをリポジトリに入れている方が、うっかりANTHROPIC_API_KEYをそこに書いてしまうケースが。APIキーは必ずユーザーレベルか環境変数で管理してください。
設定の優先順位は高い方から次の通りです。
| スコープ | 場所 | 共有 |
|---|---|---|
| Managed(最高優先) | サーバー管理設定 | IT展開用 |
| コマンドライン引数 | 起動時フラグ | 一時的 |
| Local | .claude/settings.local.json | 個人のみ |
| Project | .claude/settings.json | チーム共有 |
| User(最低優先) | ~/.claude/settings.json | 全プロジェクト |
室谷Managedスコープは企業向けですね。IT部門が組織全体に強制適用するやつで、ユーザーがオーバーライドできない。
エンタープライズ環境だとここに禁止設定を置くことが多いです。
エンタープライズ環境だとここに禁止設定を置くことが多いです。
テキトー教師settings.jsonへのenvキーの書き方もシンプルで、こういう形式になります。{
"env": {
"ANTHROPIC_API_KEY": "sk-ant-xxxxx",
"MAX_THINKING_TOKENS": "10000"
}
}
室谷ただ繰り返しになりますが、
ANTHROPIC_API_KEYをここに書く場合はユーザースコープ(~/.claude/settings.json)限定で。プロジェクトスコープのsettings.jsonには絶対に書かないでください。ANTHROPIC_API_KEY:最も重要な環境変数の設定方法
室谷では一番使われる
ANTHROPIC_API_KEYの話をしましょう。これはAnthropicのAPIキーをClaude Codeに渡すための変数です。
テキトー教師設定方法は3パターンあって、セッション限定・シェル永続・settings.jsonの3つです。コミュニティのメンバーさんには「まず動作確認をしたいならセッション限定で試して、問題なければシェル設定ファイルに書く」とアドバイスしています。
室谷順番に見ていきましょう。
セッション限定(ターミナルを閉じるとリセット):
export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxx"
claude
シェル設定ファイルに永続化(macOS/Linux):
# ~/.zshrc または ~/.bashrc に追記
echo 'export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxx"' >> ~/.zshrc
source ~/.zshrc
Windows(PowerShell):
$env:ANTHROPIC_API_KEY = "sk-ant-xxxxxxxxxxxxxxxxxx"
# または永続化する場合
[System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-xxxxxxxxxxxxxxxxxx", "User")
テキトー教師Windowsで使う方に多いのが、WSLを使っているケースです。
基本的にはWSL2を使うことをおすすめします。
claude code 環境変数 windowsと検索している方の多くがWSL環境だと思うのですが、WSLの場合はLinuxと同じ方法でOKです。基本的にはWSL2を使うことをおすすめします。
室谷一点重要なのが、
ANTHROPIC_API_KEYを設定するとサブスクリプション(Pro/Max/Team)ではなくAPIキーの課金に切り替わることです。公式ドキュメントに明記されていて、「設定されている場合はログイン中でもAPIキーを使う」という仕様なので、サブスクリプション契約で使いたい場合はunset ANTHROPIC_API_KEYでクリアする必要があります。
テキトー教師これ、意外に知らない方が多いですよね。「Pro契約しているのになぜか従量課金になっている」という相談が来たとき、原因の大半がこれです。
ANTHROPIC_API_KEYが.bashrcにずっと残っていて、サブスクリプションに戻せていないパターン。
室谷インタラクティブモードだと「このAPIキーを使ってもいいですか?」という確認が一度出るのですが、非インタラクティブモード(
-pフラグ)では確認なしにAPIキーが使われます。自動化スクリプトで使う場合は特に注意が必要ですね。ANTHROPIC_BASE_URL:プロキシ経由でClaude Codeを使う方法
室谷次はエンタープライズ環境で特に重要な
ANTHROPIC_BASE_URLです。これはAPIのエンドポイントをプロキシやゲートウェイ経由に切り替えるための変数です。
テキトー教師claude code anthropic_base_urlで検索している方は、会社のネットワーク経由でClaude Codeを使う必要があるケースが多いですよね。セキュリティポリシーでAnthropicへの直接通信ができないとか、ログ収集のためにゲートウェイを挟みたいとか。
室谷設定自体はシンプルです。
export ANTHROPIC_BASE_URL="https://your-proxy.example.com"
テキトー教師ただし注意点がいくつかあって。まず
プロキシが
ANTHROPIC_BASE_URLを非Anthropicのホスト(自社プロキシ等)に設定すると、デフォルトでMCPツール検索が無効になります。プロキシが
tool_referenceブロックを転送している場合はENABLE_TOOL_SEARCH=trueも一緒に設定する必要があります。
室谷もう一つが
この変数に設定した値が
ANTHROPIC_AUTH_TOKENとの組み合わせですね。プロキシ側で独自のBearer認証を要求する場合は、ANTHROPIC_AUTH_TOKENにそのトークンを設定します。この変数に設定した値が
Authorization: Bearer {値}ヘッダーとして送られます。
テキトー教師カスタムヘッダーを追加したい場合は
ANTHROPIC_CUSTOM_HEADERSも使えます。複数ヘッダーは改行区切りで指定できます。export ANTHROPIC_CUSTOM_HEADERS="X-Organization-ID: myorg
X-Environment: production"
室谷一般的なHTTPプロキシであれば
HTTP_PROXY・HTTPS_PROXY・NO_PROXYも使えるので、既存の社内プロキシ設定をそのまま流用できます。MYUUUでもクライアント企業のセキュリティ要件によってはプロキシ設定が必要なケースがあって、このあたりの設定は実際によく使います。AWSで使う:ANTHROPIC_BEDROCK_BASE_URLとBedrock連携の設定
室谷企業での活用という文脈でいうと、
claude code bedrock 環境変数の需要も多いですよね。AWS Bedrockを通じてClaude Codeを使うユースケースです。
テキトー教師Bedrockを使う場合は
AWSの認証情報は通常の
CLAUDE_CODE_USE_BEDROCK=1を設定するのが基本です。それだけでBedrock経由に切り替わります。AWSの認証情報は通常の
AWS_ACCESS_KEY_ID・AWS_SECRET_ACCESS_KEY・AWS_REGIONで管理します。export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION="us-east-1"
# AWS認証情報はAWS CLIの設定またはIAMロールで管理
室谷Bedrockのエンドポイント自体をカスタマイズしたい場合は
ANTHROPIC_BEDROCK_BASE_URLを使います。LLMゲートウェイを経由させる場合や、特定のリージョンエンドポイントを指定したい場合ですね。
テキトー教師認証をスキップしたい場合は
Google Cloudを使う場合は
CLAUDE_CODE_SKIP_BEDROCK_AUTH=1も使えます。LLMゲートウェイが認証を肩代わりしている環境向けのオプションです。Google Cloudを使う場合は
CLAUDE_CODE_USE_VERTEX=1とANTHROPIC_VERTEX_PROJECT_IDでGCPプロジェクトIDを指定する形で、AWSもGCPもどちらも対応しているのが便利ですよね。
室谷Bedrockを使う場合に注意が必要なのが、プロンプトキャッシュのTTLがデフォルト5分と短い点です。
長いコンテキストを繰り返し参照するプロジェクトではかなりコスト削減に効きます。
ENABLE_PROMPT_CACHING_1H_BEDROCK=1を設定すると1時間に延長できます。長いコンテキストを繰り返し参照するプロジェクトではかなりコスト削減に効きます。
MAX_THINKING_TOKENS:思考バジェットを制御する
室谷ここからは少し上級の設定の話をしましょう。
claude code max_thinking_tokensは、Claude Codeの「思考バジェット」を制御するための変数です。
テキトー教師拡張思考(Extended Thinking)機能のトークン上限を設定するやつですよね。デフォルトだとモデルが自動で判断しますが、コスト管理や速度の観点でここを制御したいケースがあります。
室谷設定は数値を文字列で渡します。
export MAX_THINKING_TOKENS="10000"
テキトー教師0に設定すると思考機能を完全に無効化できます。シンプルなタスクに使うときや、コスト優先のときに使えます。
export MAX_THINKING_TOKENS="0"
# または専用変数で
export CLAUDE_CODE_DISABLE_THINKING=1
室谷でも本当に面白いのはここからで、Opus 4.6とSonnet 4.6には「アダプティブ推論」という機能があって、タスクの複雑さに応じて思考バジェットを自動調整するんですよね。この場合、
MAX_THINKING_TOKENSは無視されます。
テキトー教師そのアダプティブ推論を無効化して手動制御したい場合は
CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1を使います。これを設定した上でMAX_THINKING_TOKENSを指定すると、固定バジェットで動きます。
室谷エフォートレベルの制御という観点では
CLAUDE_CODE_EFFORT_LEVELも重要で、low・medium・high・max(Opus 4.6のみ)・autoから選べます。タスクの重要度に応じてここを変えることで、速度とコストのバランスを最適化できます。
テキトー教師講座でよく教えるのが「ルーティンタスクは
low、重要な設計判断はhigh」という使い分けです。特に自動化パイプラインに組み込む場合はここを意識すると費用対効果が変わってきます。コンテキスト管理に関わる環境変数
室谷思考バジェットと関連して、コンテキスト管理の設定も押さえておく価値があります。
デフォルトは95%です。
CLAUDE_AUTOCOMPACT_PCT_OVERRIDEは、コンテキストウィンドウの何パーセントに達したら自動コンパクションを走らせるかを制御します。デフォルトは95%です。
テキトー教師長時間のセッションで作業する場合、コンパクションのタイミングを早めると思わぬタイミングで会話が圧縮されるのを防げます。逆に遅らせると直近のコンテキストをより長く保持できる。
この設定はチームによって好みが分かれますよね。
この設定はチームによって好みが分かれますよね。
室谷DISABLE_AUTO_COMPACT=1で自動コンパクションを完全にオフにすることもできます。手動で/compactを実行したい方向けですね。MCP環境変数:claude code mcp 環境変数の設定
室谷さて、MCP(Model Context Protocol)に関連する環境変数の話をしましょう。
claude code mcp 環境変数で調べている方は、MCPサーバーの接続設定やタイムアウトで詰まっているケースが多いと思います。
テキトー教師MCPは外部ツールをClaude Codeに接続する仕組みですよね。環境変数でできることとしては、まずタイムアウトの制御が大きいです。
# MCPサーバーの起動タイムアウト
export MCP_TIMEOUT=30000
# MCPツールの実行タイムアウト
export MCP_TOOL_TIMEOUT=60000
室谷非インタラクティブモードで使うときに大事なのが
パイプラインにClaude Codeを組み込む場合に速度が改善します。
MCP_CONNECTION_NONBLOCKINGです。trueに設定すると、MCPサーバーへの接続待ちをスキップして即座に処理を開始できます。パイプラインにClaude Codeを組み込む場合に速度が改善します。
テキトー教師MCPサーバーの同時接続数も制御できます。ローカルのstdioサーバーは
MCP_SERVER_CONNECTION_BATCH_SIZE(デフォルト3)、リモートのHTTP/SSEサーバーはMCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE(デフォルト20)で設定します。
室谷ENABLE_TOOL_SEARCHはプロキシ経由で使う場合と合わせて理解しておく必要があって、MCPツールの読み込み戦略を制御します。trueにすると常にデファー(必要になったら読み込む)、falseにすると全ツールを最初から読み込みます。
テキトー教師これ、MCPツールの数が多いプロジェクトでは
autoが便利です。コンテキストウィンドウの10%以内に収まるなら先読み、収まらないなら遅延読み込みという動きをします。settings.jsonでMCPサーバーを設定する
室谷MCPの設定は環境変数よりも
settings.jsonのほうが適していることが多いですよね。claude code settings.json 環境変数で調べている方は、この組み合わせを理解したいと思っている方が多いはずです。
テキトー教師MCPサーバーの定義は
.mcp.jsonか~/.claude.jsonに書くのが基本で、環境変数は起動パラメータや認証情報の管理に使います。たとえばMCPサーバーに渡すAPIキーをsettings.jsonのenvに書いておくと、チーム全員で同じMCPサーバー設定を使えます。{
"env": {
"GITHUB_TOKEN": "ghp_xxxx"
}
}
室谷ただしこれも同じで、認証情報はプロジェクトレベルの
settings.jsonには書かない。ユーザーレベルかシェル設定で管理するのが基本です。VSCodeでの環境変数設定:vscode claude code 環境変数

室谷VSCodeやWebインターフェースで使う場合の環境変数の話もしておきましょう。
vscode claude code 環境変数はわりと検索が多いですよね。
テキトー教師VSCodeのターミナルからClaude Codeを使う分には、通常のシェル環境変数がそのまま引き継がれます。なので
.bashrcや.zshrcに設定してあれば追加作業は不要です。
室谷ただしVSCodeのIDEとしての統合機能という意味では、
tmuxを使っていて自動検出に失敗する場合は
CLAUDE_CODE_AUTO_CONNECT_IDEが関係してきます。デフォルトでClaude Codeは統合ターミナル内で起動するとIDEへの自動接続を試みますが、falseに設定すると無効化できます。tmuxを使っていて自動検出に失敗する場合は
trueで強制接続を試みることもできます。
テキトー教師VSCode関連でよくある問題が、Claude CodeとVSCode拡張機能の自動インストールを無効にしたいケースです。
CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL=1で拡張機能の自動インストールをスキップできます。
室谷claude code web 環境変数という観点でいうと、Claude Code on the Webはブラウザで使うバージョンですが、基本的な設定のほとんどはWebインターフェース上の設定UIから行います。ANTHROPIC_API_KEYのような認証周りは環境変数で管理することが多いですが、Webバージョンではアカウントサインインで管理されます。便利な運用系環境変数:設定を極める
テキトー教師ここからは「知っていると地味に便利」な運用系の環境変数をまとめて見ていきましょう。
室谷まずは複数アカウントの使い分けです。
CLAUDE_CONFIG_DIRで設定ディレクトリを変更できるので、仕事用とプライベート用でプロファイルを分けることができます。# 仕事用
alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'
# プライベート用(デフォルト)
# claude
テキトー教師これ、フリーランスの方やMYUUUのように複数クライアントを抱えている場合に特に有効ですよね。APIキーや権限設定をクライアントごとに分けられます。
室谷デバッグ系でよく使うのが
ただし
CLAUDE_CODE_DEBUG_LOGS_DIRです。デバッグログの保存先を指定できます。ただし
--debugフラグかデバッグモードの有効化も必要で、この変数だけ設定してもログは出ません。
テキトー教師自動更新の制御も重要で、
DISABLE_AUTOUPDATER=1で自動更新を無効化できます。プロダクション環境で使う場合や、特定バージョンを固定したい場合に使います。
室谷テレメトリ・エラーレポート周りを全部オフにしたい場合は
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1が便利です。これ一つでDISABLE_AUTOUPDATER・DISABLE_FEEDBACK_COMMAND・DISABLE_ERROR_REPORTING・DISABLE_TELEMETRYが全部有効になります。
テキトー教師企業の情報セキュリティポリシーで外部通信を最小化しなければいけないケースで使いますよね。Managed設定に入れておくと組織全体に適用できます。
コスト警告とAPIタイムアウト
室谷APIのタイムアウト設定も地味に大事で、
API_TIMEOUT_MSでタイムアウト時間を変えられます。デフォルトは600,000ms(10分)ですが、遅いネットワークやプロキシ経由の場合は増やす必要があることがあります。
テキトー教師Claudeの処理時間が長いタスク(大きなコードベースの解析など)でタイムアウトが発生する場合は、ここを増やすと解決することが多いです。
室谷コスト警告を消したい場合は
DISABLE_COST_WARNINGS=1で非表示にできます。パイプラインに組み込む場合は警告が邪魔になることがあるので。よく使う環境変数クイックリファレンス
テキトー教師最後に、実際の用途別で環境変数をまとめておきましょう。「どれを設定すればいいかわからない」という方のために整理します。
室谷用途別に見るとこういう感じになります。
個人利用(APIキーで使う)
# ~/.zshrc に追記
export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxx"
企業内プロキシ経由で使う
export ANTHROPIC_BASE_URL="https://your-corporate-proxy.example.com"
export ANTHROPIC_AUTH_TOKEN="your-proxy-auth-token"
export ENABLE_TOOL_SEARCH=true
AWS Bedrock経由で使う
export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION="us-east-1"
export ENABLE_PROMPT_CACHING_1H_BEDROCK=1 # キャッシュTTL延長
思考バジェットを固定値に制御する
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1
export MAX_THINKING_TOKENS="8000"
自動化・パイプラインで使う
export DISABLE_AUTOUPDATER=1
export DISABLE_COST_WARNINGS=1
export MCP_CONNECTION_NONBLOCKING=true
テキトー教師この表があるだけで、コミュニティのメンバーさんの「どれを設定すればいいか」という質問の8割は解決できると思います(笑)
室谷claude code 環境変数 設定で調べている方は、まずどの用途に当てはまるかを確認してから必要な変数だけ設定する、という進め方がスッキリしていいですね。全部入りで設定すると逆に混乱することがある。よくある質問とトラブルシューティング
室谷最後に、よくある質問をまとめておきましょう。環境変数に関連した詰まりポイントはだいたいパターンが決まっていて。
テキトー教師まず一番多いのが「設定したはずなのに反映されない」問題ですよね。
室谷これは大体3パターンです。シェルを再起動していない(
source ~/.zshrcを忘れている)、スコープの優先順位で上位の設定に上書きされている、タイポ(変数名のミス)のどれかです。
テキトー教師現在の設定を確認するには
printenv | grep ANTHROPICやprintenv | grep CLAUDEで一覧表示するのが手っ取り早いです。何が設定されているかを可視化するのが最初のステップ。
室谷もう一つ多いのが「APIキーが有効なのにエラーになる」問題です。これは
ANTHROPIC_BASE_URLを間違ったURLに設定していて、エンドポイントが変わってしまっているケースが多いです。
テキトー教師echo $ANTHROPIC_BASE_URLで確認して、設定していないのに値が入っていたら怪しいですね。意図せず設定されている環境変数が悪さをしているパターンです。
室谷あとは「Bedrockに切り替えたら動かなくなった」問題も多くて。これはリージョンがモデルをサポートしていないことが原因であることが多いです。
Claude 4系はリージョンによっては未対応のことがあるので、
Claude 4系はリージョンによっては未対応のことがあるので、
AWS_REGIONをus-east-1かus-west-2から試してみてください。
テキトー教師WindowsとWSLの組み合わせで「WSLの環境変数がWindowsのClaude Codeに引き継がれない」という相談もありますね。WSL内でClaude Codeを使う場合はWSLのシェル設定ファイルに書く必要があって、Windowsのシステム環境変数とは別管理です。
まとめ:Claude Code環境変数の使い分け方
室谷今回はClaude Codeの環境変数について、
ANTHROPIC_API_KEYから始まって、プロキシ設定、Bedrock/Vertex AI連携、思考バジェット制御、MCP設定、VSCode連携まで一通り見てきました。
テキトー教師ポイントをまとめるとこういう感じですよね。
- 認証情報(
ANTHROPIC_API_KEYなど)はシェル設定ファイルかユーザーレベルのsettings.jsonで管理する - プロジェクトの
settings.jsonには絶対に書かない - 環境変数は
settings.jsonのenvキーにも書けるので、チーム設定はそちらで管理する ANTHROPIC_API_KEYを設定するとサブスクリプションよりAPIキーが優先される点に注意- 用途が決まったら、その用途に必要な変数だけ設定するのがシンプルで管理しやすい
室谷公式ドキュメントの環境変数一覧()は100変数以上ありますが、普段使いで必要なのは10個以下です。今回紹介したものを押さえておけば、ほぼすべてのユースケースに対応できます。
テキトー教師前回のClaude Codeのインストールやセットアップ記事と合わせて読むと、環境構築から設定の最適化まで一気通貫で理解できると思います。特にBedrockやプロキシ設定で詰まっている方は、この記事の該当セクションを繰り返し参照してみてください。
室谷.AI(ドットエーアイ)コミュニティでもClaude Codeの活用法は頻繁に話題になるので、「こんな設定をしているよ」という共有もぜひコミュニティでしてみてください。
