メインコンテンツへスキップ
環境変数は、モデル選択、認証、リクエストルーティング、機能トグルなど、Claude Code の動作を制御できます。同じ動作の多くは、設定ファイルフィールド、CLI フラグ、または /model などのセッション内コマンドを通じても設定できます。 このページでは、以下の内容について説明します。

環境変数を設定する

シェルで設定した変数はそのターミナルセッション中のみ有効ですが、設定ファイル内の変数は claude を実行するたびに適用されます。

シェルで変数を設定する

claude を起動する前に変数を設定します。
すべてのセッションで設定するには、export 行を ~/.bashrc、~/.zshrc、またはシェルのプロファイルファイルに追加します。
代入行は成功時に何も出力しないため、同じシェルで変数を出力して確認します。

設定ファイルで変数を設定する

settings.json ファイルの env キーの下に変数を追加します。ファイルが存在しない場合は作成します。Claude Code はファイルから直接読み込むため、claude がどのように起動されたかに関わらず有効になります。実行中のセッションは、ファイルを保存するときに新しい値と変更された値を環境に適用しますが、OpenTelemetry monitoring のように起動時に変数を一度だけ読み込む機能は、再起動するまで起動時の値を保持します。ファイルから変数を削除しても、実行中のセッションではその変数は設定解除されません。削除は claude を次に起動するときに有効になります。
~/.claude/settings.json
Claude Code はこれらの値を記述されたとおりに環境にコピーします。シェルによる処理は行われないため、~ や $HOME などの省略表記は入力したままの状態で残ります。CLAUDE_CONFIG_DIR のようにパスを受け取る変数には、絶対パスを記述してください。例: "CLAUDE_CONFIG_DIR": "/home/you/.claude-work"。 選択したファイルは、変数が適用される対象を制御します。 各ファイルの場所については Settings files を、複数のファイルが同じ変数を設定する場合の組み合わせ方については Settings precedence を参照してください。

優先順位

いくつかの動作には環境変数と専用の設定キーの両方があり、Claude Code がどちらを最初に読むかはキーごとに異なります。ANTHROPIC_MODEL と CLAUDE_CODE_AUTO_CONNECT_IDE の場合、Claude Code は変数を最初に読み、変数が設定されていない場合にのみ model または autoConnectIde 設定を使用します。設定しているペアについては、以下の変数の行と 設定リファレンス のキーのエントリを確認してください。 同じ変数がシェルと設定ファイルの env ブロックの両方で設定されている場合、ほとんどのセッションで設定ファイルの値が適用されます。Claude Code は各 env エントリをプロセス環境に書き込み、シェルから継承された値を置き換えます。env 値がシェルとどのように相互作用するか は、代わりに継承された値を保持するセッションについて説明しており、env 設定 はそれらがいつ適用されるかを示しています。いくつかの変数は特別な扱いを受けます。env 設定 は例外をリストしています。 設定ファイルでは変数を設定できますが、削除することはできません。制御していないシェルプロファイルによってエクスポートされた古い CLAUDE_CODE_USE_VERTEX など、設定を解除できない変数をオーバーライドするには、env ブロックで空の文字列に設定します。"CLAUDE_CODE_USE_VERTEX": ""。Claude Code は空の値をプロバイダー選択の未設定として扱います。サブプロセスは引き続き空の値を継承します。 設定ファイル間では、env 値は 設定の優先順位 に従うため、マネージド設定エントリはユーザーまたはプロジェクト設定の同じ変数をオーバーライドします。プロジェクトおよびローカル設定は、CLAUDE_CONFIG_DIR や OpenTelemetry エクスポーター変数など、一部の変数を設定できません。env で Claude Code が無視する変数 は、それらと、引き続き適用される OpenTelemetry オフ値をリストしています。 環境変数が CLI フラグおよびセッション内コマンドとどのように相互作用するかは、機能ごとに異なります。--model と /model は ANTHROPIC_MODEL をオーバーライドしますが、CLAUDE_CODE_EFFORT_LEVEL は --effort と /effort をオーバーライドします。変数が別の設定ソースと相互作用する場合、変数 リストの行は優先順位を示すか、それを文書化するページにリンクします。 Claude Code はスタートアップ時にシェル環境変数を読み込むため、それらへの変更は次回 claude を起動するときに有効になります。設定ファイルの env キーの下に設定された変数は、設定ファイルで変数を設定する で説明されているスタートアップのみの例外を除き、ファイルが変更されたときに実行中のセッションに再適用されます。

変数

タイムアウト、トークン予算、再試行回数などの数値変数は、通常の数字に加えて指数表記と桁区切りの表記も受け付けます。ただし、変数の行に数字のみを受け付けると記載されている場合を除きます。たとえば、Claude Code は 2e3 を 2000、64_000 を 64000 として読み取ります。v2.1.211 より前は、これらの表記によって、1e6 がタイムアウトを 1 に設定するなど、はるかに小さい値が警告なく設定されることがありました。
動作をオンまたはオフにする変数では、オンにするには 1、true、yes、on のいずれかを、オフにするには 0、false、no、off のいずれかを設定します。大文字と小文字は区別されません。一部の変数は、設定されているかどうかのみを読み取ります。そのため、0 を含む空でない値はすべて動作をオンにし、動作をオフにするには変数の設定を解除するか空の値を設定します。次の変数がこのように動作します。
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • DISABLE_TELEMETRY
  • DISABLE_ERROR_REPORTING
  • CLAUDE_CODE_TMUX_TRUECOLOR
  • IS_DEMO
各変数の行にも、それぞれのルールが記載されています。
標準の OpenTelemetry エクスポーター変数(OTEL_METRICS_EXPORTER、OTEL_LOGS_EXPORTER、OTEL_EXPORTER_OTLP_ENDPOINT、OTEL_EXPORTER_OTLP_PROTOCOL、OTEL_EXPORTER_OTLP_HEADERS、OTEL_METRIC_EXPORT_INTERVAL、OTEL_RESOURCE_ATTRIBUTES、およびシグナル固有のバリアント)もサポートされています。設定の詳細については、モニタリングを参照してください。 CLAUDE_CODE_ENABLE_TELEMETRY と、エクスポートをオンにする、エクスポート先を選択する、またはコンテンツを取得する OpenTelemetry 変数は、シェル、ユーザー設定、または管理設定で設定します。Claude Code は、そのセクションで説明されているオフの値を除き、プロジェクト設定とローカル設定ではこれらを無視します。OTEL_RESOURCE_ATTRIBUTES と、OTEL_METRIC_EXPORT_INTERVAL などのエクスポート間隔、タイムアウト、圧縮に関する変数は、プロジェクト設定とローカル設定からも引き続き適用されます。

サブプロセス環境のスクラブで削除されるもの

CLAUDE_CODE_SUBPROCESS_ENV_SCRUB を 1 に設定すると、Claude Code は Bash コマンド、フック、stdio MCP サーバーなど、自身が起動するサブプロセスの環境から認証情報を削除します。これにより、プロンプトインジェクション攻撃が読み取れる情報が減ります。Claude Code のプロセス自体は、独自の API 呼び出しのために認証情報を保持します。 スクラブは変数名または値の形式によって認証情報を識別するため、唯一の制御手段としてではなく、範囲を絞った権限ルールと併用する一つの層として使用してください。 次の表は、スクラブが例示の変数に対して行う処理を示しています。 スクラブは GITHUB_TOKEN をそのまま残すため、GitHub Actions のジョブには必要最小限の permissions を付与してください。サンドボックス化された Bash コマンドから GitHub トークンを削除するには、sandbox.credentials の下に deny エントリを追加します。 サブプロセスが削除対象の変数のいずれかを必要とする場合は、スクラブを設定しないでください。 Linux では、スクラブは Bash サブプロセスを分離された PID 名前空間でも実行するため、サブプロセスは /proc を通じてホストのプロセス環境を読み取れません。その副作用として、ps、pgrep、kill はホストのプロセスを参照したり、シグナルを送信したりできません。 v2.1.251 より前のバージョンでは、スクラブは ANTHROPIC_API_KEY と AWS_SECRET_ACCESS_KEY を削除し、表に示したその他の例示の変数は変更せずに残していました。

機能フラグの取得が必要な機能

Claude Code の一部の機能は、Anthropic から取得する機能フラグによってオンになります。次のセッションでは、Claude Code はこの取得をスキップします。
  • CLAUDE_CODE_DISABLE_FEATURE_FLAGS、DISABLE_TELEMETRY、DO_NOT_TRACK、または CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC を設定したセッション。どの値で取得がオフになるかは、変数の表の各変数の行に記載されています
  • Amazon Bedrock、Claude Platform on AWS、Google Cloud の Agent Platform、Microsoft Foundry などのサードパーティプロバイダー上のセッション。ただし、Claude Code を組み込んだホストプラットフォームが CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST を設定している場合を除きます
  • Claude apps ゲートウェイのセッション
取得がオフの場合、次のことはできません。

インストールまたはアップグレード後の最初のセッション

Claude Code をインストールした後、または機能が追加されたバージョンにアップグレードした後の最初のセッションでは、フラグで制御される機能が利用できないことがあります。そのセッション中に Claude Code が機能フラグを取得すると、フラグはマシンに保存されるため、そのマシンでの次のセッションでは機能が利用できます。 次のような構成では、最初以降のセッションも、新たに取得したフラグなしで開始されます。
  • 実行のたびにクリーンな環境になる場合: 各実行が CI コンテナや、以前のセッションが保存したフラグのないその他の環境で開始される場合、すべての実行が最初のセッションになります
  • API キーのないゲートウェイトークンの場合: API キーなしで ANTHROPIC_AUTH_TOKEN を使用して認証し、ANTHROPIC_BASE_URL が LLM ゲートウェイなど Anthropic 以外のホストを指している場合、Claude Code にはフラグを取得するための認証情報がありません

関連項目