development·

Claude Code「OAuth error: Invalid code」の意味と対処法|コードが途中で切れる原因

Claude Code のログインで「OAuth error: Invalid code. Please make sure the full code was copied」が出たときの意味と直し方。コードが途中で切れる原因、Enter で再試行したときの挙動、status code 400 との違いを v2.1.282 の実機検証で解説します。

Claude Code「OAuth error: Invalid code」の意味と対処法|コードが途中で切れる原因
OAuth error: Invalid code. Please make sure the full code was copied
Press Enter to retry.

このメッセージは、ブラウザでのサインイン後に表示されたログインコードを、Claude Code が完全な形で受け取れなかったという意味です。多くはコードの一部だけが貼り付けられたか、有効期限が切れたコードを使ったことが原因です。Enter キーを押すと同じログイン画面に戻るので、ブラウザに表示されたコードを最初から最後までコピーし直して貼り付ければログインできます。

公式ドキュメント(Troubleshoot installation and login)では、原因を「ログインコードの期限切れ、またはコピー時の欠落」としています。この記事では、2026年9月25日時点(Claude Code v2.1.282)で実際にログイン画面へコードを貼り付けて確かめた挙動も載せています。実機で確認した内容とドキュメント記載の内容は書き分けています。

この記事を読むとわかること

  • 「Invalid code」が出る仕組みと、よくある4つの原因
  • Enter で再試行したとき、同じコードで続けられる場合とやり直しになる場合の違い
  • WSL2・SSH・コンテナ・Windows Terminal で貼り付けがうまくいかないときの回避策
  • 似たメッセージ(Request failed with status code 400、getaddrinfo ENOTFOUND platform.claude.com など)との見分け方

このエラーが出る場面

Claude Code に claude.ai アカウント(Pro・Max・Team・Enterprise)や Claude Console アカウントでログインするとき、Claude Code はブラウザを開いてサインイン画面を表示します。サインインが終わると、通常はブラウザから手元の Claude Code へ自動で戻り、ターミナルに Login successful と表示されます(Authentication)。

ブラウザが Claude Code まで戻れない環境では、ブラウザにログインコードが表示されます。これをターミナルの Paste code here if prompted > という入力欄に貼り付けてログインを完了させます。「Invalid code」は、この貼り付けの段階で出るエラーです。

表示される場面は次のとおりです。

操作表示
claude の初回起動、/login、claude setup-token のログイン画面OAuth error: Invalid code. Please make sure the full code was copied と Press Enter to retry.
claude auth login(標準入力からコードを読むコマンド)Invalid code. Please make sure the full code was copied.(先頭の OAuth error: がつかない)

API キー(ANTHROPIC_API_KEY)や Amazon Bedrock などのクラウド経由で使っている場合は、ブラウザログインを通らないため、このエラーは出ません。

ログインコードが表示されるのはどんなときか

v2.1.282 で claude auth login を実行して確認したところ、Claude Code は2種類の URL を使い分けていました。

  • 自動で開くブラウザに渡す URL:サインイン後の戻り先が http://localhost:<ポート>/callback(手元の Claude Code)。ブラウザと Claude Code が同じマシンにあれば、コードを貼る必要はありません
  • ターミナルに表示される URL(If the browser didn't open, visit: や Browser didn't open? Use the url below to sign in の下):戻り先が https://platform.claude.com/oauth/code/callback。この URL を別のブラウザで開くと、サインイン後にログインコードが表示されます

つまり、ターミナルの URL を手でコピーして開いた場合や、SSH 先・WSL2・コンテナでブラウザから localhost に戻れない場合に、コードの貼り付けが必要になります。

原因と見分け方

よくある順に並べると次のとおりです。

原因見分け方対処
コードの一部しか貼り付けられていない貼った直後にすぐエラーになる。狭いターミナルやリモート接続で、途中で改行されたコードを選択したブラウザの表示からコードを全部コピーし直し、Enter のあと貼り直す
有効期限切れのコードサインインしてから時間がたっているEnter で再試行し、ブラウザでのサインインから貼り付けまでを続けて行う
別のログイン試行のコード(推測)前に開いたブラウザのタブや、以前の URL のコードを使ったブラウザでサインインし直し、新しく表示されたコードを使う
ブラウザが別のマシンで開いている(SSH・WSL2・コンテナ)サインインしたのに Claude Code が反応しないターミナルの URL を手元のブラウザで開き、表示されたコードを貼る

公式ドキュメントに書かれている原因は1行目と2行目(期限切れ、コピー時の欠落)と、リモート接続でブラウザが別のマシンで開く場合です。3行目(別のログイン試行のコード)は実機で直接確認したものではなく、後述の Request failed with status code 400 の実機結果からの推測です。

「途中で切れた」と判定される条件

v2.1.282 の実機では、# を含まない文字列を貼り付けると、サーバーへ問い合わせる前にすぐ Invalid code になりました。一方、# を含む形の偽のコードを貼ると、Invalid code ではなく Request failed with status code 400 が返りました。

ここから、ブラウザに表示されるログインコードは途中に # を含む1本の文字列で、# より後ろが欠けると貼り付けの時点で弾かれることがわかります。コードの前半だけを選択してコピーした場合に起きやすい失敗です。

なお、貼り付けた文字は入力欄で * に置き換わり、末尾の数文字だけが見える表示でした。画面上で全体を確かめられないので、ブラウザ側でコードの末尾まで選択できているかを確認してからコピーしてください。

対処法

1. Enter を押して、コードを全部コピーし直す

エラーのあと Enter を押すと再試行になります。v2.1.282 では、Invalid code のあとに Enter を押すと、同じ URL(同じログイン試行)のまま貼り付け待ちの画面に戻りました。ブラウザに表示されているコードがまだ有効なら、そのまま全体をコピーし直して貼り付ければ完了します。

コピーするときは次の点に気をつけてください。

  • ブラウザのコピーボタンがあればそれを使う。手で範囲選択する場合は末尾まで選ぶ
  • ターミナルの折り返しをまたいで選択しない
  • コードを手で打ち直さない

2. ブラウザでサインインし直して新しいコードを取る

前述のとおり、Invalid code のあとに Enter を押しても同じ URL(同じログイン試行)のまま貼り付け待ちに戻るだけで、新しいコードが自動で発行されるわけではありません。サインインから時間がたって期限切れになった場合や、前に開いたタブ・以前の URL のコードを貼ってしまった場合は、Enter を押すだけでなく、ブラウザ側で表示されている URL を開き直してもう一度サインインし、新しく表示されたコードを貼り付けてください。

推測:別のログイン試行のコードを貼り付けた場合にどうなるかは実機で直接確認していません(実機で確認したのは実在しない偽のコードでの挙動のみです)。後述の「OAuth error: Request failed with status code 400」で近い挙動を確認していますが、これはあくまで推測です。

それでも失敗が続く場合は、公式ドキュメントの「Reset your login」の手順で最初からやり直します。

  1. Claude Code 内で /logout を実行する
  2. Claude Code を終了する
  3. claude を起動し、ログインをやり直す

3. ブラウザが開かない・URL が折り返される場合は c でコピーする

ログイン画面で c を押すと、ログイン用の URL 全体がクリップボードにコピーされます。公式ドキュメントによると、狭いターミナルや SSH 接続で URL が複数行に折り返され、クリックできないときにも使えます。

v2.1.282 を 80 桁のターミナルで動かしたところ、URL は5行に折り返されて表示されました。範囲選択でコピーすると途中で切れたり改行が混ざったりしやすいので、c を使うのが確実です。

4. WSL2・SSH・コンテナでは、手元のブラウザで開いてコードを貼る

WSL2、SSH 先のリモートマシン、コンテナで Claude Code を動かしている場合、ブラウザは別のホストで開くため、サインイン後に Claude Code のローカルのコールバックサーバーへ戻れません。この場合はブラウザにログインコードが表示されるので、Paste code here if prompted の欄に貼り付けます(OAuth login fails in WSL2, SSH, or containers)。

WSL2 でブラウザ自体が開かない場合は、Windows 側のブラウザを BROWSER 環境変数で指定します。

export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"
claude

5. 貼り付けが効かないときは claude auth login を使う

ログイン画面にコードを貼っても何も入力されない場合は、ターミナルの貼り付け操作が入力欄に届いていない可能性があります。公式ドキュメントは次の2つを案内しています。

  • ターミナルの別の貼り付け操作を試す(Windows Terminal では右クリックや Shift+Insert)
  • 標準入力からコードを読む claude auth login を使う
claude auth login

claude auth login は URL を表示したあと Paste code here if prompted > で入力を待ちます。ネイティブ Windows や、ログイン画面への貼り付けが失敗する端末でも同じ方法が使えます。

実機での再現結果

2026年9月25日に、Claude Code v2.1.282(macOS、npm 版)を実際の設定とは切り離した環境で動かし、実在しないコードを貼り付けて確認しました。ブラウザを開く処理は無効化し、実際のアカウントでのサインインは行っていません。

操作結果
claude auth login に # を含まない文字列を入力Invalid code. Please make sure the full code was copied.
claude auth login に # を含む偽のコードを入力Login failed: Request failed with status code 400
claude setup-token のログイン画面に # を含まない文字列を貼り付けOAuth error: Invalid code. Please make sure the full code was copied と Press Enter to retry.。Enter 後は同じ URL のまま貼り付け待ちに戻る
同じ画面に # を含む偽のコードを貼り付けOAuth error: Request failed with status code 400 と Press Enter to retry.。Enter 後は新しい URL で最初からやり直しになる

期限切れの本物のコードでどちらのメッセージになるかは、実アカウントでのサインインが必要なため確認していません。

似ているが別のエラー

OAuth error: Request failed with status code 400

コードの形は正しいものの、ログインサーバーがそのコードを受け付けなかったときの表示です。実機では、# を含む実在しない偽のコードを貼り付けたときにこの表示になりました。Enter を押すと新しいログイン試行が始まり、新しい URL に切り替わります。新しく表示された URL をブラウザで開き直し、その画面のコードを使ってください。前のログイン画面のコードは使えません。

推測:別のログイン試行で使われた本物のコード(前に開いたタブや、以前の URL のコード)を貼り付けた場合も同じ Request failed with status code 400 になると考えられますが、これは実機の偽コードでの検証から推測した内容で、実際の別試行コードでは未確認です。

OAuth error: getaddrinfo ENOTFOUND platform.claude.com

getaddrinfo はホスト名を IP アドレスに変換する処理で、ENOTFOUND は名前解決に失敗したことを示します。v2.1.282 は、貼り付けたコードをトークンに交換する通信を platform.claude.com に送ります。公式ドキュメント(Network configuration)でも、claude.ai アカウントのトークン交換がこのホストに送られると書かれています。この表示が出たら、コードではなくネットワーク(DNS・VPN・プロキシ)を疑います。ECONNREFUSED が付く場合も同じくネットワーク側の問題です。この2つは実機では再現していません。

  • 同じシェルから curl -I https://platform.claude.com で到達できるか確かめる
  • 社内プロキシがある場合は HTTPS_PROXY を設定してから起動する
  • ファイアウォールやプロキシで platform.claude.com、claude.ai、claude.com を許可する

プロキシや証明書の問題で通信できない場合は、SSL 証明書エラーの対処法も参考にしてください。

MCP サーバーのサインインで出る OAuth エラー

OAuth callback port <port> is already in use、No available ports for OAuth redirect、Issuer mismatch in authorization response は、Claude Code 自体のログインではなく、リモート MCP サーバーへの OAuth サインインで出るメッセージです(Error reference)。/mcp から該当サーバーのサインインをやり直します。

ログイン後に出るエラー

ログインは完了したのにその後で止まる場合は、原因が別にあります。

ほかのエラーはClaude Code トラブルシューティング完全ガイドにまとめています。インストールからやり直す場合はインストール・セットアップガイドを参照してください。

よくある質問

まとめ

  • 「OAuth error: Invalid code」は、ブラウザのサインイン後に表示されたコードを Claude Code が完全な形で受け取れなかったという意味。コードの期限切れか、コピー時の欠けが主な原因
  • まず Enter を押して同じログイン試行に戻り、コードを最初から最後までコピーし直して貼り付ける
  • 貼り付けが効かない場合は、ターミナルの貼り付け操作や claude auth login の別の入力方法を試す
  • Request failed with status code 400 が出た場合は、ブラウザでサインインし直して新しいコードを取得する

koromo からの提案

AIツールの導入判断は、突き詰めると「投資対効果が合うか」「リスクを管理できるか」「事業にどう効くか」の3点に帰着します。koromo では、この判断に必要な材料を整理するところからご支援しています。

以下のような状況にある方は、まず現状の整理だけでも前に進むきっかけになります。

  • AIで開発や業務を効率化したいが、自社に合う方法がわからない
  • 社内にエンジニアがいない / 少人数で、AI導入の進め方に見当がつかない
  • 外注先の開発会社にAI活用を提案したいが、何を求めればいいか整理できていない
  • 「AIを使えばコスト削減できるはず」と感じているが、具体的な試算ができていない

ツールを使った上で相談したい方はお問い合わせフォームから「Claude Code の導入・トラブル対応の相談」とご記載ください。初回の壁打ち(30分)は無料で対応しています。

無料で相談する

関連記事