◉CLAUDE LABEN
●2.1.302 — fork サブエージェントが claude -p・Agent SDK・デスクトップで既定オンになりました。無効化は CLAUDE_CODE_FORK_SUBAGENT=0(10/16)●2.1.307 — スリープやキーチェーンロックのあとに MCP が再接続されない問題を修正しました(10/21)。2.1.306 では claude -p の誤表示も解消●SONNET 4.5 — Claude API での提供終了は 11/30、残り38日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.302 — fork サブエージェントが claude -p・Agent SDK・デスクトップで既定オンになりました。無効化は CLAUDE_CODE_FORK_SUBAGENT=0(10/16)●2.1.307 — スリープやキーチェーンロックのあとに MCP が再接続されない問題を修正しました(10/21)。2.1.306 では claude -p の誤表示も解消●SONNET 4.5 — Claude API での提供終了は 11/30、残り38日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-10-22初級

claude -p だけがログインを認めてくれないとき — 再ログインの前に確かめる資格情報の優先順位

対話では動くのに claude -p やスクリプトからだけログインを拒まれるとき、/login をやり直す前に見る場所を、公式の認証ドキュメントの優先順位に沿って並べました。

Claude Code272認証8claude -pトラブルシューティング59環境変数8CLAUDE_CODE_OAUTH_TOKEN

ターミナルで /login をやり直すと、画面には「Login successful」と出ました。それなのに、スクリプトの中から呼んだ claude -p だけが、同じようにログインを拒むのです。

こういう場面で手が止まるのは、ログインそのものが壊れているように見えるからだと思います。再ログインを二度、三度と繰り返し、ブラウザのタブだけが増えていく——そんな遠回りを、できれば皆さまには避けていただきたいのです。

最初にお伝えしたいのは、多くの場合、壊れているのはログインではなく「どの資格情報が選ばれているか」の側だということです。公式の認証ドキュメントには、Claude Code が資格情報を選ぶ順番がはっきり書かれています。私はその順番を、手元で確かめる手順に置き換えて書き残しております。

まず /status で、実際に使われている方法を見る

再ログインの前に、対話画面で /status を開きます。ここで見るのは、ログイン方法の行です。

ドキュメントによると、ログインと API キーが両方設定されているときは、使われていないほうに印が付きます。プロファイルが選ばれているときは、ログイン方法の行の代わりに Profile の行が出ます。保存済みの claude.ai ログインが有効な資格情報であるときに限り、期限切れの場合は Login の行に「Expired — log in again」と出ます(v2.1.210 以降)。

私は /status を、「いま誰の名前で動いているか」を教えてくれる画面だと受け止めています。ここを見ずに /login へ進むのは、鍵穴を確かめずに鍵を打ち直すのに似ています。

優先順位の表を、手元のメモに写しておく

Claude Code は、複数の資格情報があるとき、次の順で一つを選びます。上にあるものが勝ちます。

順位資格情報気をつけたい点
1Bedrock / Vertex / Foundry の設定変数CLAUDE_CODE_USE_BEDROCK などが残っていると、ほかは見られません
2ANTHROPIC_AUTH_TOKENゲートウェイ向けの Bearer トークンです
3ANTHROPIC_API_KEY-p では、あれば必ず使われます
4apiKeyHelper の出力スクリプトが失敗すると、数回の試行のあとで要求が失敗します
5CLAUDE_CODE_OAUTH_TOKENclaude setup-token で作る長期トークンです
6Anthropic プロファイルANTHROPIC_PROFILE で名前を指すと /login より上になります
7/login のサブスクリプション認証Pro / Max / Team / Enterprise の既定です

/login は、一番下の七番目です。ここだけを直しても、上の六つのどれかが居座っていれば、結果は変わりません。

-p だけ失敗するいちばんの理由は、環境変数の API キーです

対話モードでは、ANTHROPIC_API_KEY が見つかると、使うかどうかを一度だけ尋ねられ、その答えが記憶されます。ところが -p(非対話モード)では、キーがあれば必ず使われます。尋ねてはくれません。

たとえば、サブスクリプションで契約していて、シェルの設定ファイルに古い API キーが残っていたとします。対話では「使わない」と答えた記憶が効いて普通に動き、-p だけが、無効になった組織のキーで認証に向かう——ドキュメントにも「無効または期限切れの組織のキーだと認証に失敗する」と書かれています。

確かめ方は、キーの中身を表示せず、設定の有無だけを見ることです。

# 何を解決するか: 資格情報の優先順位に関わる変数が、いまのシェルにあるかを一覧する
# (値は表示しません。bash 専用の書き方です)
for v in CLAUDE_CODE_USE_BEDROCK CLAUDE_CODE_USE_VERTEX CLAUDE_CODE_USE_FOUNDRY \
         ANTHROPIC_AUTH_TOKEN ANTHROPIC_API_KEY CLAUDE_CODE_OAUTH_TOKEN \
         ANTHROPIC_PROFILE CLAUDE_CONFIG_DIR; do
  if [ -n "${!v}" ]; then echo "$v: set"; else echo "$v: -"; fi
done

ANTHROPIC_API_KEY: set が見つかり、心当たりがなければ、unset ANTHROPIC_API_KEY を試します。サブスクリプションに戻ったかどうかは、もう一度 /status で確認できます。

私が値を出さない形にしているのは、画面共有やログの貼り付けで、キーがそのまま残ってしまうのを避けたいからです。一度出た値は、あとから引っ込められないからです。

無人で動かすなら、ブラウザのログインを持ち込まない

定期実行やスクリプトでは、ブラウザで承認するログインが使えません。そのための仕組みが、長期トークンです。

# 何を解決するか: 対話ログインできない環境へ、サブスクリプションの認証を渡す
claude setup-token
# 承認するとトークンが画面に出ます。保存はされないので、控えてから設定します
export CLAUDE_CODE_OAUTH_TOKEN=your-token

このトークンの性質は、押さえておく価値があります。有効期間は一年で、Pro・Max・Team・Enterprise のプランが必要です。モデルへの要求だけができ、Remote Control のセッションや claude.ai のコネクタは使えません。そして --bare を付けた実行はこの変数を読まないため、その場合は API キーか apiKeyHelper を使います。

「ログインできているのに、コネクタだけ出てこない」と感じたら、トークンの性質のほうを疑うのが近道です。

動く場所によって、資格情報の置き場所が違います

同じ claude でも、実行する場所で読むものが変わります。

macOS では、資格情報は Keychain に入ります。SSH セッションなどで Keychain が書き込みを拒むと、~/.claude/.credentials.json に保存されます。CLAUDE_CONFIG_DIR を設定している場合は、そのディレクトリの下のファイルが使われ、Keychain の項目もディレクトリごとに別になります。

つまり、手元の端末と、別の設定ディレクトリで動くスクリプトとは、別々のログインを見ているかもしれないのです。

もう一つ、クラウドセッションと Claude Desktop は、apiKeyHelper や ANTHROPIC_API_KEY を読みません。OAuth を使います。クラウド側の環境にキーを置いても、サブスクリプションの資格情報は上書きされません。クラウドで claude -p を呼んでログインの表示が噛み合わないときは、リリースの変更履歴に修正が入っていないかも見てみてください。私が見かけた要約では、直近の版でそうした誤表示が直された、という記述がありました。細部は必ずご自身で変更履歴の本文を確かめていただければ幸いです。

期限切れだけは、再ログインが正解です

優先順位を全部確かめても、/status に「Expired — log in again」が出ているなら、再ログインが正解です。

保存済みのログインは、期限の三日前から起動時に警告を出します。警告が出ても要求は止まりませんが、期限が来て更新できなくなると、要求のたびに「Login expired · Please run /login」で失敗します。無人で長く動いているセッションは、そこで進まなくなり、自力では戻れません。

私が決めている、確かめる順番

ここまでを一本にすると、次の順番になります。

  1. /status で、実際に使われている方法を確認します
  2. 上のスクリプトで、優先順位に関わる変数を一覧します
  3. -p や無人実行では、API キーと長期トークンのどちらを使うかを決めます
  4. 動く場所(端末・SSH・クラウド)の資格情報の置き場所を思い出します
  5. 期限切れのときだけ、/login をやり直します

ログインを直す前に、どの資格情報が勝っているかを一度だけ言葉にします。 私はこの線引きを守るようにしています。それだけで、再ログインの回数は、ずいぶん減るのだと思います。

まずは今日の端末で /status を開き、変数の一覧を一度だけ出してみていただけますか。そこで見えた名前を、メモに一行残しておくと、次に同じ表示を見たとき、手が止まらずに済みます。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⟐ Claude Code2026-09-10
「Not signed in to the Cloud gateway」で全リクエストが止まる朝に、設定より先に版を見ます
Claude Code 2.1.265 でゲートウェイ・プロキシ構成が全リクエスト失敗した回帰を入口に、認証の入力面を一枚に並べて「設定と版のどちらが変わったか」を数秒で切り分ける小さな手順をまとめます。
⟐ Claude Code2026-09-20
Pro を払っているのに Console に請求が立っていたとき、私が最初に見た一行
サブスクリプションと API の従量は別会計で、Claude Code はそのどちらでも動きます。どちらが選ばれているかを決めるのは優先順位で、ログインはその最下段です。status の読み方と、無人実行だけが別の答えを返す理由を書き残します。
⟐ Claude Code2026-10-20
席を離れて戻ると会話に要約が差し込まれていた — アイドル圧縮の見分け方と、消したくない細部の残し方
v2.1.299 で入ったアイドル圧縮により、約54分放置した長い会話は自動で要約されます。何が起きたかの見分け方、止め方、そして要約に消されたくない前提を CLAUDE.md へ退避させる手順をまとめます。