Claude Codeをターミナルから起動したときに、ログインが完了しない、APIへのリクエストがタイムアウトする、ブラウザーでは接続できるのにCLIだけ失敗する、といった場合は、Clashのシステムプロキシ設定だけでなく、ターミナルに渡すプロキシ環境変数も確認しましょう。多くのターミナルアプリや開発ツールは、OSのプロキシ設定を自動的には参照しません。この記事では、Clashの待受ポートとルールを確認し、macOS・Linux・WindowsのターミナルからClaude Codeへプロキシを適用する手順と、接続エラーの切り分け方を解説します。

ターミナルだけ接続できない理由

Clash Verge、Clash Verge Rev、Mihomoなどでシステムプロキシを有効にしていても、その設定がすべてのアプリケーションに適用されるとは限りません。ブラウザーはOSのプロキシ設定を参照して通信できる一方、ターミナルで起動したClaude Codeは、環境変数やアプリケーション独自のネットワーク設定を使うことがあります。そのため、ブラウザーではAnthropicのページが開けても、Claude CodeのログインやAPIリクエストが失敗する場合があります。

最初に確認したいのは、Clashのローカルプロキシポートです。一般的にはHTTPとSOCKSの両方を受け付けるMixed Portが使われますが、ポート番号は設定やクライアントによって異なります。Clashの設定画面またはMihomoの設定で実際の値を確認してください。以下では例として7890を使用します。画面に表示されているポートが異なる場合は、以降のコマンドの番号を置き換えます。

Claude Codeの通信先をプロキシ経由にしたい場合、端末側では通常、HTTPプロキシを示すHTTP_PROXYとHTTPS_PROXYを設定します。HTTPS通信もプロキシ先のURLにはhttp://を使う構成が一般的です。これはローカルのClashにHTTP形式で接続し、その先のHTTPS通信をトンネルするという意味です。ClashのポートがSOCKS専用の場合は、HTTP用のポートを有効にするか、利用するクライアントが対応するSOCKS形式を確認してください。

システムプロキシのON/OFFと、シェルの環境変数は別々に確認してください。また、ローカルのプロキシアドレスは通常127.0.0.1ですが、コンテナやリモート開発環境から実行する場合、そのアドレスは実行環境自身を指します。Clashが動作するホストのアドレスを指定する必要があります。

ターミナルにプロキシ環境変数を設定する

まずは環境変数を一時的に設定し、Claude Codeを起動して動作を確認する方法がおすすめです。一時設定なら、ターミナルを閉じると元に戻るため、シェル全体への恒久的な変更を避けながら原因を切り分けられます。プロキシURLにはClashのHTTP対応ポートを指定します。

macOS / Linux(bash・zsh)
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"

claude

環境によっては、プログラムが大文字または小文字の変数名のどちらかを参照します。上の例では両方を設定しています。プロキシを外して再確認するときは、unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxyを実行します。設定が現在のシェルに反映されているかは、env | grep -i proxyで確認できます。値を出力した画面を共有する場合は、プロキシURLに認証情報が含まれていないか注意してください。

WindowsのPowerShellでは、同じターミナルセッション内で次のように設定できます。

Windows PowerShell
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:http_proxy = $env:HTTP_PROXY
$env:https_proxy = $env:HTTPS_PROXY

claude

PowerShellで設定を解除する場合は、Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:http_proxy, Env:https_proxyを実行します。設定を毎回入力したくない場合は、シェルの起動設定ファイルに追記する方法もあります。ただし、職場と自宅で異なるプロキシを使う場合や、VPN接続の有無で接続先が変わる場合には、一時設定のほうがトラブルを避けやすくなります。

NO_PROXYは、プロキシを通さず直接接続するホストを指定するための変数です。ローカルの開発サーバーや社内ネットワークへの通信を維持したい場合に限って設定します。必要のない宛先を広く指定すると、Claude Codeが接続すべき通信までプロキシを迂回する可能性があります。問題の切り分け中は、まずNO_PROXYを設定せずに試し、直接接続が必要な宛先が明確になった段階で追加してください。

Clashのモードとルールを確認する

環境変数を正しく設定しても、Clash側のルールが接続先をDIRECTに振り分けていれば、期待した経路にならないことがあります。まずClashのモードを確認してください。Ruleモードでは、通信先のドメインがどのルールに一致したかによって経路が決まります。Globalモードに一時的に切り替えて接続を試すと、ルールの問題か、ポートや環境変数の問題かを分けて調べやすくなります。確認後は通常の運用モードに戻します。

Claude Codeの接続には、ログイン方式や利用機能に応じて複数のサービスへの通信が関係する場合があります。特定のドメイン名を見つけて一つだけ許可すれば必ず解決するとは限りません。Clashの接続一覧やログで、実際に失敗している宛先と適用ルールを確認し、その宛先を意図したプロキシグループへ振り分けます。ドメインの追加が必要な場合も、確認できた宛先だけを対象にし、設定全体を無条件に広げないようにしましょう。

Clashの接続画面を開いた状態でClaude Codeを起動すると、接続が発生した時刻、宛先、適用ルール、選択されたプロキシを照合できます。失敗したリクエストが一覧に出ているならClashまでは到達しています。一覧にまったく出ない場合は、環境変数がClaude Codeのプロセスに渡っているか、設定したポートが正しいかを先に確認してください。

ポートやルールの確認に使える代表的な観点をまとめると、次のようになります。

確認項目見方問題がある場合
Clashの待受ポートクライアントのポート表示やMihomoの設定を確認実際のHTTP対応ポートに環境変数を合わせる
Claude Codeの環境変数起動したターミナルでプロキシ変数を表示起動前に設定し、同じシェルから実行する
Clashの接続一覧失敗時に宛先と適用ルールを確認対象の通信を意図したプロキシグループへ振り分ける
プロキシグループ選択中のノードが利用可能か確認別ノードを選び、接続テストを再実行する

段階的な接続テストとエラーの切り分け

設定を変更したら、いきなり認証や複雑な操作を何度も繰り返すのではなく、ローカルの待受、HTTPプロキシ経由の通信、Claude Codeの順に確認します。まずターミナルからClashのローカルポートへ接続できることを確認し、次にcurlを使ってHTTPSサイトへのリクエストをプロキシ経由で試します。たとえば次のコマンドは、プロキシ経由の通信を明示して接続を試す例です。

curlでプロキシ接続を確認
curl -I --proxy http://127.0.0.1:7890 https://example.com/

このテストはClashを通した基本的なHTTPS通信を確認するもので、Claude Codeの認証やAPI呼び出しが成功することまで保証するものではありません。失敗した場合は、まずClashが起動しているか、ローカルポートが正しいか、選択中のノードが利用可能かを確認します。curlは成功するのにClaude Codeだけが失敗する場合は、Claude Codeを起動したプロセスに環境変数が引き継がれているか、利用しているログイン方式や認証設定に別の問題がないかを調べます。

ログイン画面が開かない場合は、ブラウザーを起動するプロセスとターミナルのプロセスでネットワーク経路が異なる可能性があります。ブラウザーが正常に動いていることだけで、CLI側のプロキシ設定が有効だとは判断できません。まず同じターミナルで環境変数を表示し、その後、同じウィンドウからClaude Codeを起動してください。ターミナルを再起動した場合は、セッションごとの一時設定が消えていないかも確認します。

リクエストがタイムアウトする場合は、Clashの接続ログで接続先とエラーの種類を確認し、選択中のノードを変更して比較します。TLS証明書のエラーが表示されたときは、証明書検証を無効にする設定で回避しないでください。システム時刻、Clashやネットワーク環境によるHTTPS通信への干渉、証明書の状態を確認するのが安全です。また、認証エラーは通信が通っていても発生するため、プロキシの問題とアカウントや認証情報の問題を分けて考えます。

接続が成功した後は、必要に応じてプロキシ設定をシェルの起動設定へ移し、普段使うターミナルから同じ環境変数で起動できるようにします。反対に、プロキシを使うツールと直接接続するツールを併用する場合は、一時設定のまま運用するか、シェルごとに設定を分けると影響範囲を限定できます。ポート、環境変数、Clashの接続ログを順番に確認すれば、設定ミスと認証・サービス側の問題を切り分けやすくなります。まずは現在のClashポートに合わせて環境変数を設定し、ターミナルからClaude Codeを再起動してみてください。