月初に Console の使用量ページを開いたところ、前の月には無かった従量の行が立っておりました。金額は珈琲一杯ぶんで、慌てるほどではありません。ただ、心当たりが一つもないという事実のほうが、胃のあたりに残りました。
Pro の請求は別に届いております。だとすれば、この行は誰が立てたのか。
答えは、数か月前に一度だけ試して、そのまま消し忘れていた環境変数でした。
会計は二つあり、Claude Code はそのどちらでも動きます
claude.ai のサブスクリプション(Pro・Max・Team・Enterprise)と、Console から発行する API キーの従量課金は、最初から別の会計です。片方に入っているからもう片方が無料になる、という関係にはなっておりません。
そして Claude Code は、その両方の資格情報を受け付けます。ここが見落とされやすいところで、ブラウザでログインを済ませていても、それだけでサブスクリプションが使われると決まるわけではないのです。
どのプランに入っているかではなく、いまどの資格情報が選ばれているかが、請求先を決めます。
プランそのものの選び方は個人開発者のための Claude プラン早見表 2026に分けて書いておりますので、ここでは「入っているプランが使われていない」という一点だけを扱います。
status の一行が、いまの財布を教えてくれます
Claude Code のプロンプトで /status と打つと、認証の節に Login method の行が出ます。ログインと API キーの両方が手元にある場合、使われていないほうの資格情報に印が付きますので、どちらが生きているかはこの一行で確定します。
プロファイル(ant auth login や、キーを作らない Console サインインが書くもの)が選ばれているときは、Login method ではなく Profile の行に置き換わります。行の名前が変わること自体が、「いま別の入り口から入っている」という合図です。
なお、保存済みのログインが期限切れになっていると、この行は期限切れの表示になり、保存されている組織とメールアドレスも一緒に出ます。この表示は v2.1.210 以降で、期限の3日前からは起動時にも警告が出ます(v2.1.203 以降。それ以前は5日前でした)。
端末側だけで確かめたいときは、Claude Code を閉じた状態で次のどれかを打ちます。
# macOS / Linux
echo $ANTHROPIC_API_KEY
# Windows PowerShell
echo $env:ANTHROPIC_API_KEY
# Windows コマンドプロンプト
echo %ANTHROPIC_API_KEY%何も出なければ環境変数は空です。逆に文字列が返ってきたら、その鍵が請求先を握っています。
優先順位は7段あり、ログインはいちばん下です
資格情報が複数あるとき、Claude Code は上から順に見て、最初に見つかったものを使います。順番は次のとおりです。
| 順位 | 資格情報 | 主な用途 |
|---|---|---|
| 1 | クラウドプロバイダ(CLAUDE_CODE_USE_BEDROCK / _VERTEX / _FOUNDRY) | Bedrock・Vertex・Foundry 経由 |
| 2 | ANTHROPIC_AUTH_TOKEN | Bearer 認証のゲートウェイ・プロキシ |
| 3 | ANTHROPIC_API_KEY | Console の API キーで直接叩く |
| 4 | apiKeyHelper の出力 | 短命トークンを都度取得する構成 |
| 5 | CLAUDE_CODE_OAUTH_TOKEN | CI など、ブラウザを開けない環境 |
| 6 | プロファイル・フェデレーション資格情報 | ant CLI・Workload Identity Federation |
| 7 | /login のサブスクリプション | Pro・Max・Team・Enterprise の既定 |
表を書き写してみて、私はようやく腑に落ちました。サブスクリプションは最優先どころか、最下段なのです。上に何か一つでも残っていれば、ログイン済みの表示はそのままに、請求だけが別の口へ流れます。
対話モードでは、環境変数のキーが見つかったときに一度だけ承認を求められ、その選択が記憶されます。あとから変えるときは /config の「Use custom API key」のトグルで、これは環境変数が設定されている間だけ画面に出ます。
無人の実行だけが、別の答えを返していました
ここからが、私が二日ほど遠回りをした部分です。
私は個人開発で、Lab の記事更新や壁紙アプリの素材整理を、cron から呼ぶシェルに任せております。その日も手元のターミナルで /status を開き、サブスクリプションで動いていることを確かめて、安心して閉じました。
ところが従量の行は、翌月も立ちました。
非対話モード(-p)では、承認の問いかけそのものがありません。キーが存在すれば常に使われます——対話セッションで「使わない」と選んだ記憶は、そこには効きません。cron から起動するシェルは対話の画面を持ちませんから、私が見ていた /status の表示は、無人側の実態を一度も代表していなかったのです。
対話の画面で確かめれば足りると思い込んでいたのだと気づいたのは、二度目の請求が届いたあとでした。
対話の画面で確かめた安心は、無人の実行には届きません。 無人の実行には、無人のまま自分で名乗らせます。
実行の前に一行だけ記録を残すラッパーを挟むと、翌朝には答えが出ております。
#!/bin/bash
# 無人実行の前に「どの資格情報で動くか」を記録してから起動します
set -euo pipefail
LOG="${HOME}/claude-runs/$(date +%F).tsv"
mkdir -p "$(dirname "$LOG")"
if [ -n "${CLAUDE_CODE_USE_BEDROCK:-}${CLAUDE_CODE_USE_VERTEX:-}${CLAUDE_CODE_USE_FOUNDRY:-}" ]; then
SRC="cloud-provider"
elif [ -n "${ANTHROPIC_AUTH_TOKEN:-}" ]; then
SRC="auth-token"
elif [ -n "${ANTHROPIC_API_KEY:-}" ]; then
SRC="api-key(従量)"
elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then
SRC="oauth-token(サブスク)"
else
SRC="login(サブスク)"
fi
printf '%s\t%s\t%s\n' "$(date -Iseconds)" "$SRC" "$*" >> "$LOG"
claude -p "$*"手元で走らせると、次の一行が残ります。
2026-09-20T15:02:11+09:00 api-key(従量) 記事の見出しを整えてください判定を優先順位の上から順に並べているのは、if の順序をそのまま表の順位に合わせるためです。並べ替えてしまうと、たとえばキーとトークンが両方ある環境で、記録だけが実態とずれます。記録が実態とずれたログは、無いログより厄介です。
無人実行そのものの取りこぼしについては、無音で半分になっていた定期実行と、欠落を捕まえる突き合わせで別の角度から掘り下げております。
消したはずの鍵が、明日また戻ってくる場所
unset ANTHROPIC_API_KEY は、いま開いているターミナルにしか効きません。翌朝また従量で動いていたなら、鍵は別の場所から復活しています。
| 置き場所 | 効く範囲 | 外し方 |
|---|---|---|
~/.zshrc / ~/.bash_profile | 新しいシェルすべて | 該当行を削除して読み直す |
| Windows のユーザー環境変数 | そのユーザーの全プロセス | システムのプロパティから削除し端末を再起動 |
設定ファイルの env ブロック | その設定が効くセッション | 設定ファイルから該当キーを削除 |
CLAUDE_CODE_OAUTH_TOKEN | 毎回の新セッション | シェルのプロファイルから削除 |
プロファイル(configs/) | プロファイルを見る面すべて | /logout または ant auth logout |
CLAUDE_CODE_OAUTH_TOKEN については一つ補足がございます。これはサブスクリプションで認証するトークンですので、請求先という意味では従量に流れません。ただし /login で入り直しても、シェルのプロファイルに残っている限り新しいセッションでは毎回読み直されますので、「入り直したのに戻る」という同じ手触りの迷いを生みます。
面による違いも、知っておくと迷いが減ります。Claude Desktop とクラウドのセッションは、これらの環境変数も apiKeyHelper も読みません。同じマシンで、ターミナルは従量、デスクトップはサブスクリプション、という状態はふつうに起こり得ます。
今日の一手
まずは Claude Code を開いて /status を一度だけ見て、Login method(あるいは Profile)の行を読んでください。印の付いていないほうが、いま請求を受けている側です。
私自身、この一行を月初の確認に加えてから、Console の使用量ページを開くのが怖くなくなりました。お読みいただきありがとうございました。