
Claude Maxプランで契約しているのにCredit balance too lowが出た話
こんにちは、AI事業本部・生成AIインテグレーション部・西日本開発チームの政岡です。
先日、大阪で開催された「Claude Managed Agents Workshop」に参加してきました。
ハンズオンではClaude Managed Agentsの機能を一通り触りました。
普段の利用では触らない部分まで手を動かして試せて、とても学びの多いワークショップでした。
その数週間後、普段どおりClaude Codeを使っていたところ、突然次のメッセージが表示されました。
Credit balance too low · Add funds: https://platform.claude.com/settings/billing
私はClaude Maxのサブスクリプションで使っているので、従量課金の残高が尽きるようなことはないはずです。
心当たりがなく調べてみると、ワークショップで設定したant auth loginの認証情報が、Claude Codeの認証に使われていたことが原因でした。
この記事では、実際に何が起きていたのか、Claude Codeの認証の優先順位がどうなっているのかを、公式ドキュメントと手元の環境で確認しながらまとめます。
何が起きたか
Claude Codeで/statusコマンドを実行すると、Profileの行がcredentials-file · user_oauth · profile defaultになっており、Claude MaxのアカウントでOAuthログイン(/login)しているはずなのにuser_oauthという別の認証方式が使われていました。

ワークショップのプロファイルが残っていた
antはClaude Platformを操作するCLIで、~/.config/anthropic/に認証情報を保存します。configs/default.jsonが、ant auth loginで作られたプロファイルの設定ファイルで、中身は次のとおりでした。
{
"version": "1.0",
"authentication": {
"type": "user_oauth",
"client_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"organization_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"workspace_id": "wrkspc_xxxxxxxxxxxxxxxxxxxxxxxx"
}
organization_idとworkspace_idは、ワークショップのために作成した組織・ワークスペースのものでした。
ant auth statusでも同じ組織が表示されます。
Logged in to <組織名> as <メールアドレス>
Workspace
(active) * Workspace wrkspc_xxxxxxxxxxxxxxxxxxxxxxxx (0731 Claude Managed Agents Workshop)
ワークショップの日以降、ant auth loginをやり直した覚えはありません。それでもcredentials/default.jsonの最終更新日時は8/21の朝になっていました。
つまりClaude Codeが裏でこのプロファイルの認証を使い、アクセストークンをリフレッシュし続けていたことになります。
公式ドキュメントで確認する
Claude Codeの認証まわりのドキュメント(Authentication precedence)に、この動作を説明した記述がありました。
The
user_oauthrule keeps a leftoverant auth loginprofile from moving your requests off the account you signed in to with/login.
ant auth loginで作られるuser_oauthのプロファイルは、/loginの認証情報が有効な間は優先されない設計になっています。裏を返すと、/loginの認証情報が何らかの理由で無効になった瞬間、ant auth loginで残っていたプロファイルにフォールバックすることになります。
実際に再現してみる
この動作を手元で再現してみました。claude --debugでClaude Codeを起動すると、認証に関する判断がデバッグログに残ります。
まずMaxアカウントで正常にログインできている状態で起動し、デバッグログを確認しました。
[WARN] An Anthropic profile (~/.config/anthropic) is configured,
but a claude.ai login exists — using the claude.ai login.
Set ANTHROPIC_PROFILE=<name> to use the profile instead.
Claude Codeが~/.config/anthropicに残っていたプロファイルの存在を認識したうえで、/loginの認証情報(claude.ai login)を優先して使っている、という内容です。
末尾の「Set ANTHROPIC_PROFILE=<name> to use the profile instead」は、ANTHROPIC_PROFILE環境変数で名指しすればこのプロファイル側を強制的に使わせることもできる、という案内です。
次に/logoutでClaude Code側の認証情報を消してから、もう一度claude --debugで起動しました。
[INFO] Using Anthropic profile auth (profile-implicit);
a claude.ai login (/login) would take precedence over it
今度はuser_oauthプロファイル側が使われる表示に変わりました。
ログ自体にも「/loginがあればそちらが優先される」と明記されており、/loginが無効な今だけこのプロファイルが使われていることが読み取れますね。
冒頭で起きた「突然のCredit balance too low」は、この状態でリクエストが送られ、ワークスペースの残高が尽きたために出ていたと考えられます。
対処法
公式ドキュメントのAnthropic profiles and federation credentialsには、Anthropicプロファイルを選ばせないようにする方法も書かれています。
Active profile: run
ant auth logoutfor auser_oauthprofile, or delete the profile's file fromconfigs/in your configuration directory for either auth mode
どちらか一方で十分です。私は両方実行しました。
ant auth logout
# ✓ Logged out of profile "default".
rm ~/.config/anthropic/configs/default.json
実行後、ant auth statusを実行すると、Credentialsの行が次のように「not configured」になり、ワークショップの組織・ワークスペースの情報は表示されなくなりました。
Credentials
(profile "default" not configured — run `ant auth login` to set it up)
Claude Code側は/loginでMaxアカウントにログインし直し、/statusのProfileの行がサブスクリプションのアカウントを指していることを確認して完了です。
まとめ
ant auth loginの認証情報は、/loginの認証情報が有効な間は優先されない設計になっていますが、/login側が無効になると自動的にant auth loginの認証情報へ切り替わります。
普段Claude Codeをサブスクリプションで使っていて、ワークショップやハンズオンで一度ant auth loginを使ったことがある方は、使い終わったプロファイルをant auth logoutで消しておくと安心です。








