Claude Code の接続エラーを Clash Verge から切り分ける

Claude Code をターミナルで起動したとき、ログイン画面が進まない、API 呼び出しがタイムアウトする、ブラウザでは Claude に接続できるのに CLI だけ失敗する、といった症状が起きることがあります。この場合、まず疑いたいのはアカウントやモデルの設定だけではありません。ターミナルから起動したプロセスが、ブラウザとは異なるネットワーク経路を使っている可能性があります。

ブラウザは OS のシステムプロキシ設定を参照することがありますが、CLI や SDK は環境変数で指定されたプロキシを使う構成が一般的です。そのため、Clash Verge でシステムプロキシを有効にしただけでは、Claude Code の通信まで同じ経路になるとは限りません。本稿では、Clash Verge にプロファイルを追加し、利用可能なプロキシポートを確認したうえで、HTTPS_PROXY などをターミナルへ設定する方法を説明します。

作業の基本は、設定を一度に複数変更しないことです。まず Clash Verge 自体でノードへ接続できるかを確認し、次にターミナルがプロキシ環境変数を認識しているかを調べ、最後に Claude Code の通信結果を確認します。この順番なら、購読の問題、ノードの問題、シェル設定の問題を切り分けやすくなります。Clash Verge Rev の画面操作を先に確認したい場合は、基本チュートリアルも参考になります。

Clash Verge のプロファイルと接続先を準備する

Clash Verge はプロキシクライアントであり、それだけで利用可能なサーバーやノードが提供されるわけではありません。まず、契約中のサービスや管理者から案内された Clash 互換の購読 URL、または利用許可のある設定ファイルを用意します。購読 URL は接続情報を取得できる認証情報として扱い、公開チャット、スクリーンショット、リポジトリなどに掲載しないでください。誤って共有した場合は、発行元の管理画面で URL の再発行や無効化ができるか確認します。

Clash Verge を開き、プロファイル画面から購読 URL を追加します。画面の名称や配置はバージョンによって異なりますが、一般的な流れは URL を登録してプロファイルを更新し、読み込んだプロファイルを選択することです。更新後にプロキシグループやノードの一覧が表示されるか確認してください。取得に失敗する場合は、URL の前後に空白がないか、期限が切れていないか、コピー元が Clash 形式に対応しているかを先に確認します。

プロファイルを読み込んだら、まず Clash Verge の接続画面で利用するノードを選び、遅延テストや接続確認を実行します。遅延値が低いノードでも、Claude Code の長い HTTPS 通信に適しているとは限りません。短時間の測定では応答しても、混雑時間帯に接続が切れたり、長時間のストリームで不安定になったりすることがあります。複数の候補がある場合は、普段作業する時間帯に実際のリクエストを試し、成功率や応答の安定性も見て選びましょう。

次に、Clash Verge の設定画面または現在のプロファイルから、ローカル HTTP/混合ポートを確認します。ポート番号はインストール状態や利用者の設定で異なるため、例に出てくる番号をそのまま決め打ちしないでください。アプリに表示された値を使い、他のアプリが同じポートを使用していないことも確認します。混合ポートが有効なら、通常は HTTP プロキシとして指定できます。SOCKS 専用ポートしか使えない場合は、クライアントが SOCKS プロキシを受け付けるかを確認し、根拠なく HTTP 用の変数へ流用しないようにします。

TIP:最初のテストでは、ノード選択を自動切替ではなく特定のノードに固定すると、接続先がテスト中に変わる影響を避けられます。動作を確認した後で、自動選択や遅延テストを使う構成へ戻すと原因を追いやすくなります。

ターミナルに Claude Code 用のプロキシを設定する

Clash Verge のローカルポートが確認できたら、Claude Code を起動するターミナルの環境変数に設定します。以下は Bash または Zsh で、例としてポート 7897 を使う場合です。実際には Clash Verge に表示されている番号へ置き換えてください。

export HTTP_PROXY="http://127.0.0.1:7897"
export HTTPS_PROXY="http://127.0.0.1:7897"
export ALL_PROXY="http://127.0.0.1:7897"

設定が現在のシェルに反映されたかは、次のコマンドで確認できます。環境変数名はアプリや通信ライブラリによって大文字・小文字の扱いが異なる場合があるため、必要に応じて小文字の変数も設定します。むやみに異なるプロキシ URL を複数登録するのではなく、まず同じローカルポートに揃えて結果を見てください。

env | grep -i proxy

毎回のターミナルで使う場合は、利用しているシェルの設定ファイルへ追加します。Zsh なら通常は ~/.zshrc、Bash なら ~/.bashrc などが候補です。ファイルを編集した後は新しいターミナルを開くか、該当ファイルを読み込み直します。IDE の統合ターミナルは、外部ターミナルとは異なる起動方法や環境を使う場合があります。外部ターミナルでは動くのに IDE からだけ失敗するときは、IDE を再起動して環境変数を引き継がせるか、IDE 側の起動設定を確認してください。

Windows の PowerShell では、現在のセッションだけに設定する例は次のとおりです。ここでもポート番号は Clash Verge の実際の表示に合わせます。

$env:HTTP_PROXY = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
$env:ALL_PROXY = "http://127.0.0.1:7897"
Get-ChildItem Env:*proxy*

一時的なテストでは、まず現在のターミナルにだけ設定する方法が安全です。ユーザー環境全体へ永続設定すると、Clash Verge を終了した後もプロキシ先だけが残り、別のアプリや新しいシェルの通信が失敗することがあります。永続化する場合は、利用しなくなったときに削除する手順も把握しておきましょう。

NO_PROXY は、プロキシを通さず直接接続するホストを指定するための変数です。社内 Git サーバーやローカル開発用サービスを直接接続したい場合に使えますが、api.anthropic.com など Claude Code の接続先を誤って除外すると、設定したはずのプロキシを通らなくなることがあります。最初の動作確認では不要な除外設定を外し、通信が安定してから必要なローカル宛てだけを追加するのが分かりやすい方法です。

接続を確認し、症状に応じて原因を絞る

環境変数を設定したら、まず Clash Verge の接続ログを表示した状態で、ターミナルから HTTPS リクエストを試します。たとえば、次のように curl の詳細表示を使うと、プロキシへの接続を開始できているか、TLS 接続のどの段階で止まるかを確認できます。

curl -I -v https://api.anthropic.com

この確認は、Claude Code の認証や利用権限が有効であることを証明するものではありません。ここで見たいのは、ターミナルの通信がローカルプロキシへ向かい、Clash Verge のログにも対応する接続が現れるかどうかです。HTTP の応答コードだけでサービス全体の利用可否を判断せず、TLS エラー、名前解決エラー、接続拒否、タイムアウトを区別してください。認証状態やアカウントの権限は、それとは別に Claude Code の表示や公式の案内で確認します。

ログに接続がまったく現れない場合は、Claude Code を起動したターミナルが環境変数を受け取っていないか、指定したポートが間違っている可能性があります。env | grep -i proxy または PowerShell の環境変数一覧で値を確認し、Clash Verge のポート表示と照合します。ターミナルを設定前から開いたままにしている場合、設定ファイルの変更が反映されていないこともあるため、新しいシェルで再試行してください。

接続ログは出るものの DIRECT と表示される場合は、現在のルールやルールモードを確認します。利用しているプロファイルがグローバルモード、ルールモードのどちらになっているかを見て、api.anthropic.com への接続が意図したプロキシグループにマッチしているかを確認してください。補助ホストが必要かどうかは、固定の一覧をそのまま追加するより、Claude Code の実行時に記録されたホスト名とログを照らし合わせて判断します。サービス側の構成は変わる可能性があるため、古いドメイン一覧を無条件に恒久ルールへ入れる方法は避けましょう。

Clash Verge のログにプロキシ経由の接続が記録されているのに Claude Code がタイムアウトする場合は、ノードの混雑や上流経路の不安定さも考えられます。別のノードへ一つずつ切り替えて再試行し、同じ時間帯に結果を比べます。プロキシを使った curl も失敗するなら、Claude Code 固有の問題ではなく、ポート、ノード、DNS、ネットワーク経路のいずれかを優先して調べます。反対に curl は通るのに Claude Code だけ失敗する場合は、認証状態、CLI の更新状況、シェルごとの環境差、利用制限などアプリケーション層を確認します。

システムプロキシを有効にしても CLI に反映されないケースでは、環境変数を使う方法が切り分けに役立ちます。それでも一部のプロセスがプロキシを無視する場合、Clash Verge の TUN モードを検討できます。ただし、TUN は通信をより広い範囲で取り込むため、企業 VPN、他のネットワーク拡張、セキュリティソフトと競合する可能性があります。まず通常のプロキシ設定で原因を特定し、TUN を試すときは他の VPN を停止するなど、変更点を一つに絞ってテストしてください。

よくある質問

システムプロキシを有効にしたのに Claude Code が接続できないのはなぜですか?

システムプロキシを参照しない CLI や通信ライブラリがあるためです。Claude Code を起動する同じターミナルで HTTPS_PROXY と HTTP_PROXY が設定されているか確認してください。IDE の統合ターミナルを使う場合は、外部ターミナルとの環境変数の違いも調べます。

環境変数にはどのポート番号を指定すればよいですか?

Clash Verge の設定に表示されている HTTP または混合ポートを指定します。ポート番号は利用環境によって異なるので、よくある例の値をそのまま使わず、アプリの表示と一致していることを確認してください。ローカルポートへの接続が拒否される場合は、ポートが有効か、Clash Verge が起動しているかを見直します。

最初から TUN モードを有効にする必要はありますか?

通常は必要ありません。まずは環境変数と通常のプロキシポートを使い、CLI の通信がログに現れるかを確認します。プロキシ設定を無視する通信が残る場合に限り、競合の可能性を確認したうえで TUN を試すと、設定変更の影響を把握しやすくなります。

Claude Code の接続先を NO_PROXY に追加してもよいですか?

その接続を直接通信させたい明確な理由がない限り、追加しないでください。該当ホストが除外されると、Claude Code の通信が Clash Verge を経由しなくなり、今回の設定目的と逆の結果になることがあります。必要な除外先は、用途を確認して最小限に保ちます。

ブラウザだけで設定する一般的なプロキシ製品では、CLI が環境変数を読まないと別途設定が必要になり、どの通信が対象か見えにくいことがあります。Clash Verge はローカルポート、ノード、ルール、接続ログを確認できるため、Claude Code の通信をターミナル設定と照らし合わせながら段階的に調整できます。複数の設定を一度に変えるより、まず利用中の環境に合うクライアントを選び、ひとつずつ確認する方法が現実的です。

Clash をダウンロード →