Claude Media
DISABLE_COST_WARNINGSでコスト警告を消す設定

DISABLE_COST_WARNINGSでコスト警告を消す設定

DISABLE_COST_WARNINGSはClaude Codeのコスト警告メッセージを消す環境変数です。置き場所ごとの効き方、隣の表示抑制変数との違い、効いたかどうかの確かめ方を扱います。

DISABLE_COST_WARNINGS は、Claude Codeのコスト警告メッセージを消す環境変数です。環境変数リファレンスでの定義は「1 を設定するとコスト警告メッセージを無効化する」の1行だけで、対象は画面上のメッセージです。トークンの使い方や課金の仕組みを変える設定ではありません。

ここでは、置き場所ごとの効き方、隣にある表示抑制系の変数との違い、設定が効いているかの確かめ方を扱います。確認はClaude Code v2.1.287で行いました。

消えるのは警告メッセージで、コスト表示の数字ではない

Claude Codeのコストは /usage(別名 /cost)のSession欄で見られます。ドル額はClaude Codeが手元でトークン数から計算した概算で、既定では定価ベースです。組織の管理設定に modelPricing の表があると、契約単価で計算されます。そのときは Total cost の行に at your organization's configured rates と添えられます。正式な請求額はClaude ConsoleのUsageページで確認する扱いです。

Session欄の合計は /clear で新しいセッションを始めるたびに0ドルへ戻ります(v2.1.211より前は、プロセスの終了まで積み上がっていました)。データレジデンシーの1.1倍料金で請求されるAPI応答は、トークンの定価に1.1を掛けて合計に入ります。この合計はステータスラインのコスト欄にも同じ値で出ます。

Claude MaxやProの契約者は利用量がプランに含まれるため、Session欄のドル額は請求に直結しません。/usage はコマンドを打って自分から開く画面で、DISABLE_COST_WARNINGS の定義にあるのは「警告メッセージ」の側です。

/usage には、プランの利用量を内訳で見る別の画面もあります。d キーと w キーで直近24時間と直近7日を切り替えられます。ただし数字は概算で、この端末のセッション履歴から計算されます。ほかの端末やclaude.aiで使った分は含まれません。警告を消しても、自分から数字を見にいく道は残ります。

警告を消す前に、似た名前のメッセージと取り違えていないかを見ておくと安全です。公式のコスト管理ページは、制限まわりの表示を次のように別々の項目として説明しています。

切り分け

コスト管理ページが分けている表示

  • 利用上限のメッセージ

    「You've hit your session limit」「weekly limit」など。サブスクリプションの利用枠が尽きた表示で、リセット時刻がメッセージに出ます。

  • 支出上限のメッセージ

    「individual spend limit」「org's monthly spend limit」など。usage creditsの上限に達した表示で、管理者が上限を上げると続けられます。

  • コンテキスト・自動コンパクトの警告

    利用上限ではなく、会話が自動コンパクトの閾値に近づいたという知らせです。対処は履歴の整理やモデル選択のほうにあります。

どれにどの対処が要るかは、コスト管理ページの「When a developer asks about a limit」に並んでいます。支出上限の表示が出て止まっている場合は、変数で隠すより「Could not update spend limit」の対処で原因を追うほうが早道です。

設定のしかた

シェルで渡す方法と、設定ファイルの env に書く方法があります。まず1回だけ試すなら、シェルの export が手軽です。

export DISABLE_COST_WARNINGS=1
claude

端末をまたいで固定したいときは、設定ファイルの env に書きます。自分だけなら ~/.claude/settings.json、プロジェクトの全員ならリポジトリにコミットする .claude/settings.json です。

{
  "env": {
    "DISABLE_COST_WARNINGS": "1"
  }
}

claude --help には --settings <file-or-json> があり、設定のJSON文字列を直接渡せます。ファイルに書かず、その起動だけに効かせたいときの選択肢です。

claude --settings '{"env":{"DISABLE_COST_WARNINGS":"1"}}'

--settings の値は、ユーザー・プロジェクト・ローカルの各ファイルより上、管理設定より下の優先順位で適用されます。

ファイルで渡す場合は、通常のファイルで、サイズは2 MiB以下に収める必要があります。JSONに書いたキーだけが上書きされ、書かなかったキーはファイルに書かれた値のまま残ります。env だけを足したい起動なら、ほかの設定を書き写す必要はありません。

シェルと設定ファイルで効き方はこう違う

くらべる

置き場所ごとの効き方

起動時に読む

シェルの export

claude を起動したときに読まれます。あとから値を変えても、実行中のセッションには届かず、次の起動で反映されます。

変更も追従

settings.json の env

起動時に適用され、保存した変更で env の内容が変わると実行中のセッションにも再適用されます。変数ごとの読み取りタイミングは、環境変数リファレンスの各行の記述に従います。同じ変数をシェルでも指定していると、設定ファイルの値が上書きします。

上書きにも例外があります。Claude Desktopアプリや自前環境のランナーがセッションを起動するときは、その起動環境がすでに設定している変数について、設定ファイルの env が無視されます。無視された変数名はデバッグログに出ます。

信頼する前の状態では、チームに配ったつもりの設定が効いていないことがあります。プロジェクトの .claude/settings.json やローカル設定の env は、一般にワークスペースを信頼してから適用されるためです。信頼ダイアログを出さない -p モードでは、起動時に適用されます。例外は、モデル選択やタイムアウト、制限、機能の切り替えなど、安全と分類された変数で、信頼の前でも起動時にすべての設定ファイルから読まれます。

セッションの途中で /cd を使って作業ディレクトリを移す場合は、v2.1.246以降で、移動先のプロジェクト設定とローカル設定の env が、前のディレクトリ分に加えて適用されます。

シェルで export 済みの値を打ち消したいときは、変数を "" に設定する方法があります。公式の説明は、空の値をプロバイダー選択では未設定として扱い、サブプロセスは空の値を引き継ぐというものです。DISABLE_COST_WARNINGS のような真偽値の変数は、次の節のとおり 0 を入れてオフにするほうが意図がはっきりします。

設定ファイル同士では通常の優先順位に従い、組織の管理設定がユーザー設定やプロジェクト設定より上に立ちます。管理者が DISABLE_COST_WARNINGS を配っている環境では、手元の設定で逆向きにできません。

値は1と0で切り替えられる

オンオフを切り替える変数は、1 / true / yes / on でオン、0 / false / no / off でオフになります。大文字小文字は問いません。DISABLE_COST_WARNINGS は次に挙げる例外の一覧に入っていないので、無効化したい期間だけ 1 にして、戻すときは 0 にするか行ごと消す運用が成り立ちます。

例外の一群もあります。次の変数などは、空でない値なら 0 を入れてもオンのままです。DISABLE_TELEMETRY、DISABLE_ERROR_REPORTING、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC が該当します。名前が似た DISABLE_ 系でも、値の扱いは変数ごとに違います。

隣にある表示抑制系の変数

UI上の警告やコマンドを個別に隠す変数は複数あり、対象はそれぞれ独立しています。

変数消す対象
DISABLE_COST_WARNINGS消す対象コスト警告メッセージ
DISABLE_INSTALLATION_CHECKS消す対象インストールに関する警告
DISABLE_DOCTOR_COMMAND消す対象セッション内の /doctor とその別名 /checkup
DISABLE_EXTRA_USAGE_COMMAND消す対象上限を超えた分の利用を買い足す /usage-credits コマンド
DISABLE_UPGRADE_COMMAND消す対象/upgrade コマンド
DISABLE_FEEDBACK_COMMAND消す対象/feedback コマンドとClaudeが下書きするフィードバック(/bug と /share も無効になる)

DISABLE_DOCTOR_COMMAND が隠すのはセッション内のコマンドで、ターミナルから打つ claude doctor は影響を受けません。DISABLE_INSTALLATION_CHECKS は公式で「インストール場所を手動で管理している場合にだけ使う」とされ、通常のインストールで使うと問題を覆い隠しかねない変数です。

まとめて切り替えるスイッチはないので、コスト警告だけ消してインストール警告は残す、という組み合わせもそのまま成立します。

設定が効いているかを確かめる

手順

確認の順番

  1. 1

    シェルの値を見る

    echo $DISABLE_COST_WARNINGS で値が空なら、export した端末と claude を起動した端末が別か、設定ファイルの階層違いが疑わしい状況です。

  2. 2

    設定ファイルの構文を見る

    ターミナルで claude doctor を実行します。カレントディレクトリの設定ファイルも読み、壊れていれば指摘します。

  3. 3

    セッション内で効いている設定源を見る

    セッションで /status を実行します。Status タブの Setting sources の行に、そのセッションで読み込んだ設定ファイルが User settings や Project local settings のように並びます。管理設定が効いている環境では、その項目の括弧内に、設定が手元へ届いた経路も出ます。ユーザー設定とプロジェクト設定のどちらが読まれたかを切り分けるのに使えます。

手順2は、一時ディレクトリに .claude/settings.json を作って試しました。末尾に余計なカンマが付いたJSONだと、claude doctor の出力に次の節が加わります。

Invalid settings
- <ディレクトリ>/.claude/settings.json: Invalid or malformed JSON

正しいJSONで {"env":{"DISABLE_COST_WARNINGS":"1"}} と書いたときは、同じコマンドが No installation issues found. で終わります。設定については何も指摘しません。つまり claude doctor が見ているのはJSONとして読めるかどうかで、キー名のつづりや、変数が実際に効いているかまでは確かめられません。変数が渡っているかはシェルの値とセッション内の挙動で見ます。

/doctor はセッション内で動くセットアップ点検のスキルで、設定ファイルのパース不能も見ます。claude doctor は読み取り専用の診断で、セッションを始めずに実行できます。

警告を消す判断は、他の可視化経路とセットで考える

コストを「見せる」側の仕組みには、/usage のほか、OpenTelemetryによるチーム単位の可視化、管理者が決める支出上限があります。DISABLE_COST_WARNINGS は逆に表示を減らす設定なので、他の経路でコストを追えているなら影響は小さく、追えていないなら気づく機会が1つ減ります。

公式の目安では、エンタープライズ導入全体の平均は開発者1人あたり稼働日1日につき約13ドル、月150〜250ドルで、利用者の90%は稼働日あたり30ドル未満に収まります。残りの1割は30ドルを超える日があるということで、警告はそうした日に気づく入り口の1つです。

非対話の実行には、--max-budget-usd <amount> で呼び出しの支出に上限を置く方法もあります。claude --help では --print と組み合わせたときだけ働くと説明され、1.1倍を掛けた合計もこの上限の計算に入ります。警告の表示を消す変数とは役割が逆で、上限を超えると実際に止める側の設定です。

サブエージェントの支出もこの上限に数えられます。上限に達すると、新しいサブエージェントの起動は Budget limit reached で失敗し、動いているバックグラウンドのサブエージェントも止められます。この上限での強制動作はv2.1.217以降の挙動です。--continue や --resume で再開した場合、前回の実行までの累計は上限の計算に入りません。

チーム単位での可視化・上限設定・トークン削減はClaude Codeのコスト管理にあります。OpenTelemetryでの利用量とコストの可視化はClaude CodeのOpenTelemetryで利用量とコストを可視化が扱っています。環境変数の全体像はClaude Code環境変数リファレンスが扱っています。

まとめ

この変数が消すのはコスト警告メッセージだけで、利用上限や支出上限の表示とは別系統です。警告を消しても、/usage で自分から数字を見る道は残ります。チームで固定するなら、プロジェクト設定の env は一般に信頼後の適用になる点と、管理設定が最優先になる点が効かないときの切り分け先です。

この記事を共有:XはてブLinkedIn