この記事で解決できること
Claude Codeで実装やThinkingの途中なのに突然「Please run /login」と表示されて作業が止まる。再ログインしてもすぐまた切れる。
この症状、2026年に入ってからGitHubのissueが急増している既知の問題だ。原因はClaude CodeのOAuth認証の仕組みにある。
この記事では、なぜこの問題が起きるのかを技術的に解説して、今すぐ試せる対処法を優先順にまとめた。
症状のパターン
報告されている典型的な症状はこんな感じ。
- 作業中に突然「OAuth token has expired. Please run /login」と表示される
- /loginで再認証しても数分〜数時間でまた切れる
- 再認証すると別のターミナルで動いていたセッションが認証切れになる
- VS Code拡張版で認証ループに入って抜け出せなくなる
- Agent Teamsで複数セッションを使うと特にひどい
心当たりがある人、結構いるんじゃないかと思う。
原因: OAuthリフレッシュトークンの競合
根本原因はClaude Codeの認証方式にある。
Claude Codeは認証情報を ~/.claude/.credentials.json に保存している(Macの場合はmacOS Keychainにも暗号化保存される)。この中には2つのトークンがある。
| トークン | 役割 | 有効期限 |
|---|---|---|
| accessToken | APIリクエストに使う | 約15時間 |
| refreshToken | accessTokenの更新に使う | 1回使い切り |
問題はこの「refreshTokenが1回使い切り」という点。
何が起きているか
- セッションAのaccessTokenが期限切れになる
- セッションAがrefreshTokenを使って新しいトークンを取得する
- サーバー側で古いrefreshTokenが無効化される
- セッションBのaccessTokenも期限切れになる
- セッションBが古いrefreshToken(メモリにキャッシュされたもの)を使おうとする
- サーバーに拒否される → 「Please run /login」
つまり、複数のClaude Codeセッションが同じトークンを奪い合うレースコンディションが発生している。
GitHub Issue #24317で詳しく報告されている通り、セッションを並行して使うと1日に何度も再認証が必要になる。
「複数セッション」とは具体的にどういう状態か
「複数セッションなんて使ってないけど?」と思うかもしれない。でも意外と気づかないうちに複数プロセスが立ち上がっている。Macでよくあるパターンを3つ紹介する。
パターン1: ターミナルのタブを複数開いている
一番多いパターン。プロジェクトごとにターミナルタブを開いて、それぞれで claude を起動している状態。
Terminal Tab 1: ~/projectA で claude 起動中
Terminal Tab 2: ~/projectB で claude 起動中
Terminal Tab 3: ~/projectC で claude 起動中
これだけで3セッション。それぞれが独立したプロセスとしてOAuthトークンを共有している。Tab 1で再認証すると、Tab 2とTab 3のトークンが無効化される。
確認方法:
# 今動いているClaude Codeプロセスの数を確認
psaux|grep-cclaude
3以上の数字が出たら、複数セッションが動いている。
パターン2: VS Code拡張とターミナルの併用
VS CodeにClaude Code拡張を入れている場合、VS Code内でも1つのセッションが動いている。
VS Code: Claude Code拡張が裏で動いている(見えにくい)
Terminal: claude コマンドで別作業中
VS Codeの拡張も内部的にはClaude Codeプロセスなので、ターミナルと合わせて2セッション。これだけでもトークン競合が起きる。
パターン3: Agent Teamsの裏側
Agent Teams(チームエージェント)を使うと、リーダーが複数のチームメイトを自動で立ち上げる。
claude で作業中 → Agent Teamsを起動
Leader(自分のセッション)
├── Teammate 1(自動で起動されるプロセス)
├── Teammate 2(自動で起動されるプロセス)
└── Teammate 3(自動で起動されるプロセス)
ターミナルは1つしか開いていなくても、Agent Teamsを使った時点で裏に複数プロセスが立ち上がる。これが最も気づきにくいパターン。
競合が起きる瞬間の具体例
[10:00] 全プロセスが同じaccessTokenを使って正常稼働中
[10:15] accessTokenの有効期限が切れる
[10:15:01] Teammate1が refreshToken=ABC で更新リクエスト → 成功、新トークン取得
[10:15:02] Leaderも refreshToken=ABC で更新リクエスト → 失敗(ABCはもう使われて無効)
→ Leaderに "Please run /login" が表示される
たった0.01秒の差で片方が死ぬ。セッション数が多いほど、この衝突の確率が上がる。
「起動時間をずらせば大丈夫?」→ ダメ
「ターミナルを1分以上ずらして開けば、それぞれ別のトークンを取得してくれるのでは?」と考えるかもしれない。残念ながらこれは効かない。
理由は、問題が起きるのは起動時ではなく更新時だから。
- 9:00 — ターミナルAを起動(アクセストークンT、リフレッシュトークンR を読み込み)
- 9:05 — ターミナルBを起動(同じT、Rをファイルから読み込み)
- どちらも同じアクセストークンTで数時間は問題なく動く
ここまでは平和。問題はこの後。
- 翌日0:00頃 — Tが期限切れ
- プロセスAがRで更新 → 新しいR2を取得、ファイルに保存
- プロセスBもRで更新しようとする → Rはもう無効 → 認証失敗
起動を何分ずらしても、読み込むリフレッシュトークンは同じファイルの同じ値。競合が起きるのは起動から数時間〜15時間後のトークン更新タイミングだから、起動時間の差は意味がない。
Agent Teamsの場合はさらに厄介で、リーダーがチームメイトを一斉に起動するから、全プロセスが同じトークンを持つことが100%確定する。
まず試すべきこと(優先順)
対処法は6つあるが、全部いっぺんにやる必要はない。上から順に試して、直ったらそこで止めてOK。
STEP 1: バージョンを確認してアップデート
まず最初にやること。認証周りのバグ修正は頻繁にリリースされているので、古いバージョンだとそもそも修正済みの問題で苦しんでいる可能性がある。
# 現在のバージョンを確認
claude--version
最新版でなければアップデートする。
# Mac(ネイティブ版)
curl-fsSLhttps://claude.ai/install.sh|bash
# npm版
npmupdate-g@anthropic-ai/claude-code
アップデート後は全てのClaude Codeセッションを一度閉じて再起動する。これだけで直るケースも多い。
STEP 2: 使っていないセッションを閉じる
次に、今動いているセッションの数を確認する。
# Macの場合
psaux|grepclaude
実際に使っているのは1〜2個なのに、閉じ忘れたセッションが残っていないか確認しよう。使っていないターミナルタブのclaudeは閉じる。
VS Codeの拡張も同時に動いている場合は、ターミナルかVS Codeかどちらかに絞ることも検討する。
Agent Teamsの場合はチーム作業が終わったら、shutdownリクエストで全メンバーを終了させる。
STEP 3: /logoutしてクリーンに再ログイン
STEP 1と2を試してもまだ切れる場合は、認証情報をクリーンにする。
# Claude Code内で
/logout
Claude Codeを終了して再起動。
claude
# /login で再認証
/login を何度も叩くのではなく、一度 /logout してからやり直すのがポイント。公式ドキュメントでも推奨されている方法だ。
STEP 4: 認証情報を手動リセット
STEP 3でも解決しない場合、保存された認証情報ファイルを削除してクリーンな状態にする。
# Mac
rm-rf~/.config/claude-code/auth.json
Macの場合、Keychainにも認証情報が保存されている。「キーチェーンアクセス」アプリを開いて「Claude Code」で検索し、該当するエントリを削除しておくとより確実。
その後 claude を起動すれば、初回ログインからやり直せる。
ここまでで直らない場合の追加対策
STEP 1〜4で解決しなかった場合、認証の仕組み自体を変える2つの方法がある。
方法A: setup-tokenで長寿命トークンを使う
claude setup-token は、CI/CDやコンテナ環境向けに作られた「有効期限1年の長寿命OAuthトークン」を生成するコマンド。通常利用でもトークン競合を避けるのに使える。
# 1. トークンを生成(ブラウザで認証フローが開く)
claudesetup-token
認証が完了すると長寿命トークンが発行される。これを環境変数にセットして使う。
# 2. シェルの設定ファイルに追記(Mac: ~/.zshrc)
exportCLAUDE_CODE_OAUTH_TOKEN="取得したトークン"
設定ファイルを反映させる。
source~/.zshrc
通常のOAuthとの違いをまとめるとこうなる。
| 項目 | 通常のOAuth | setup-token |
|---|---|---|
| accessTokenの有効期限 | 約15時間 | 約1年 |
| refreshTokenの使い切り問題 | あり(競合の原因) | なし |
| 認証情報の読み込み元 | ファイル + Keychain | 環境変数 |
| サブスクリプション利用 | そのまま使える | そのまま使える(Pro/Max) |
| スコープ | フル | user:inference のみ |
setup-tokenで生成したトークンはサブスクリプション(Pro/Max)の利用枠をそのまま使う。API従量課金にはならない。
ただしスコープが user:inference(推論専用)に限定されるため、使用量の表示など一部の機能が制限される場合がある。普段のコーディング作業には影響しない。
方法B: APIキーで認証する
OAuthを完全に回避する方法として、Anthropic APIキーを使う手がある。
# 環境変数にセット(Mac: ~/.zshrc に追記)
exportANTHROPIC_API_KEY="sk-ant-xxxxx"
ただし注意点がある。
- APIキー認証はAPI従量課金になる(Pro/Maxサブスクリプションの使用量には含まれない)
- サブスクリプションの定額利用とは別の課金体系
- チームプランの場合、管理者にAPIキーの発行権限を確認する必要がある
コスト面で許容できるなら、この方法が最も安定する。OAuthの仕組みを一切経由しないので、トークン競合とは無縁。
対処法の全体まとめ
| 優先順 | 方法 | 手軽さ | 効果 | 備考 |
|---|---|---|---|---|
| 1 | アップデート | 簡単 | 中〜高 | まず最初に試す |
| 2 | セッションを閉じる | 簡単 | 中 | 使っていないタブを確認 |
| 3 | /logout→再ログイン | 簡単 | 中 | /loginの繰り返しは逆効果 |
| 4 | 認証情報リセット | 普通 | 中 | Keychainも確認 |
| 5 | setup-token | やや手間 | 高 | サブスクをそのまま使える |
| 6 | APIキー認証 | 普通 | 高 | 別途API課金が発生 |
上から順に試して、直ったらそこで止めるのがおすすめ。多くの場合、STEP 1(アップデート)とSTEP 2(セッション整理)で改善する。
Anthropicの対応状況
2026年2月時点で、この問題は複数のGitHub Issueで報告されている。
- Issue #24317 — 複数セッション時のOAuthリフレッシュトークン競合
- Issue #18225 — アクティブセッション中のOAuthトークン期限切れ
- Issue #15007 — /loginがセッションを回復しない
- Issue #19078 — ログイン直後にトークンが期限切れになる
- Issue #22685 — 認証ループ
Anthropicからの公式な修正アナウンスはまだ出ていないが、認証周りの改善はアップデートで順次行われている。area:auth ラベルの付いたissueは多数あり、認識されている問題ではある。
予防策
問題を最小限に抑えるための習慣。
- Claude Codeの同時起動数を必要最小限にする
- 1つのターミナルで作業が終わったら、次のタブを開く前にclaudeを終了する
- Agent Teams利用後は必ず全エージェントをshutdown
- VS Code拡張とターミナルの同時利用を避ける
- Claude Codeを常に最新版に保つ
- 重要な長時間作業の前に /login で認証状態を確認しておく
まとめ
Claude Codeの再認証ループは、OAuthリフレッシュトークンの「1回使い切り」仕様と複数セッション間の競合が原因。ターミナルのタブを複数開いている、VS Code拡張と併用している、Agent Teamsを使っている、といった状況で発生しやすい。
まずは「アップデート」と「セッション整理」から。それで直らなければ「/logout→再ログイン」「認証リセット」と進む。根本的に安定させたいなら「setup-token」が有効で、サブスクリプション(Pro/Max)の利用枠をそのまま使える。
Anthropic側での根本修正(ファイルロックやトークン共有の仕組み)が実装されるまでは、これらの対処法で凌ぐしかない。進展があればこの記事を更新する。
あわせて読みたい
- Claude Code上級テクニック|CLAUDE.md・hooks・マルチファイル編集を使いこなす
- Claude Opus 4.6のAgent Teamsとは?複数AIが協力して開発する新機能を解説
- Claude Code 2月のアップデートまとめ|新機能と改善点を一挙紹介
- Claude最新ニュースまとめ2026|Anthropicの動向をリアルタイム追跡
- Claude API入門ガイド|料金・モデル比較・始め方を完全解説
見てもらえるだけで応援になります
このブログの運営費はアフィリエイトで支えられています。以下のリンクから見てもらえるだけで応援になります。
ConoHa — ブログ・開発環境に必要な機能が揃ったVPS![]()
Value AI Writer byGMO — AIブログ記事作成ツール![]()
この記事を書いたのはわさび(ニホンイシガメ)。あかはらVラボでClaude/AIの最新情報を日本語で発信中。
この記事が参考になったら|以下のリンクから見てもらえるだけで、ブログ運営の応援になります。

AI開発環境やブログ運営に。初期費用無料、月額296円から。- NordVPN

AI活用時のデータ保護に。VPNで通信を暗号化。



コメント