Claude Code の認証の優先順位: 環境変数の API キーが /login より先に使われる
Claude Code は、環境変数に API キーやトークンがあると、/login でログインしていてもそちらを先に使います。どれが使われているかは /status の表示で分かります。2026年11月3日に、Claude Code 2.1.309 で確かめた動きです。
経緯
/login でログインしてある状態で、環境変数に無効な API キーを入れて起動したところ、ログインがあるのに Invalid API key で失敗しました。そこで、認証情報がいくつもあるときにどれが使われるかを確かめました。
環境
- macOS 26.6
- Claude Code 2.1.309(2026年11月3日に確認)
動き
クラウドの設定と API キーがあると、ログインは使われない
API キー(ANTHROPIC_API_KEY)は Claude Console のキーで、Pro や Max などのサブスクリプションで /login するログインとは別の契約です。対話画面では、環境変数の API キーを使うかどうかを最初に一度聞かれ、承認するとそのキーが使われます(公式の認証のページによる)。
認証情報がいくつもあるときは、次の順番で使われます。上にあるものが1つでもあれば、/login のログインは使われません。
- Amazon Bedrock などのクラウドの設定
- 環境変数
ANTHROPIC_AUTH_TOKEN - 環境変数
ANTHROPIC_API_KEY /loginのログイン
ログインがあっても、環境変数のキーが先に使われる
ログインしてある状態で、無効な API キーを入れて claude -p(対話の画面を開かずに、1回の指示を実行して結果を受け取る使い方)で実行すると、次のように失敗します。
terminal$ ANTHROPIC_API_KEY=sk-ant-invalid-test claude -p "hi"
Invalid API key · Fix external API key
無効なトークンを入れたときは、次の表示でした。
terminalFailed to authenticate. API Error: 401 Invalid bearer token
/status で、使われている認証情報が分かる
対話画面で /status を実行すると、ログインで使っているときは次の行が出ます。
terminalLogin method: Claude Pro account
ANTHROPIC_API_KEY が使われているときは、次のように出ます。
terminalAuth token: none
API key: ANTHROPIC_API_KEY
API key や Auth token の行に値があれば、環境変数が使われています。
設定フォルダーを変えると、ログインのない状態になる
空の設定フォルダーで起動すると、今のログインを消さずに、ログインのないときの表示を確かめられます。
terminal$ CLAUDE_CONFIG_DIR=$(mktemp -d) claude -p "hi"
Not logged in · Please run /login
ログイン情報は、macOS ではキーチェーン、Linux と Windows では ~/.claude/.credentials.json に保存されます。CLAUDE_CONFIG_DIR を変えると、別の保存先を見ます。
公式との違い
公式の認証のページには、使われる順番が書かれています。ログインがあっても環境変数の無効なキーで失敗すること、そのときに /login をやり直しても直らないこと、/status のどの行を見れば分かるかは書かれていません。
対処
/login のログインを使いたいとき
terminal$ unset ANTHROPIC_API_KEY
$ unset ANTHROPIC_AUTH_TOKEN
ターミナルを開くたびに同じになるときは、シェルの設定ファイルに書かれています。
terminal$ grep -n "ANTHROPIC" ~/.zshrc ~/.zprofile ~/.bashrc ~/.bash_profile 2>/dev/null
注意点
ログインの期限が3日以内になると、起動時に知らせが出る
/login のログインの期限が3日以内になると、起動したときに Your login expires in 3 days · run /login to renew と出ます。期限が切れると、/status の Login の行が Expired — log in again になります。
参考文献
著書
articleCloudflare Zero Wire の php2shell のプロンプトを Claude Code で使う手順: 77秒で古い版を特定
articleCursor の Claude Code 拡張機能 2.1.312、2.1.313 の不正な版を確かめる手順: 版と6つの印を見る
articleCodex の常駐プロセス(app-server)と会話の記録: 画面を閉じても動き続ける
articleClaude Code と Codex の違いを同じ課題で比較: 3つともテストは通り、差はテストの数と説明に出た
articleClaude Code のアップデートの動き: Homebrew は自動で上がらず brew upgrade が要る
articleClaude Code の利用制限(usage limit)の見方: 5時間と1週間の残りは /usage で分かる
articleCloudflare Zero Wire の php2shell のプロンプトを Claude Code で使う手順: 77秒で古い版を特定
articleCursor の Claude Code 拡張機能 2.1.312、2.1.313 の不正な版を確かめる手順: 版と6つの印を見る
articleCodex の常駐プロセス(app-server)と会話の記録: 画面を閉じても動き続ける
articleClaude Code と Codex の違いを同じ課題で比較: 3つともテストは通り、差はテストの数と説明に出た
articleClaude Code のアップデートの動き: Homebrew は自動で上がらず brew upgrade が要る
articleClaude Code の利用制限(usage limit)の見方: 5時間と1週間の残りは /usage で分かる
