dekinai 開発ブログ 記事の一覧

使い切ったはずの上限を超えて、残高が -$0.01 になった

執筆 / 公開

claude-codemulti-sessioncontext-handoff

Claude Pro のプロモーションクレジット $100 を使い切ろうとして、月間利用上限を $1.02 に 設定した。結果は $1.08 使用(106%)、残高 -$0.01

マイナスの残高は請求ではない。ただし「上限で止まる」という思い込みは外れる。 何が止めていて何が止めていないのか、公式ドキュメントとサポートへの問い合わせで確かめた。


前提 — 4つの数字を混ぜない

この話が分かりにくいのは、似た名前の数字が4つあるためだ。混ざると原因を取り違える。

名前 何の数字か リセット
プラン込みの利用枠 Pro に最初から付いてくる分。無料で使える範囲 5時間ごと
使用クレジット(残高) 枠を使い切った後に使う前払いの財布。API 相当の従量課金 減るだけ。チャージで増える
月間利用上限 財布から1か月に出してよい額の上限。自分で設定する 毎月
プロモーションクレジット 配布されたクレジット。同じ財布に入る 期限あり

上限と残高は別の数字。 上限は「出してよい額」、残高は「入っている額」。 今回はこの2つがどちらも $1 前後で、しかも近い値だったので混同しやすかった。


起きたこと

画面にはこう出ている。

$1.08使用          ████████████████ 106%使用
Sep 1にリセット

$1.02              [上限を調整]
月間利用上限

-$0.01
現在の残高・自動チャージ オフ

「上限 $1.02 に設定したのに $1.08 使われている」「残高がマイナスになっている」の2点が 腑に落ちなかった。


公式には何が書かれているか

注意点がひとつある。ヘルプセンターの記事は対象プランごとに分かれていて、 書いてある内容も違う。 Pro の話をしているのに Team 向けの記事を読むと、 書いていないことを読んだ気になる。

Pro / Max 向けの記事

Manage usage credits for paid Claude plans

この記事に、上限を超えうるという記述は無い。 残高がマイナスになる話も、 月が変わったときに残高がどうなるかも書かれていない。全文を読んで確認した。

Team / シートベース Enterprise 向けの記事

Manage usage credits for Team and seat-based Enterprise plans

こちらには FAQ に「なぜ上限を超えられたのか」という項目がある。

Why was I able to exceed my spend limit? It's possible to slightly exceed your defined spend limit. Our system checks if you're within your limit before you're allowed to make a single request or send a message. Once the request is processed, we calculate your token consumption, which means you may bypass your limit with that request. Once this happens, any subsequent requests will be blocked.

要点は2つ。

  1. 上限の判定はリクエストを投げる前
  2. 消費量の計算はリクエストを処理した後

判定と計算の間にずれがあるので、最後の1本ぶんだけ上限をはみ出す。 はみ出した後は以降のリクエストがブロックされる。

同じ記事にはこうもある。

What happens when I reach my spend limit? If your account is configured for usage credits and you exceed your set spend limit, you won't be able to use Claude, Cowork, or Claude Code again until the next billing period, or until your limits are adjusted.

止めているのは上限であって残高ではない。 そして戻るのは翌請求期間、 または上限を自分で引き上げたとき。


例題 — 「最後の1本」で何が起きるか

上の仕組みを、今回の数字に当てはめて組み直すとこうなる。 これは公式の仕組み説明から作った例で、実際のログを見たわけではない。

上限は「そこで止まる線」ではなく「そこを超えたら次から止める線」。 1リクエストの費用が事前に分からない以上、この作りは避けにくい。 1リクエストが高くつくほど、はみ出す額も大きくなる。

数字が合わない部分

ただし、残高側の数字はこの説明では合わない。

$98.97 / $1.03 / $1.08 はいずれも2桁で丸めた表示なので、丸めの影響はある。 それでも4セントの差は丸めだけでは説明しにくい。ここは分かっていない。

「上限を $0.06 超えた結果、残高が -$0.01 になった」という因果では書けない、 というのが今回はっきりしたことだ。


サポートに聞いた

AI サポート(Fin)に問い合わせた。以下は返答の引用で、 Anthropic の公式見解ではなく AI サポートの回答である。

システムは、メッセージを送信する前に上限内かどうかを確認します。しかし、実際の トークン消費量はリクエスト処理後に計算されるため、そのリクエストで上限を超える 可能性があります。上限を超えた後は、以降のリクエストはすべてブロックされます。

仕組みの説明としてはヘルプセンターの記述と一致する。ただし出典が Team / Enterprise 向けの記事だった。 Pro の記事には同じ項目が無いので、この説明を Pro に当てはめた 公式の記述は、探した範囲では存在しない。

さらに聞いていくと、こうなった。

つまりシステムは <=0 では停止することなく <0 で停止するということでしょうか

はい、その理解で正しいです。(中略)システムは「残高≤0で停止」ではなく、 「残高<0になった後に停止」という動作をします。

この整理は正確ではない。 公式が書いているのは上限(spend limit)の事前判定と 事後計算のずれであって、残高の境界条件ではない。 上限 $1.02 と残高 $1.03 は別の数字なのに、回答は途中から両者を混ぜている (「残高が $0.05 で上限が $1.02 の場合」という例が出てくる)。

こちらの言い回しに同意が返ってきただけ、と読むのが妥当だった。 誘導しやすい質問を投げると、そのまま肯定が返る。

他にもいくつか噛み合わない点があった。

AI サポートの回答は、リンクが付いていてもリンク先がその内容を書いているとは限らない。 出典が示されたら開いて確かめる。今回はそれで5か所ずれていた。


請求されるのか

画面から言えることだけ書く。

支払いに向かう経路が有効になっていない。 マイナス残高は 「配布されたクレジットを1セントぶん超えて使った」という記録であって、 請求書が立つ状態ではない。

サポートも請求は発生しないと答えている。ただし前述のとおり、 その回答が示した出典はこの点を書いていない。画面の状態のほうが根拠として確か。


分かっていないこと


まとめ


出典