Claude Codeの接続エラーを解消するClash Verge設定とターミナル活用法

Claude Codeをターミナルで使う際に、ログインできない、応答がタイムアウトするなどの問題が起きたときの確認方法を解説します。Clash Vergeのプロファイル読み込み、プロキシモード、ルール設定に加え、DNSやシェルの環境変数もチェック。利用可否は提供地域、アカウント条件、ネットワーク環境によって異なります。

最初にログイン失敗とネットワークタイムアウトを分ける

Claude Codeが接続できないときは、Clash Vergeの接続状態だけで判断せず、ログイン情報、ターミナルのプロキシ設定、接続先に適用されたルールを順番に確認してください。ブラウザーではログインできるのにターミナルでタイムアウトする場合、ブラウザーとClaude Codeが別の通信経路を使っている可能性があります。Clash Vergeの「システムプロキシ」をオンにしても、すべてのターミナルアプリがその設定を引き継ぐとは限りません。

Claude Codeの問題は、認証エラー、名前解決エラー、接続タイムアウト、HTTPエラーなどに分けて考えると調査しやすくなります。まずエラー全文と発生時刻、使用中のOS、Clash Vergeのバージョン、選択中のプロファイルとモードを記録してください。ログを共有する場合は、アクセストークン、APIキー、認証コード、完全なURLなどを削除します。

症状・表示例 最初に確認すること それだけでは判断できないこと
ログイン画面が開かない、認証が完了しない ブラウザーの接続、認証セッション、localhostへのコールバック ノードが必ず停止しているとは限らない
ETIMEDOUT、接続タイムアウト ターミナルのプロキシ環境変数、Clash Vergeの接続ログ、ルール 認証情報の誤りとは限らない
ENOTFOUND、名前解決に失敗 DNS、ネットワーク、TUN使用時のDNS設定 ノードの通信速度だけでは説明できない
HTTP 401、403 ログイン状態、アカウントやAPIキー、利用可能な認証方式 プロキシ接続自体の失敗とは限らない
プロキシ接続拒否 Clash Vergeが起動中か、設定ポートが待ち受けているか 接続先サービスの障害とは限らない

エラーコードは切り分けの手掛かりですが、メッセージだけで原因を確定できるとは限りません。たとえば401や403が返る場合、サーバーまで通信できていても、認証やアカウントの条件で処理が拒否されていることがあります。まず通信経路をテストし、その後にログイン状態を確認しましょう。

Clash Vergeのプロファイル、モード、ノードを確認する

Clash Vergeで有効になっているプロファイルを確認し、期待するノードやプロキシグループが表示されていることを確かめます。複数のプロファイルを登録している場合、編集したものと実際に実行中のものが異なることがあります。サブスクリプションの更新後に設定が変わったときも、選択中のプロファイルとグループの現在値を見直してください。

  • 接続状態:Clash Vergeが起動し、mihomoコアが動作していることを確認します。エラーが出ている場合は、クライアントのログでコアの起動失敗やポート競合を先に調べます。
  • モード:「Rule」モードでは、宛先ごとにルールが評価されます。「Global」モードは通信を選択中のグローバルグループへ送る確認方法として使えますが、調査後は通常の運用モードに戻してください。「Direct」ではプロキシを経由しません。
  • ノードとグループ:Claude Codeの接続先に適用されるプロキシグループで、実際に利用可能なノードが選択されているか確認します。グループ名やノード名が表示されていても、通信が成功する保証にはなりません。
  • 接続ログ:Claude Codeの再試行時刻に合わせ、該当する接続先のドメイン、ルール、処理先が表示されるか調べます。DIRECTなら直接接続、プロキシグループ名が表示されるなら、そのグループの選択状況を確認します。

Clash Vergeの画面や項目名はバージョンによって異なる場合があります。プロファイルの元ファイルを直接書き換えると、サブスクリプション更新で変更が失われることがあります。ルールを追加する必要がある場合は、利用中のクライアントが提供するオーバーライド方法を確認し、変更後に設定を再読み込みしてください。提供元のルールや地域に関する利用条件も確認しましょう。

ターミナルで実際のプロキシ接続をテストする

以下は、Clash Vergeの混合ポートが7890の場合の例です。ポート番号は固定ではありません。Clash Vergeまたは有効な設定でmixed-portを確認し、実際の値に置き換えてください。混合ポートはHTTPとSOCKSの両方を扱えますが、ここでは一般的なHTTPプロキシ形式でテストします。

macOS・Linuxの例

まず現在のターミナルセッションだけに環境変数を設定します。別のウィンドウや、デスクトップから直接起動したアプリには自動で引き継がれません。

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5h://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1

# HTTPSプロキシ経由でTLS接続できるか確認
curl -I --connect-timeout 10 --max-time 20 https://api.anthropic.com/

この例ではHTTPおよびHTTPSのプロキシ指定に混合ポートを使い、SOCKS5を使うアプリ向けにALL_PROXYも設定しています。クライアントや利用ライブラリによって参照される変数は異なるため、最初は設定を必要な範囲に絞って試してください。curlからHTTP応答が返れば、少なくともそのコマンドのDNS・接続・TLSの経路を確認できます。401、403、404などの応答は、接続失敗と同じ意味ではありません。

Windows PowerShellの例

以下は、開いているPowerShellプロセス内だけで有効になります。ポートを実際の設定値に置き換えてから実行してください。

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:ALL_PROXY = "socks5h://127.0.0.1:7890"
$env:NO_PROXY = "localhost,127.0.0.1,::1"

curl.exe -I --connect-timeout 10 --max-time 20 https://api.anthropic.com/

Windows PowerShellでは、curlが別のコマンドとして解釈される環境があるため、例ではcurl.exeを指定しています。テスト後に環境変数を消す場合は、macOS・Linuxでは各変数に対してunset HTTP_PROXY HTTPS_PROXY ALL_PROXY NO_PROXYを実行します。PowerShellではRemove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:ALL_PROXY, Env:NO_PROXYを実行してください。

  1. Clash Vergeを起動し、選択中のプロファイルと混合ポートを確認します。
  2. ターミナルで環境変数を設定し、上記のcurlテストを実行します。
  3. Clash Vergeの接続ログを開き、テスト時刻の宛先、適用ルール、選択された処理先を確認します。
  4. 同じターミナルからClaude Codeを起動し、症状が変わるか確認します。起動前後のログ時刻とエラー内容を記録します。
  5. 結果を比べた後、不要な環境変数を解除します。恒久設定にする場合は、シェル設定ファイルに追加する前に、通常のターミナル起動方法でも再現するか確認します。

curlがプロキシ接続拒否になる場合は、Clash Vergeの稼働状態、ポート番号、ローカルの待ち受けを優先して調べます。curlは成功するのにClaude Codeだけが失敗するなら、Claude Codeを起動したプロセスに変数が渡っているか、使用する認証方式、ログインセッション、接続先ごとのルールを確認してください。環境変数は端末内の全アプリではなく、原則としてそのプロセスと子プロセスに作用します。

ルール、DNS、TUNを一度に変更しない

ターミナルのプロキシ変数を設定しても、DNSやルーティングの問題がすべて解消するわけではありません。特にENOTFOUNDが出る場合は、Clash Vergeの接続ログ、コアのDNS設定、現在使用しているネットワークを順に確認します。設定ファイルにDNS項目がある場合、内容はプロファイルや環境によって異なるため、値を一律に置き換えないでください。

ルールモードでは、Claude Codeがアクセスする各ドメインに異なるルールが適用されることがあります。接続ログで該当通信がどのルールに一致したかを見てから、必要な変更を検討します。すべての通信をグローバル経由にすることで問題が消えた場合も、原因がノード、ルール、DNS、またはシェルの環境変数のどれだったかは、それだけでは特定できません。

TUNは対応するクライアントとコアで、システムの通信を仮想インターフェース経由で取り込む方式です。管理者権限、OSの許可、DNSやルートの設定が関係することがあり、通常のHTTPプロキシ環境変数と同じ仕組みではありません。まず明示的なプロキシ指定でテストし、必要な場合に限ってTUNを切り分けに使います。TUNとシステムプロキシを同時に有効にした場合は、実際にどの経路が使われたか接続ログで確認してください。

  • 特定の宛先だけ失敗:ログに出るドメイン、ルール、処理先を比べます。設定を変更するときは該当ルールだけを対象にします。
  • 複数のドメインで名前解決に失敗:ネットワーク接続とDNSを先に確認し、Clash VergeのDNS設定やTUN利用時の経路を調べます。
  • システムプロキシでは動くがターミナルでは失敗:ターミナルプロセスにプロキシ環境変数が渡っているか確認します。
  • curlは成功し、ログインだけ失敗:認証セッション、ブラウザーとCLIの通信、localhostへのコールバックを別々に確認します。

認証状態と設定の安全性を確認する

ネットワークテストが成功しても、Claude Codeの認証が有効とは限りません。使用しているサインイン方法を確認し、アカウントのログイン状態や、APIキーを使用する設定の場合はキーの有効性を確認してください。サインイン方式や画面の項目は、Claude Codeのバージョンやアカウントの構成によって異なることがあります。エラーを解消するために認証情報を公開したり、他人のキーを設定したりしないでください。

認証のやり直しを行う場合は、まず公式の案内に従い、現在のセッションや環境変数にどの認証情報が設定されているかを確認します。APIキーをターミナルに直接入力すると、シェル履歴や画面共有に残る可能性があります。認証情報を貼り付けたログ、スクリーンショット、環境変数の一覧を第三者に送らないでください。キーが漏れた可能性がある場合は、発行元の管理画面で無効化や再発行を検討します。

最後に、調査中に変更したモード、ノード、TUN、システムプロキシ、環境変数を見直し、必要なものだけを残します。Claude Codeを使わないターミナルまでプロキシ経由にしたくない場合は、専用のターミナルセッションで設定する方法が管理しやすくなります。接続が回復した後も、接続ログと実際のルールを確認し、想定外の直接接続や不要な全通信プロキシがない状態に戻してください。

Clash をダウンロード