まとめ
プロジェクトの.envにANTHROPIC_API_KEY=sk-ant-...の行が含まれていて、かつシェルがそのファイルを読み込んでいる(direnv、source .envなど)と、Claude Codeはその鍵をAPI課金で使う。月額のMax planの購読認証は使われない。Claude Codeはセッション開始の挨拶の段で「今は購読かAPI鍵か」を表示するが、一度きりの表示で見落としやすい。自動補充がAPI側の既定で有効だと、月末の請求や前払い残高の枯渇まで気づかない。
2026年5月13日のReddit投稿(ID 1tbaq2d、約11時間で332ポイントと86コメント)では、9回の自動補充で約187米ドルの取り返し不能の損失が発生した。Anthropicの公式回答は「意図された機能、ドキュメントは正確」で、消費済の前払い金は返金しないと明言した。
2026年6月15日の課金分離(プログラム的利用がPool 2の従量へ分離される変更)で、この罠は踏みやすくなる。 分離への対応として「ANTHROPIC_API_KEYを発行してAPI課金へ移行する」のは正攻法の一つだが、その鍵をシェル全体に効かせると、自動運用だけでなく対話の利用まで従量課金に流れる。発火当日の起票 #68406 でも、月200米ドルの購読を払っているのにコンソールのclaudeが購読を使わず課金される、という同じ混乱が報告された(原因は環境に残ったANTHROPIC_API_KEY)。崖の対応で鍵を入れるなら、鍵を「自動運用だけ」に効かせる(下記の対処)のが要点になる。
注意: これはClaude Codeのバグではない。標準の環境変数の優先順位 + 利用者側の.envの読み込み + 見落としやすい挨拶の表示 + 自動補充の既定値、の組み合わせで発生する。下記の対処は利用者側で動かせる部分を扱う。
仕組み
Claude CodeのBashの道具がコマンドを実行する時、子プロセスは親から全ての環境変数を継承する。.envをdirenvやシェルの起動スクリプトで読み込んでいれば、ANTHROPIC_API_KEYもそのまま継承される。
Anthropicの認証の優先順位:
- 環境変数
ANTHROPIC_API_KEY(空でない場合) - 設定ファイル
- 購読の認証(Max planなど)
ANTHROPIC_API_KEYが空でない値で設定されていれば、購読は使われない。これは公式に文書化された挙動で、公式回答も「意図された機能」として確認した通り。
公式回答の原文:
Claude Code is designed to prioritize API keys set as environment
variables over subscription credentials.
This is intentional functionality.
画面表示には実は合図がある。Claude Codeはセッション開始時の挨拶の段で「現在の認証は購読か、API鍵か」を表示する。Reddit投稿の議論で複数の利用者が独立して証言している(「Claude Code window tells you whether it's using a subscription」、「the first thing Claude tells you then is it using API billing」)。ただし一度きりの表示で、作業に集中していると読み飛ばす。次に気づく合図は、課金通知のメールか、前払い残高の枯渇か、月末の請求の急増だ。
つまり、利用者の理解(「Max planで課金は固定」)と、実態(「環境変数でAPI課金に変質」)の乖離は、合図ゼロで起きるのではなく、見落としやすい挨拶の段の一行 + 自動補充の既定値、の組み合わせで継続する。
Claude Codeが「やらない」こと
Reddit投稿の議論では、複数の経験のある開発者が独立して「Claude Codeは.envを自動読みしない」と証言した(8件以上のコメント)。.envにANTHROPIC_API_KEYの行があるだけでは、Claude Codeには影響しない。利用者のシェルがdirenvやsource .envで先に読み込んでいる場合のみ、Claude Codeの子プロセスが環境変数を継承する。利用者側の自分の作業の場の構成が起点だ。
自分のプロジェクトを点検する
直近で使ったプロジェクトのルートで、次の一行を実行する。
grep -E '^[[:space:]]*(export[[:space:]]+)?ANTHROPIC_API_KEY[[:space:]]*=' .env .env.* 2>/dev/null
.env系のファイルに代入の行があれば表示される。何も出なければ問題ない。
加えて、Anthropicのconsoleで直近30日の請求項目を確認する。想定外のAPI課金があれば、すでに黙って課金されていた可能性がある。
対処は3種類
対処1: .envの行を削除
.envからANTHROPIC_API_KEY=...の行を削除する。アプリの本体でAPI鍵が必要なら、Claude Codeのシェルが読まない別のファイル(例: .api-keys)に移して、アプリの起動スクリプトの中だけで読み込む。
弱点: チームの他のメンバーが行を戻すと再発する。
対処2: シェル起動時に空にする
~/.bashrcや~/.zshrcの末尾に追加する。
unset ANTHROPIC_API_KEY
または
export ANTHROPIC_API_KEY=""
どのプロジェクトの.envで設定されても、シェル起動時に空になる。弱点: Claude Code以外でAPIを使う(例: PythonのSDKスクリプト)時には、明示的に設定し直す必要がある。
対処3: cc-safe-setupのhookで自動検出
cc-safe-setupを採用していれば、2026年5月13日に追加した新規のhookで自動検出できる。
{
"hooks": {
"SessionStart": [{
"hooks": [{ "type": "command", "command": "~/.claude/hooks/dotenv-anthropic-key-billing-guard.sh" }]
}]
}
}
このhookはSessionStart時にプロジェクトの中の5種類の.env系ファイル(.env、.env.local、.env.development、.env.production、.env.dev)を走査し、代入の行があれば警告を出す。コメントアウトと空値は除外する。CC_DOTENV_AK_FILESで対象ファイル、CC_DOTENV_AK_ACTIONで警告かブロックかを設定できる。
警告内容は、検出されたファイル一覧、3種類の対処素案、出典のRedditのURLを含む。既定はブロックせず警告のみで、セッション開始時に「今のセッションはMax planかAPIか」を判定できる。テストは21件で全件パス済。hook本体は cc-safe-setup の examples/dotenv-anthropic-key-billing-guard.sh にある。
※ この hook は npm で配布中の 29.8.0(2026年4月20日)より後に追加したため、
npx cc-safe-setupでは入りません。npx github:yurukusa/cc-safe-setup --install-example dotenv-anthropic-key-billing-guardのように保管庫を直接指してください(npm への公開は資格情報の失効で止まっています)。
なぜ「意図された機能」なら対処の設計が変わるか
これはバグではなく、設計通りの動作だと公式が明言した。バグなら修正を待つ選択肢があるが、設計なら修正は来ない。利用者側のツールで対処するしかない。
これが、公式CLIのオプション追加や設定の新規追加を待つのではなく、SessionStart hookで自動検出する設計を選んだ理由だ。利用者側だけが動ける。
同じ「意図された設計と利用者の理解の乖離」のパターンは、Claude Codeの他の場所でも観察される。
- Issue #58550:
/goalにサーキットブレーカーがなく、200回超の繰り返しで5時間、週次利用枠の50%を黙って消費する - Issue #58289:
permissions.askが既定モードのMCPの道具で無視される - Issue #58297:
agentsの表示がターン完了後もバックグラウンドbashを「Working」と誤表示する
いずれも、利用者の理解が公式UIで更新されず、利用者側の観察ツールがないと乖離が継続する場所だ。
関連素材
予防hookの集まりは cc-safe-setup(無料)。この記事のdotenv-anthropic-key-billing-guard.shもここに入っている。
6月15日の課金分離そのものへの対応(自分の利用量が分離の対象か5分で確かめる手順、4つの対応の経路、費用の見積もり)は、Claude Code の6月15日の課金分離に備える本(¥800、第2章まで無料)にまとめた。発火当日に追加した第8章で、この記事のANTHROPIC_API_KEYの罠を含む、発火初日に実際に起票された3つの混乱への利用者側の対応を整理している。
こうした課金や仕様の変更は、毎月のように新種が出る。今月実際に起きた事故と仕様の変更を実機で検証してまとめ、安全チェックリストとコピペできる hook と設定例を月次で配信しているのが Claude Code 事故まとめ(無料・月次)。一回売りの本が「過去の事故の体系化」なのに対し、 この月刊は「今月また起きる新しい事故」への継続の追従。
おわりに
-
.envのANTHROPIC_API_KEYは、Claude CodeのMax plan購読を黙って上書きする - 公式が「意図された機能」と確認した動作で、修正は来ない
- 対処は3種類: 行の削除/シェルで空に設定/hookで自動検出
- 直近のプロジェクトで
grepの一行を試し、該当があれば今日のうちに対処することを推奨する
消費済の前払い金は返金されないため、予防の優先度は高い。
Claude Code の運用・安全・費用の検証記事は、これからも続けて公開します。note のゆるくさ をフォローしておくと、新しい記事を公開したときに通知が届きます(無料)。
トークンの消費がどこで膨らんでいるかを実機のログから切り分け、設定と文脈の管理とワークフローの設計で半分まで減らす全手順は、Claude Code のトークン消費を半分にする本(¥2,500・第1章まで無料の試し読み)にまとめています。
この記事の API キーの優先は、「購読しているのに従量課金される」原因の一つです。同じ症状でも、原因は4つ(共有の設定の上書き / 環境変数 ANTHROPIC_API_KEY の優先 / サーバー側の購読の資格の解決の失敗 / Desktop版とCLIの併存)に分かれます。自分がどれに当てはまるかは、ブラウザの中だけで完結する無料の 購読なのに従量課金 自己診断(5問・送信なし)で切り分けられます。
.env の API キーで知らないうちに Max plan が使われる、のような「無断の課金」を含め、データ消失・暴走・無断課金を実行の前で止める側の手順は、Anthropic 公式ガイドにない事故防止本(第3章まで無料の試し読み)に、800時間の自律運用の全手順としてまとめています。¥2,500 の節約ガイドの前に置ける、件数では一番読まれている摩擦の低い入口です。
ほかにも、800時間の運用データから、トークン消費の削減・複数ベンダー(Claude / Codex / Gemini / Copilot)の並行運用・サブエージェントの沈黙の失敗対策など、テーマ別の手引きを公開しています。気になる人は著者の本の一覧から、価格と評価を見て選べます。