Claude CodeをClash Vergeで使う設定方法・接続トラブル対策
Claude CodeをClash Vergeで使う設定方法・接続トラブル対策
Claude CodeのログインやAPI通信が安定しない人向けに、Clash Vergeを使った実践的な接続方法を紹介します。プロファイルの読み込み、プロキシモード、ルール選択、トラブル解決まで順番に確認できます。
始める前に確認すること:Claude CodeとClash Vergeの役割
Claude Codeはターミナルから利用する開発支援ツールで、ログイン処理やモデルへのリクエストをインターネット上のサービスへ送信します。一方、Clash Vergeはパソコン上で動作するクライアントで、設定ファイルに含まれるプロキシノードとルールを使って通信経路を振り分けます。つまり、Claude Codeそのものにノードを登録するのではなく、Clash Vergeを先に起動し、Claude Codeの通信がClashのローカルポートまたはTUNインターフェースを通る状態を作るのが基本です。
この違いを理解しておくと、「Clash Vergeの画面では接続済みなのにClaude Codeだけ失敗する」という問題を整理しやすくなります。Clashのコアが起動していること、実際に利用できるノードが選択されていること、Claude Codeがその経路を使っていることは、それぞれ別の確認項目です。最初から設定を何度も入れ直すのではなく、次の順番で一つずつ検証してください。
- Clash Vergeに有効なプロファイルが読み込まれている。
- プロキシグループで通信可能なノードが選択されている。
- Clashのコアが起動し、ローカルポートで待ち受けている。
- システムプロキシ、環境変数、またはTUNのいずれかでClaude Codeの通信経路が確保されている。
- Clashの接続ログにClaude関連の通信が表示されている。
Clash Vergeにプロファイルを読み込む
まずClash Vergeを起動し、設定管理またはProfilesの画面を開きます。利用しているサービスから発行されたサブスクリプションURLを追加し、取得が完了したら対象プロファイルを選択して有効化します。プロファイルが一覧に表示されただけでは、現在のコアがその設定を使っているとは限りません。選択状態、更新日時、ノード数、プロキシグループの表示を確認してください。
プロファイルの更新に失敗する場合は、Claude Codeの設定より先にサブスクリプション自体を確認します。ブラウザでURLを開き、YAML形式の設定、またはクライアントが処理できるサブスクリプション内容が返るかを見ます。HTMLのログイン画面、期限切れの案内、空の内容が返っている場合は、Clash Vergeの解析機能を変更しても改善しません。
有効化したプロファイルの設定を開き、少なくともローカルプロキシのポートを確認します。多くのClash系クライアントでは、HTTPとSOCKS5の両方を受け付ける mixed-port が使われ、例として次のような設定があります。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
mixed-port の番号は環境によって異なります。Clash Vergeの一般設定画面に表示されている番号を優先し、7890だと決めつけないでください。別のClashクライアントや開発ツールが同じ番号を使っている場合は、コアが起動できず、Claude Code以前にプロキシ接続が成立しません。
ノード・ルール・プロキシモードを設定する
プロファイルを有効にしたら、Proxyまたはプロキシページを開き、最上位のプロキシグループを確認します。グループが select なら、実際に通信できるノードを手動で選択します。url-test の場合は遅延測定の結果だけでなく、外部HTTPS通信が成功するかも重要です。遅延が低く表示されても、特定の宛先への接続が拒否されるノードはClaude Codeには向きません。
動作確認の段階では、ルールモードを使う場合でも、対象の通信がどのグループに送られているかを接続ログで確認します。設定ファイルの末尾が次のようになっている場合、前段のルールに一致しなかった通信は PROXY グループへ送られます。
rules:
- DOMAIN-SUFFIX,anthropic.com,PROXY
- MATCH,PROXY
ただし、実際のグループ名はプロファイルごとに異なります。設定に存在しないグループ名を手動で書くと、設定の読み込みに失敗するため、必ずProxyページに表示される正確な名前を使ってください。Claude Codeはログイン時と通常のAPI利用時で複数のドメインへ接続する可能性があるため、単一のドメインだけを許可すれば必ず動くとは限りません。まずログに表示された宛先を確認し、それを基準にルールを調整します。
次にClash Vergeのモードを選びます。ブラウザや一般的なGUIアプリだけを対象にするなら、システムプロキシを有効にする方法が簡単です。Claude Codeのようなターミナルツールでは、システムプロキシを自動的に参照するとは限らないため、環境変数を明示するかTUNモードを利用します。
- システムプロキシ——ブラウザなど、OSのプロキシ設定を読むアプリに向いています。
- 環境変数——CLIツール単位でHTTPまたはHTTPSプロキシを指定できます。
- TUNモード——アプリがプロキシ設定を読まなくても、ネットワーク層で通信を取り込めます。
TUNを使う場合は、Clash Vergeに管理者権限を与える必要があるOSがあります。仮想インターフェースの作成、ルート設定、DNS処理に失敗すると、通信が完全に止まったり、プロキシと直接接続がループしたりすることがあります。まず環境変数でClaude Codeだけを検証し、それで安定した後にTUNを有効化すると、原因を切り分けやすくなります。
ターミナルからClaude Codeの通信をプロキシへ送る
Clash Vergeのローカルポートが7890で、HTTPプロキシとして利用できる場合、ターミナルでは次のように環境変数を設定してからClaude Codeを起動します。
# macOS / Linux
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=http://127.0.0.1:7890
claude
ALL_PROXY はツールによって扱いが異なります。HTTP CONNECTを使うHTTPS通信では HTTP_PROXY と HTTPS_PROXY が認識されることが多い一方、SOCKS5を使う場合は次のように書きます。
export ALL_PROXY=socks5h://127.0.0.1:7890
socks5h の末尾にある h は、ホスト名の解決もSOCKS側へ任せる指定です。ただし、Clashのポートが混合ポートではなくHTTP専用、またはSOCKS専用の場合があります。ポートの種類と環境変数の組み合わせが合っていないと、接続拒否やTLSエラーが発生します。
WindowsのPowerShellでは、同じ設定を次のように入力します。
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="http://127.0.0.1:7890"
claude
環境変数は、そのターミナルウィンドウから起動したプロセスに引き継がれます。設定が不要になった場合は、別のターミナルを開くか、PowerShellでは Remove-Item Env:HTTP_PROXY などで削除してください。常にプロキシを使う必要がないコマンドまで強制的に経由させると、社内サービスやローカル開発環境への接続に影響する場合があります。
ログインとAPI通信を段階的に確認する
プロキシを設定した後のログインでは、ブラウザ認証とターミナル側の待受処理が関係することがあります。Claude Codeが表示した認証URLをブラウザで開き、ブラウザ側のログインが完了しても、ターミナルへ戻る処理が終わるまでウィンドウを閉じないでください。ブラウザはシステムプロキシを使っているのに、ターミナルは直接接続しているという構成では、認証画面だけ成功してCLI側でタイムアウトすることがあります。
ログイン後にプロンプトは表示されるものの、モデルへの送信で失敗する場合は、認証とAPI通信を分けて考えます。アカウントのログイン状態が有効でも、API利用権限、環境変数に残った古いキー、契約や利用上限、サービス側の一時的な障害が原因になる可能性があります。Clashのログに宛先への接続成功が記録されているなら、次はClaude Code側の認証情報とエラー本文を確認します。
特に 401 や 403 は、ノードの遅延よりも認証情報や権限を疑うべき応答です。407 Proxy Authentication Required なら、Clashのローカルポートではなく、別の上流プロキシが認証を要求している可能性があります。ECONNREFUSED は指定ポートでClashが待ち受けていない、ETIMEDOUT はノードや経路が応答していない、TLS関連のエラーは時刻、証明書検査、経路上の干渉などを確認します。
- Clash Vergeのコアが起動しているか確認する。
- ローカルポート番号とプロトコルが環境変数の指定と一致しているか確認する。
- Proxyページで選択中のノードを別のノードに変更する。
- 接続ログでClaude Code実行時の宛先とルールを確認する。
- 環境変数に古いAPIキーや不要なプロキシ設定が残っていないか確認する。
- Clashを一時的に停止して、直接接続時とエラー内容が変わるか比較する。
接続できないときの切り分け手順
Clash Vergeの画面が「起動中」でも、外部通信が正常とは限りません。まずノードの遅延測定を実行し、複数のノードで失敗するのか、特定のノードだけ失敗するのかを分けます。特定のノードだけならノードを変更し、すべてのノードで失敗するならサブスクリプションの期限、ネットワーク、DNS、またはプロファイルのルールを調べます。
ブラウザでは通信できるのにClaude Codeだけ失敗する場合は、次の三つが代表的です。第一に、Claude Codeがシステムプロキシを読んでいない。第二に、ターミナルへ環境変数を設定したが、別のウィンドウから起動している。第三に、HTTPプロキシとSOCKSプロキシの指定を取り違えている、という問題です。環境変数を設定した同じターミナルから実行し、Clashの接続ログに新しい接続が出るかを確認します。
接続ログに何も出ない場合、Claude Codeの通信はClashを通っていません。環境変数名の綴り、シェルの種類、起動方法、TUNの有効状態を確認してください。ログに接続は出るがすぐ切断される場合は、選択ノード、ルール、TLS、上流側の応答を調べます。ログに DIRECT と表示されているなら、ルールが意図せず直接接続を選んでいる可能性があります。
DNSエラーが続く場合は、TUN利用時のDNS hijack設定や、ClashのDNSモードを確認します。ただし、設定例をそのままコピーするのではなく、使用中のmihomoコアとClash Vergeのバージョンが対応している項目だけを使ってください。存在しないフィールドや誤ったインデントを追加すると、通信以前にプロファイルの読み込みが失敗します。
安定運用のための設定と注意点
Claude Codeを継続的に使うなら、通常のWeb閲覧とCLIツールで同じ設定を無理に共有する必要はありません。ブラウザはシステムプロキシ、Claude Codeはターミナルの環境変数、プロキシ設定に対応しない開発ツールはTUNというように、用途ごとに経路を分けるとトラブル時の影響範囲を小さくできます。
また、APIキーや認証トークンを設定ファイル、シェル履歴、画面共有用のログへ直接書き込まないでください。接続テストでコマンドを記録する場合は、秘密情報を伏せた状態で保存します。Clashの接続ログにも完全なURLや認証情報が表示されることがあるため、第三者へ共有する前にドメイン、トークン、ローカルユーザー名などを確認して削除します。
設定を変更した後は、次の最小構成で動作を確認すると安全です。
- Clash Vergeを起動し、プロファイルを有効化する。
- Proxyページで通信可能なノードを手動選択する。
- システムプロキシまたは環境変数のどちらか一方だけを有効にする。
- 接続ログを表示したままClaude Codeを起動する。
- ログインとAPIリクエストが成功した後、必要に応じてTUNや自動選択を追加する。
この順番なら、Claude Codeの問題、Clash Vergeの問題、ノードやサービス側の問題を比較的短時間で分離できます。接続済みという表示だけで判断せず、実際の接続ログとルール結果を基準に確認することが、最も再現性の高い解決方法です。
全プラットフォーム対応のClashクライアントを入手
Windows、macOS、Android、iOS、Linux向けのClashクライアントと設定方法を確認できます。