Claude Code が接続できないときに見る場所

Claude Code をターミナルへ導入したあと、「ログイン画面は開くのに認証が完了しない」「ログイン後にプロンプトを送ると長時間待たされる」「ブラウザでは Claude にアクセスできるのに、ターミナルの Claude Code だけ失敗する」といった症状に遭遇することがあります。これは Claude Code 本体の不具合とは限らず、ブラウザとターミナルで通信経路が異なること、また Clash Verge のルールが認証用ホストや API 通信用ホストを正しく拾えていないことが主な原因です。

Claude Code は Node.js を利用して動作する CLI ツールです。ブラウザのように画面上のプロキシ設定をそのまま使うとは限らず、起動したシェルの環境変数、OS のシステムプロキシ、または Clash Verge の TUN モードのいずれかを通じて通信します。そのため、Clash Verge の画面でノードを選んだだけでは、すべてのターミナル通信が自動的に同じ経路になるとは限りません。

本稿では、Claude Code のインストール、Clash Verge の基本設定、ターミナルへプロキシを渡す方法、認証と API 通信の分流、ログを使った確認方法までを順番に整理します。特定のサービスを無理に一括プロキシするのではなく、必要な通信だけを見つけてルール化する考え方を中心に説明します。

利用上の注意:Claude、Anthropic、Claude Code の利用条件、API やアカウントに関する規約は変更される可能性があります。勤務先や学校の端末では、プロキシ利用や開発者ツールの使用が許可されているかを先に確認してください。ここで扱うのは通信経路の設定であり、認証情報を共有したり、規約を回避したりする方法ではありません。

ログインエラーと通信不安定を切り分ける

最初から YAML を大きく書き換えるのではなく、どの段階で失敗しているかを記録します。同じ「Claude Code が動かない」という表示でも、認証、名前解決、TLS 接続、ストリーミング応答では対処が違います。エラーが出た時刻と、Clash Verge の接続画面に表示されたホスト名を一緒に確認すると、推測だけで設定を変更せずに済みます。

症状 考えられる原因 最初に確認すること
ログインブラウザは開くが完了しない 認証用ドメインが別経路、またはコールバックが遮断されている ブラウザとターミナルの両方に関連通信が出ているかを見る
プロンプト送信後にタイムアウトする API 通信用ホストが DIRECT になっている、または出口が不安定 接続ログのホスト名と選択中のプロキシグループを確認する
短い応答は返るが途中で切れる ストリーミング接続、ノード切り替え、長時間接続の相性 通信中に url-test や自動選択が別ノードへ移動していないか確認する
ブラウザだけ正常に動作する Node.js がシステムプロキシを継承していない シェルの HTTP_PROXYHTTPS_PROXY を確認する

認証情報そのものをログへ貼り付ける必要はありません。アクセストークン、Cookie、API キー、購読 URL は伏せたうえで、ドメイン、ポート、接続結果、プロキシグループ名だけを記録します。Clash Verge のログで anthropic.com などが一度も表示されない場合は、ルールの問題を疑う前に、そもそもそのプロセスが Clash を通っているかを調べるべきです。

ブラウザとターミナルの経路が異なる理由

ブラウザは OS のプロキシ設定や拡張機能を利用していることが多い一方、Node.js の CLI は起動時の環境変数やアプリ側の実装に左右されます。Clash Verge のシステムプロキシをオンにしても、すべての Node.js パッケージが同じ方式で対応するとは限りません。また、名前解決だけが OS 側で行われ、接続自体は Clash へ渡る構成では、地域判定や DNS 汚染が原因のように見える失敗が起きることもあります。

この差を埋める方法は大きく二つです。ひとつは Claude Code を起動するターミナルへ混合ポートを明示し、HTTP と HTTPS の通信を Clash へ渡す方法です。もうひとつは TUN モードを有効にして、プロキシ変数を理解しないプロセスも OS のルート経由で捕捉する方法です。まずは影響範囲が小さい環境変数方式から試し、必要なアプリだけ TUN へ進むのが安全です。

Clash Verge の準備と基本設定

Clash Verge Rev など、現在も更新されている mihomo 対応クライアントを使用してください。古い Clash for Windows 系の配布ファイルや、検索広告から取得した改造版を使うと、画面上の設定と実際に動いているコアの機能が一致しないことがあります。インストール後は、プロファイルが正常に読み込まれ、プロキシグループに少なくとも一つ利用可能なノードが表示されることを確認します。

  1. プロファイルを読み込む:Clash Verge の「Profiles」または「プロファイル」画面で、信頼できる HTTPS 設定 URL を追加します。URL はパスワードと同じように扱い、公開チャットやスクリーンショットへ貼らないでください。
  2. プロファイルを選択する:読み込みが終わったら、現在使用する設定をアクティブにします。更新日時やプロキシグループが空欄になっていないかも確認します。
  3. ノードを固定する:最初の検証では「自動選択」より、応答が安定しているノードを手動で選びます。自動切り替えを残すと、認証中やストリーミング中の経路が変わり、原因が見えにくくなります。
  4. システムプロキシを確認する:Clash Verge のシステムプロキシを有効にし、ブラウザで通常の HTTPS ページが開くことを確認します。ここで通信できない場合は Claude Code の設定へ進まず、プロファイルやノードを先に直します。

Clash Verge の混合ポートは、設定画面に表示される番号を使います。一般的には 78907897 が使われますが、環境によって異なるため、番号を決め打ちしないでください。画面に表示された HTTP mixed port、または HTTP と SOCKS の両方を受け付ける混合ポートを確認します。

重要:プロファイルの購読 URL、API キー、Claude のセッショントークンを同じ場所へ保存したり、診断ログとして他人へ送ったりしないでください。接続確認に必要なのはホスト名と結果であり、秘密情報の値ではありません。

ターミナルへ Clash のプロキシを渡す

まず現在のシェルだけにプロキシを設定します。ターミナルを閉じれば元に戻るため、動作確認に適しています。Clash Verge の画面で混合ポートが 7890 と表示されている場合の例は次のとおりです。

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

macOS や Linux では上の export を使えます。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"

混合ポートが SOCKS 接続を受け付けない構成なら、ALL_PROXY は無理に設定せず、HTTP と HTTPS の二つだけで試します。反対に、アプリが SOCKS を要求する場合は Clash Verge の SOCKS ポートを確認し、socks5://127.0.0.1:番号 に置き換えます。ここで重要なのは、設定したポートが実際に待ち受けていることです。

環境変数が入ったかどうかは、値をそのまま共有せず、設定済みかだけを確認します。

env | grep -i proxy
node -e "console.log(process.env.HTTPS_PROXY || 'HTTPS_PROXY is not set')"

Claude Code を起動する前に、同じターミナルで設定する必要があります。別のターミナルタブ、IDE 内蔵ターミナル、タスクランナーから起動した場合は、環境変数が引き継がれていないことがあります。プロキシ設定後に新しいシェルを開いた場合も、設定が消えていないか再確認してください。

毎回設定するのが面倒な場合

一時設定で正常に動作することを確認できたら、シェルの設定ファイルへ追加できます。ただし、この方法はすべての Node.js コマンド、Git 操作、パッケージマネージャーにも影響します。社内サーバーや国内サービスまでプロキシへ送る可能性があるため、常時設定が本当に必要かを考えてください。

alias claude-proxy='HTTPS_PROXY=http://127.0.0.1:7890 HTTP_PROXY=http://127.0.0.1:7890 claude'

専用のエイリアスやシェルスクリプトに分けておけば、通常のターミナル通信を DIRECT に戻しやすくなります。プロキシを解除する場合は、現在のシェルで次のように実行します。

unset HTTP_PROXY HTTPS_PROXY ALL_PROXY

Claude 関連通信をルール分けする

まずは接続ログに現れた実際のホストを基準にします。サービスの構成は変更されるため、検索結果から古いドメイン一覧を丸ごとコピーするより、認証またはプロンプト送信を再現した瞬間に Clash Verge が記録したホストを優先する方が正確です。代表的な候補として anthropic.com やそのサブドメインが出ることがありますが、名称だけで固定せず、ログと公式の接続先情報を照合してください。

ルールの順番は非常に重要です。広い GEOIPMATCH、または大きな地域ルールを先に置くと、Claude 用に追加した細かいルールへ到達しないことがあります。概念的には次のように、対象ドメインを専用グループへ送り、最後に既存の一般ルールへ流します。

rules:
  - DOMAIN-SUFFIX,anthropic.com,CLAUDE
  - DOMAIN-SUFFIX,claude.ai,CLAUDE
  - MATCH,FINAL

上記は構成の考え方を示す例であり、実際のプロファイルに存在するグループ名や既存ルールへ合わせて調整してください。購読プロファイルが自動生成するルールを直接編集すると、次回更新時に消えることがあります。可能であれば、Clash Verge の上書き設定、ルールプロバイダ、またはローカルの補助設定を使い、元の購読内容と自分の追加ルールを分離します。

認証だけが失敗する場合は、Claude のメインサービスだけでなく、ログイン、アカウント、認証コールバックに関係する通信も確認します。ブラウザで開いた URL と、Clash Verge の接続一覧に表示されたホストが一致しないこともあります。認証画面を何度も繰り返す前に、ブラウザ側と CLI 側で異なるドメインが使われていないかを見てください。

TUN モードは、環境変数を無視するプロセスや IDE から起動する Claude Code を扱うときに有効です。Clash Verge で TUN を有効にする場合は、管理者権限、仮想インターフェース、DNS、ローカルネットワークの除外を順に確認します。最初から TUN と環境変数を同時に有効化すると、二重プロキシやルーティングループの原因が分かりにくくなるため、どちらか一方で検証してください。

疎通確認とよくある修正

設定後は、Claude Code をいきなり長い作業へ投入せず、短い確認を行います。まず Clash Verge の接続一覧を開いたまま、Claude Code の起動、ログイン、短いプロンプト送信を順番に実行します。各操作の直後に、対象ホスト、使用グループ、接続状態、送受信量を確認してください。通信が表示されても、意図したグループを通っているとは限らないので、DIRECT になっていないかを必ず見ます。

確認結果 次の対応
通信が表示され、応答も安定している 短時間の作業から始め、長時間ストリーミング時の切断がないかを見る
通信は表示されるが DIRECT になっている 対象ルールの順番、グループ名、プロファイルの上書き設定を確認する
通信が一件も表示されない 環境変数、TUN、起動元のシェル、別プロファイルの使用を確認する
接続中にノードが切り替わる 自動選択を一時停止し、安定したノードを固定して再現する

ログイン後にだけタイムアウトする場合は、認証経路と API 経路を分けて調べます。認証が完了しても API 通信が別ホストへ出ている可能性があります。逆に、プロンプト送信だけ失敗する場合は、ノードの応答速度、TLS 接続の安定性、ストリーミングの長時間維持を確認します。短い HTTPS テストが成功したからといって、長い応答も必ず安定するとは限りません。

Node.js のバージョンが古い、証明書ストアが破損している、VPN や別のローカルプロキシが同時に動いている、といった要因もあります。Clash Verge の設定を増やす前に、Node.js と Claude Code を公式の手順で更新し、他の VPN、セキュリティソフト、開発用プロキシを一時的に整理してください。環境を一つずつ変えることが、再現性のある排障につながります。

市販の簡易プロキシツールや一部の GUI クライアントは、ブラウザ設定だけを切り替えるため、Node.js の認証通信、IDE 内蔵ターミナル、長時間のストリーミング接続まで同じように扱えないことがあります。設定項目が少ない反面、ログの粒度が不足し、どのホストが失敗したのか分からないケースもあります。Clash 公式サイト では Clash Verge と mihomo の設定を前提に、プロファイル、ターミナル環境変数、接続ログ、TUN への切り替えを段階的に確認できるため、Claude Code のような CLI 通信を原因別に整理しやすい構成です。ブラウザでは動くのにターミナルだけ不安定という状況を落ち着いて検証したいなら、まずは Clash 公式サイト を無料でダウンロードして、この記事の手順どおりに小さなテストから始めてみてください。