Claude Codeの接続エラー対策!Clash Vergeでターミナルのプロキシ設定
Claude Codeをターミナルで使うと接続がタイムアウトする、ログインできないといった場合は、プロキシ設定を確認しましょう。Clash Vergeでシステムプロキシを有効にする方法や、HTTP_PROXY環境変数の設定、ルールモードでの経路選び、よくあるエラーの確認手順を初心者向けに解説します。
最初に確認するのは「Clash Verge」とターミナルの経路
Claude Codeを起動するとタイムアウトする、ログイン画面が開かない、またはAPIへの接続に失敗する場合は、すぐに設定ファイルやノードを変更せず、通信がどこを通っているかを切り分けましょう。Clash Vergeの画面で接続できていても、ターミナルで起動したClaude Codeが同じ経路を使っているとは限りません。システムプロキシ、TUN、ターミナルの環境変数は、それぞれ設定場所と動作が異なります。
特に重要なのは、Clash Vergeの「システムプロキシ」を有効にしただけでは、すべてのCLIアプリケーションが自動的にプロキシを使うとは限らないことです。ブラウザーはOSのプロキシ設定を参照していても、ターミナルアプリやその子プロセスは環境変数を参照する場合があります。最初にClash Vergeのプロキシポートを確認し、次にClaude Codeを実行するターミナルへプロキシ設定を渡します。
- Clash Vergeが起動し、プロファイルが選択され、プロキシコアが動作していることを確認します。
- 「設定」などの画面で、HTTPポートまたは混合ポートの番号を確認します。
7890は例であり、実際のポートは環境によって異なります。 - 「プロキシ」画面で利用可能なポリシーグループと出口を選びます。グループ名が表示されていても、その中で無効なノードやDIRECTが選択されている場合があります。
- ターミナルを起動したままClash Vergeを終了していないか、別のClashクライアントが同じポートを使っていないかも確認します。
Clash Vergeでポートと動作モードを確認
Clash Vergeのメニュー名や配置はバージョンによって多少異なります。設定画面で「ポート」「ポート設定」または同様の項目を探し、HTTPポートもしくは混合ポートの番号を控えてください。mixed-portはHTTPプロキシとSOCKSプロキシの両方を受け付ける設定で、ターミナルからHTTPプロキシとして指定する場合にも利用できます。設定画面の値と環境変数に書く番号が一致していることが大切です。
ポート番号を確認したら、Clash Vergeの「プロキシ」画面で出口を選択します。ルールモードでは、接続先ごとにルールが評価され、最初に一致したルールが接続先を決めます。グローバルモードでは選択したグループの出口を使い、DIRECTモードではプロキシを経由しません。Claude Codeの通信がどのルールに一致するかを確認したい場合は、まずルールモードにしてログを見ます。短時間の切り分け目的でグローバルモードを使う場合も、検証後は元のモードに戻してください。
接続ログで実際の出口を読む
Claude Codeで一度だけ問題を再現し、Clash Vergeの「ログ」または接続一覧を確認します。接続先のドメイン、適用されたルール、使用されたポリシーやノードを照合してください。ログに接続がまったく現れない場合は、Claude Codeが環境変数を受け取っていない、ポートが違う、またはターミナルが別のネットワーク環境で動いている可能性があります。ログに現れてDIRECTが選ばれている場合は、ルールとモードを確認します。プロキシ出口が表示されているのにタイムアウトする場合は、選択ノードや上流接続を別に調べます。
Claude Codeが接続に使うドメインは、機能や認証手順、サービス側の変更によって異なることがあります。特定のドメインを一律に登録するより、失敗した時刻のログに記録された接続先を基準にしてください。ログにはアクセス先や端末情報が含まれることがあります。共有する場合は、個人情報、トークン、サブスクリプション情報を伏せましょう。
ターミナルにHTTP_PROXYとHTTPS_PROXYを設定
Claude Codeを起動するターミナルの環境変数に、Clash Vergeのローカルプロキシを指定します。以下ではポートを7890としています。実際に確認したHTTPポートまたは混合ポートに置き換えてください。HTTPSサイトへの接続でも、URLは通常http://で始まるプロキシアドレスを使います。これは暗号化された接続先にHTTP CONNECT方式でトンネルを作る指定であり、接続先のHTTPSをHTTPへ変更する意味ではありません。
WindowsのPowerShell
まずは現在のPowerShellと、そこから起動するClaude Codeだけに適用する方法で試します。次の例はユーザー全体の設定を変更しません。
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
claude
動作確認が終わったら、同じウィンドウで変数を削除できます。
Remove-Item Env:HTTP_PROXY
Remove-Item Env:HTTPS_PROXY
設定を削除して別のターミナルから起動した場合、その新しいプロセスには設定が引き継がれません。環境変数をユーザー環境へ恒久的に追加する場合は、他のCLIツールにも影響することを考慮し、不要になったときの戻し方を確認してから行ってください。
macOSとLinuxのシェル
zsh、bashなどでは、次のように設定してから同じターミナルでClaude Codeを起動します。
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
claude
現在のシェルから設定を外す場合は、unset HTTP_PROXY HTTPS_PROXYを実行します。シェルの設定ファイルへ追記する方法は毎回設定する手間を省けますが、そのシェルから起動する他のプログラムにも設定が渡ります。最初は一時設定で接続を確かめてから、必要であれば永続化を検討してください。小文字のhttp_proxyやhttps_proxyを参照するアプリもあるため、環境によっては大文字と小文字の両方を設定して確認します。
一部のドメインをプロキシから除外するNO_PROXYまたはno_proxyを設定している場合、対象のホストが除外リストに含まれていないか確認してください。設定が競合していると、プロキシ変数を指定しても直接接続になることがあります。値を追加する場合は既存設定をむやみに上書きせず、ローカルホスト用の除外など、必要な値を保ってください。
Claude Codeの前にプロキシ接続をテスト
Claude Codeを繰り返し起動する前に、同じターミナルから一般的なHTTPSサイトへ接続できるか試すと、ポートや環境変数の問題を分けやすくなります。次の例もポート番号は環境に合わせて変更してください。
curl -I -x http://127.0.0.1:7890 https://example.com
HTTPステータスが返り、Clash Vergeのログにも接続が現れれば、少なくともそのターミナルからローカルプロキシへ接続し、HTTPS宛てのリクエストを通せる可能性が高いと分かります。このテストはClaude Codeの認証やAPI接続まで保証するものではありません。curlが「connection refused」となる場合は、Clash Vergeの起動状態、ポート番号、待ち受けアドレスを確認します。「タイムアウト」の場合は、ログで実際に選ばれたルールと出口を見てください。サイトが応答してもClaude Codeだけ失敗するなら、認証状態、アプリ側の環境変数対応、接続先ごとのルールへ調査を進めます。
| 症状 | 優先して確認する項目 |
|---|---|
connection refused | Clash Vergeの待ち受けポートと環境変数のポート番号 |
i/o timeout、応答待ちで停止 | ログに現れた接続先、適用ルール、選択された出口 |
| ログにリクエストがない | Claude Codeを起動したターミナル、環境変数の継承、別の実行環境の有無 |
| ブラウザー認証だけ失敗 | ブラウザー自身のプロキシ経路と、認証用ページを開いたアプリ |
| 起動後にログインエラー | 認証状態、端末時刻、アカウント側の案内とエラー詳細 |
ブラウザー認証は、Claude Codeのプロセスとは別のブラウザーで行われることがあります。そのため、ターミナルの環境変数が正しくても、ブラウザー側が同じプロキシを使うとは限りません。ブラウザーが開かない場合と、認証後にCLIへ戻れない場合も分けて確認しましょう。ブラウザーでログインできることだけを根拠に、Claude CodeのAPI通信も成功していると判断しないでください。
WSL・TUNの注意点とよくある質問
WSLやコンテナではlocalhostに注意
Windows上のターミナルから動かす場合、127.0.0.1がClash Vergeの待ち受け先を指すことがあります。一方、WSL、仮想マシン、コンテナ内の127.0.0.1は、その仮想環境自身を指すため、Windows側のClash Vergeに届かない場合があります。まず通常のWindows PowerShellで前述のcurlテストを行い、次にWSL内で同じテストをします。通常のWindowsでは成功しWSLだけ失敗するなら、WSLから到達可能なホスト側アドレスと、Clash Vergeの待ち受けアドレス、ファイアウォールを確認してください。実際のアドレスはネットワーク構成により異なるため、固定値をそのまま使わないでください。
TUNはOSのネットワーク通信を取り込む方式で、ターミナルの環境変数とは別の経路です。TUNを使う場合でも、Clash VergeのルールとDNS設定によって結果が変わります。原因の切り分けでは、まず環境変数を使ったローカルプロキシ接続を確認し、その後に必要であればTUNの動作を検証します。環境変数、システムプロキシ、TUNを一度に切り替えると、どの設定が影響したか分かりにくくなります。
よくある質問
Q. システムプロキシを有効にしているのにClaude Codeが接続できません。
システムプロキシの設定がターミナルのCLIへ反映されていない可能性があります。Clash Vergeの実際のポートを確認し、Claude Codeを起動するターミナルでHTTP_PROXYとHTTPS_PROXYを指定して試してください。
Q. HTTPS_PROXYにもhttp://を書くのですか。
ローカルのHTTPまたは混合プロキシを使う場合は、通常そのプロキシのアドレスをhttp://127.0.0.1:ポートとして指定します。HTTPSは接続先のプロトコルを示し、プロキシとの接続方式とは別です。
Q. 7890を指定したのに接続できません。
7890は一般的な例にすぎません。Clash Vergeの設定に表示されたHTTPポートまたは混合ポートと一致しているか確認し、ターミナルからのcurlテストでローカル接続を調べてください。
Q. TUNを有効にすれば環境変数は不要ですか。
TUNは環境変数とは異なる方式で通信を取り込むため、利用環境によってはターミナルの通信を処理できます。ただし、ルール、DNS、仮想環境のネットワーク構成に左右されます。まず一つの方式で接続を確認し、動作ログを見てから併用を検討してください。