Claude Code と Clash Verge の接続を先に理解する

Claude Code は、ターミナル上でファイルの読み書き、コード検索、テスト実行、Git 操作などを行う開発者向けの AI エージェントです。ブラウザで Claude のページを開くサービスとは異なり、実際の通信は起動したターミナルプロセスから認証サービスや API エンドポイントへ向かいます。そのため、ブラウザでは正常にログインできるのに、claude コマンドでは認証画面が進まない、プロンプト送信後に長時間待たされる、接続が途中で切れるといった差が発生します。

本稿では、Clash Verge を使って Claude Code のターミナル通信を安定させるための基本設定を説明します。サブスクリプションの読み込み、プロファイルの選択、システムプロキシと TUN モード の使い分け、ログイン時の確認方法、接続ログを使った切り分けまでを順番に扱います。Clash Verge Rev や Mihomo 系クライアントでも考え方はほぼ同じですが、画面上の項目名はバージョンによって少し異なる場合があります。

利用上の注意:Claude Code のアカウント、API、サブスクリプション、ソースコードの取り扱いは、各サービスの利用規約と勤務先・学校のポリシーに従ってください。プロキシを使う場合も、許可されたネットワークとアカウントで利用し、秘密鍵や環境変数をログへ貼り付けないようにしてください。

Claude Code が Clash Verge を使う仕組み

最初に押さえたいのは、Claude Code の通信経路が一つではないことです。初回ログインではブラウザが開き、認証ページとのやり取りが発生します。その後、ターミナル側のプロセスが認証結果を受け取り、API 通信やモデルへのリクエストを開始します。ブラウザだけが Clash Verge のシステムプロキシを利用し、ターミナルは直接接続していると、ログイン完了後に Claude Code 側だけが失敗することがあります。

通信を受け渡す方法は、大きくシステムプロキシTUN モードの二つです。システムプロキシは HTTP、HTTPS、SOCKS の設定を参照するアプリに向いており、構成が軽く、まず試す方法として適しています。一方、環境変数を無視する CLI、独自のネットワークライブラリ、DNS 解決を伴う補助プロセスまで確実に捕捉したい場合は、仮想ネットワークインターフェースを使う TUN モードの方が確認しやすくなります。

方式 向いている場面 確認ポイント
システムプロキシ 通常のターミナル、ブラウザ、HTTP 対応ツール 混合ポート、環境変数、プロセスの継承
TUN モード プロキシ設定を読まない CLI や複数の補助プロセス 管理者権限、DNS、ルーティング、仮想 NIC
ルール指定 Claude 関連通信を特定のプロキシグループへ送る場合 接続ログのホスト名、ルールの順序、グループ状態

ここで重要なのは、最初からすべてをグローバルプロキシへ変更しないことです。開発環境では社内 Git、パッケージレジストリ、ローカル API、データベースなどを直接接続したい場合があります。Claude Code 用の通信だけを確認しながらルールを追加し、必要に応じて TUN へ移行する方が、予期しない副作用を抑えられます。

事前準備:サブスクリプションとターミナルを確認する

Clash Verge を設定する前に、利用中のプロキシサービスから有効なサブスクリプション URLを取得します。URL にはアカウント識別情報や更新用トークンが含まれることがあるため、公開リポジトリ、チャット、スクリーンショットへそのまま貼り付けないでください。URL が期限切れの場合、Clash Verge 側の操作が正しくてもノード一覧が空になったり、すべての接続が失敗したりします。

次に、Clash Verge のバージョンとカーネルを確認します。Mihomo 対応版では、プロファイルが読み込めても、古い形式の設定キーや未対応のプロキシタイプが含まれていると起動時にエラーが出る場合があります。画面にエラーが表示されたら、まずプロファイルの更新日時、カーネルログ、使用中のグループ名を確認してください。設定ファイルを手作業で大幅に書き換える前に、元の購読プロファイルを複製しておくと復旧が容易です。

ターミナル側では、Claude Code を実行するシェルがどのプロキシ設定を参照しているかを見ます。環境変数を利用する場合は、Clash Verge の混合ポート番号に合わせて次のように設定できます。ポート番号はアプリの設定画面に表示される実際の値へ置き換えてください。

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7890

Windows PowerShell では記法が異なります。

$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
$env:ALL_PROXY="socks5://127.0.0.1:7890"

ただし、すべての Node.js パッケージや認証処理がこれらの変数を同じように解釈するとは限りません。環境変数を設定しても接続ログに何も現れない場合は、変数の綴りを増やすより先に、システムプロキシまたは TUN モードへ切り替えて挙動を比較します。

Clash Verge で Claude Code 用の経路を設定する

ここからは、サブスクリプションを読み込み、プロキシを選択し、ターミナルから通信を確認する手順です。Claude Code のログインを先に試すのではなく、Clash Verge の状態を一つずつ確認してから認証へ進むと、原因を分離できます。

  1. プロファイルを読み込む:Clash Verge を開き、プロファイルまたは購読管理の画面で HTTPS サブスクリプション URL を追加します。取得後に YAML の内容と更新時刻が表示され、プロキシグループが生成されていることを確認してください。
  2. 有効なノードを選ぶ:プロキシ画面で、遅延だけでなく接続の安定性も見ながらノードを選択します。自動選択グループが短時間でノードを切り替える場合、認証や API の長い通信が切れることがあるため、検証中は固定ノードを使う方が比較しやすいです。
  3. モードを確認する:最初は Rule モードを選び、ルールに該当しない通信が意図せず DIRECT になっていないかログで確認します。すべてを同じ経路へ送る必要がある検証では Global モードも使えますが、開発用サービスまで一括で経由する点には注意してください。
  4. システムプロキシを有効にする:Clash Verge の設定でシステムプロキシをオンにします。ブラウザとターミナルをいったん閉じてから再起動し、新しいプロセスが最新の設定を受け取るようにします。
  5. ログインを実行する:ターミナルで claude を起動し、表示された案内に従ってブラウザ認証を行います。認証中は Clash Verge の接続一覧を開き、関連する接続が増えているか、選択したグループを通っているかを確認します。
  6. 応答を確認する:ログイン後に小さなテスト指示を送り、短い応答が返るか確認します。いきなり大きなリポジトリの解析や自動編集を依頼せず、通信、認証、ツール呼び出しを段階的に試してください。

プロファイルに独自の分流ルールを追加できる場合は、Clash の接続一覧で実際に表示されたドメインを優先します。サービスのホスト名は時期や機能によって変わることがあり、検索結果から推測したドメインを大量に登録しても、必要な通信を捕捉できるとは限りません。まずログに出たホストを記録し、それが既存のルールでどのグループへ送られたかを確認してください。

システムプロキシで足りない場合の TUN 設定

システムプロキシを有効にしても、Claude Code の接続が Clash Verge のログに現れない場合があります。CLI がプロキシ環境変数を読まない、認証用の補助プロセスが別の設定で起動する、Node.js の通信ライブラリが独自接続を行う、といった可能性があります。この場合は、Clash Verge の TUN 設定を確認します。

TUN をオンにする前に、管理者権限またはサービスモードが正常に導入されているかを確認してください。macOS ではネットワーク拡張の許可、Windows では仮想アダプターや管理者権限の確認が必要になることがあります。設定を有効にした後にネットワーク全体が切れた場合は、すぐに再起動を繰り返すのではなく、TUN を一度オフにし、ログとルーティング設定を確認します。

tun:
  enable: true
  auto-route: true
  auto-detect-interface: true
  strict-route: false

上記は考え方を示す最小例であり、実際に利用できるキーや推奨値は Clash Verge の内蔵カーネルとプロファイル形式に依存します。設定画面から変更できる項目は GUI を優先し、購読側で上書きされる設定を直接編集しないようにしてください。特に strict-route を有効にすると、ローカルネットワークや社内サービスまで到達できなくなることがあります。

DNS も見落としやすい部分です。TUN 使用時に名前解決が OS 側へ漏れると、接続先の判定と実際の通信経路がずれる場合があります。Fake-IP、Redir-Host、DNS リスナーなどの方式は環境によって相性があるため、変更前の設定を保存し、Claude Code だけでなく通常の Web 閲覧、Git、ローカル開発サーバーも確認してください。

TUN の注意:TUN は「すべての通信を自動的に改善する機能」ではありません。DNS、ルーティング、ファイアウォール、VPN、Docker の仮想ネットワークが重なると、ループや接続不能が起きます。問題が出たら、システムプロキシだけの構成へ戻してから一項目ずつ再確認してください。

ログイン失敗とタイムアウトの切り分け

Claude Code の症状だけを見てノードを次々に交換すると、原因が見えにくくなります。Clash Verge の接続ログ、ターミナルのエラーメッセージ、発生した時刻を同時に記録してください。ログインボタンを押した時刻、ブラウザが開いた時刻、認証後にターミナルが反応した時刻を分けるだけでも、認証経路と API 経路の違いが分かります。

症状 考えられる原因 最初に行う確認
ブラウザは開くが認証が完了しない ターミナルが別経路、コールバック通信の遮断 システムプロキシ、Clash ログ、ローカルポートの競合
ログイン後に CLI だけタイムアウトする 環境変数未継承、API 通信が DIRECT 新しいターミナルで変数を確認し、接続一覧を見る
最初は動くが途中で切れる ノード切り替え、長時間接続、出口の不安定さ 自動選択を止め、固定ノードで再現する
すべての通信が遅くなった Global モード、TUN、DNS の過剰な適用 Rule モードまたは TUN オフへ戻して比較する

ターミナルを起動した後に環境変数を変更した場合、そのプロセスには新しい値が反映されません。シェルの設定ファイルを書き換えたときは新しいターミナルを開き、必要なら Claude Code も終了して再起動します。IDE 内蔵ターミナルを使っている場合は、IDE 自体が起動時の環境を保持していることがあるため、IDE の再起動も候補になります。

また、接続ログに同じホストへの失敗が何度も並ぶ場合は、ルールの順番を確認します。広い GEOIPMATCH、または DIRECT ルールが先にあると、後から追加したドメインルールが評価されません。ルールを変更したら、プロファイルを保存して再読み込みし、古い接続を閉じてから新しいログインを試してください。

開発作業で安定させる運用のコツ

Claude Code を日常的に使うなら、毎回 Global モードへ切り替えるより、用途を分けた運用が現実的です。通常の開発では Rule モードと固定ノードを基本にし、Claude Code の認証や API 通信で問題が出たときだけ接続ログを確認します。社内 Git やローカルサービスは DIRECT、外部の開発者向けサービスは用途別グループというように、必要最小限の分流を組むとトラブルの範囲を限定できます。

  • プロファイルをバックアップする:購読更新や設定変更の前に、現在動いているプロファイルと上書き設定を保存します。
  • 固定ノードで再現する:自動選択のままではノード変更と障害が混ざるため、原因調査中は一つの安定したノードを使います。
  • 認証情報を記録しない:接続ログやターミナル出力を共有するときは、トークン、Cookie、API キー、購読 URL を必ず伏せます。
  • 更新後に再テストする:Clash Verge、Mihomo コア、Claude Code、OS の更新後は、短いプロンプトと Git 操作をそれぞれ一度確認します。

最終的な目標は、単に「Claude Code が起動する」ことではありません。認証が安定し、短い質問に応答し、ファイル操作やテスト実行の途中で接続が切れず、同時にローカル開発環境へ不要な影響を与えない状態です。問題が起きたときに元へ戻せる構成を残しておけば、TUN や DNS の高度な設定にも安全に進めます。

一般的な GUI プロキシツールは、サブスクリプションを読み込めてもターミナルの環境変数、TUN、接続ログの関係が分かりにくく、Claude Code のような認証付き CLI では設定を試行錯誤しやすい弱点があります。Clash 公式サイト なら、Clash Verge のプロファイル選択からシステムプロキシ、TUN、ログを確認する順序をまとめて扱え、開発環境を壊さずに段階的な検証を進められます。これから Claude Code とターミナルプロキシを整えるなら、まずClash をダウンロードして、この記事の手順どおりに小さな接続テストから始めてみてください。