macOS版Clashの権限設定|ネットワーク拡張の許可とキーチェーンのパスワード要求への対処
Claude Codeをターミナルから実行した際のタイムアウトや接続エラーに困ったら、プロキシ設定を確認しましょう。Clash Vergeへの設定ファイルの読み込みから、ノード選び、Claude Code向けのルール分岐、環境変数の確認まで順を追って解説します。利用可否は提供地域やアカウント、回線状況によって異な…
まず、Claude CodeとClash Vergeのどちらで通信が止まっているか確認する
Claude Codeをターミナルから実行したときに、接続タイムアウト、応答待ちのまま進まない、認証画面を完了できないといった症状が出ても、原因がClash Vergeのノードとは限りません。ターミナルで起動したプロセスは、ブラウザーのようにOSのシステムプロキシ設定を自動で利用するとは限らず、Claude Codeを起動したシェルの環境変数やネットワーク設定に従うことがあります。そのため、ブラウザーではWebサイトを開けるのに、Claude Codeだけ通信できない状況が起こります。
最初に、エラーが出る時刻とメッセージを記録し、Clash Vergeの「接続」や「ログ」で同じ時刻に新しい接続が記録されているか確認します。接続自体が表示されない場合は、Claude Codeからローカルプロキシへ通信が届いていない可能性があります。接続が表示されている場合は、ルール、選択中のプロキシグループ、ノード接続、接続先の応答を順に調べます。メニュー名や配置はClash Vergeのバージョン、OS、使用するコアによって異なるため、実際の画面表示を基準にしてください。
| 症状・ログの手がかり | 先に確認する項目 |
|---|---|
| Clash Vergeの接続一覧に記録がない | ターミナルのプロキシ環境変数、ローカルポート、シェルの起動方法 |
| 接続はあるが、ルールがDIRECTになる | 一致したルール、ルールの順序、プロキシグループ名 |
| プロキシ経由でもタイムアウトする | 選択中のノード、DNS、TLS接続、ネットワーク側の制限 |
| 通信エラーではなく認証エラーが表示される | Claude Codeの認証状態、アカウントや組織の利用条件 |
Clash Vergeの設定とローカルプロキシポートを確認する
Clash Vergeは設定を読み込んでコアを起動し、ローカルのプロキシポートでアプリからの通信を受け付けます。サブスクリプションを読み込んだだけでは、必ずしも通信できるノードが選択されているとは限りません。Profilesなどの設定一覧で使用中の設定が選択され、コアが正常に起動していることを確認し、プロキシグループの画面で利用可能な出口が選ばれているかを見ます。接続テストの遅延表示はノードへの到達性を判断する手がかりですが、Claude Codeからの実通信が成功することまでは保証しません。
次に、現在の設定またはクライアントのポート設定で、ローカルHTTPプロキシとして使うポートを確認します。たとえば設定がmixed-port: 7890なら、同じ端末内のアプリからは通常127.0.0.1:7890へ接続します。7890は例であり、Clash Vergeのすべての環境で共通する固定値ではありません。ポートを変えたことがある場合は、設定ファイルの値だけでなく、実際に読み込まれた設定とクライアント画面の表示を照合してください。
# ローカルプロキシの設定例(設定全体ではありません)
mixed-port: 7890
allow-lan: false
mode: rule
mixed-portは一般にHTTPとSOCKSの接続を同じポートで受け付けます。一方、portはHTTP用、socks-portはSOCKS用として個別に設定される場合があります。Claude Codeの通信にHTTPプロキシ環境変数を使う場合は、実際にHTTPプロキシを受け付けるポートを指定してください。SOCKS専用ポートをHTTPプロキシとして指定すると、接続に失敗することがあります。
また、Clash Vergeのシステムプロキシを有効にした状態でも、ターミナルアプリやClaude Codeがその設定を引き継ぐとは限りません。システムプロキシはOS側の設定を変更する機能で、すべてのアプリや子プロセスを強制的にプロキシへ通す機能ではありません。まずはコアの起動、選択中のプロファイル、実際の待ち受けポートを個別に確認し、TUNを使う場合もシステムプロキシとは別の通信取り込み方法として扱います。
ターミナルにHTTP_PROXYとHTTPS_PROXYを設定して試す
Claude Codeを起動するターミナルの環境変数にローカルのHTTPプロキシを指定すると、システムプロキシに依存せずに経路を比較できます。以下ではポートを7890としています。Clash Vergeで別のポートを使用している場合は、実際の値に置き換えてください。設定するのはコマンドを実行したシェルと、そのシェルから起動するプロセスです。別のターミナルウィンドウや、OSのアプリ一覧から直接起動したClaude Codeには引き継がれない場合があります。
macOS・Linuxの例
# 現在のシェルと、そこから起動するプログラムに設定
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
# Claude Codeを同じターミナルから起動
claude
環境変数名の大文字・小文字の扱いはプログラムによって差があるため、期待どおりに動かない場合は、使用中のシェルやClaude Codeの案内を確認したうえで小文字のhttp_proxyとhttps_proxyも試します。常時設定する前に、まず現在のターミナルだけで動作を比較するのがおすすめです。接続先をプロキシに通したくないドメインがある場合にはNO_PROXYを使うことがありますが、広い範囲を指定すると意図せず直接接続になるため、必要な宛先だけを指定してください。
Windows PowerShellの例
# 現在のPowerShellセッションだけに設定
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
# 同じPowerShellから起動
claude
PowerShellで設定した値は、そのウィンドウを閉じると通常は失われます。動作確認の段階では、ユーザー環境変数やシステム環境変数に永続保存しない方が、元に戻しやすくなります。現在の値を確認するには、macOS・Linuxではenv | grep -i proxy、PowerShellではGet-ChildItem Env:*proxy*を実行します。出力に認証情報が含まれる設定を使っている場合、結果をそのまま共有しないでください。
- Clash Vergeでコアが起動中であり、利用するプロキシグループに有効な出口が選択されていることを確認します。
- 設定画面でHTTPプロキシの待ち受けポートを確認し、コマンドの
7890をその値に合わせます。 - 新しいターミナルを開き、OSに合った環境変数を設定してからClaude Codeを起動します。
- Claude Codeで同じ操作を再試行し、Clash Vergeの接続一覧とログに対象通信が現れるか確認します。
- 結果を記録してから環境変数を削除するか、ターミナルを閉じ、元の動作と比較します。
このテストでエラーが解消し、Clash Vergeの接続一覧にも通信が表示されるなら、システムプロキシがターミナルプロセスに引き継がれていなかった可能性があります。反対に、connection refusedのようなエラーが出る場合は、まず指定ポートの誤り、コア停止、別プロセスによるポート競合を確認します。環境変数を設定しても、認証情報やサービスの利用制限まで解決するわけではありません。
ルール分岐でClaude Codeの通信経路を確認する
環境変数によってClaude Codeの接続がClash Vergeに届いているのに失敗する場合は、接続一覧で対象ドメイン、マッチしたルール、選択されたポリシーを確認します。ルールモードでは、通常、設定されたルールが上から順に評価され、最初に一致したルールのポリシーへ接続が渡されます。したがって、プロキシ用ルールを追加しても、それより前の広いルールに一致すれば、追加したルールは使われません。
次の例は書き方を示す一部のルールであり、設定全体ではありません。Proxyは例示のポリシー名なので、実際の設定にあるプロキシグループ名に置き換えてください。グループ名の大文字・小文字や空白も設定と一致させます。
rules:
- DOMAIN-SUFFIX,anthropic.com,Proxy
- MATCH,Proxy
この例では、anthropic.comとそのサブドメインに一致する通信をProxyへ渡します。ただし、Claude Codeの利用に関係する通信先は機能や認証方式、サービス提供側の変更によって異なり、上記のドメインだけで全通信を網羅できるとは限りません。接続一覧や公式のネットワーク要件を確認し、実際に必要な宛先を特定してからルールを調整してください。広範なドメイン一致やIPアドレスの固定登録を安易に追加すると、無関係な通信まで経路が変わることがあります。
通常のルール分岐と一時的な比較も区別します。グローバルモードは通常のルール照合を迂回して、接続をグローバルポリシーへ渡すため、ルールの問題を切り分ける比較には使えますが、すべてのアプリ通信を取り込む機能ではありません。比較後は元のルールモードへ戻し、接続一覧で実際に選ばれたポリシーとノードを確認してください。モードを切り替えただけでTUNやOSのプロキシ設定まで有効になるわけではありません。
接続を検証し、変更を安全に元へ戻す
設定変更後は、Claude Codeのエラー表示だけで判断せず、Clash Vergeの接続記録と合わせて検証します。プロキシへの到達確認には、Windowsではcurl.exe、macOS・Linuxでは通常curlを使えます。次の例はHTTPプロキシ経由でHTTPSサイトへ接続を試みるもので、Claude Codeの認証やAPIリクエストそのものを検証するコマンドではありません。
# Windows PowerShell
curl.exe -I --connect-timeout 10 --max-time 20 `
--proxy http://127.0.0.1:7890 https://api.anthropic.com/
# macOS・Linux
curl -I --connect-timeout 10 --max-time 20 \
--proxy http://127.0.0.1:7890 https://api.anthropic.com/
応答のステータスコードだけで成功・失敗を決めつけず、TLS接続が成立したか、Clash Vergeに対象接続が記録されたかを確認してください。プロキシ経由の接続自体が成立しても、APIの応答は認証やリクエスト内容によって異なります。また、サービスの利用条件や組織ネットワークのポリシーによってアクセスが制限される場合は、ルールを増やすのではなく、管理者やサービス提供元の案内を確認します。
切り分けの結果は、次のように整理すると原因を追いやすくなります。
- プロキシ指定なしでは失敗し、指定すると成功する:システムプロキシがターミナルへ反映されていない可能性が高いため、必要なシェルで環境変数を設定します。
- 接続一覧に出るがDIRECTになる:一致ルールとルール順、ポリシー名を確認し、必要なら設定のバックアップ後に狭い範囲のルールを追加します。
- 接続一覧に出るが接続エラーになる:選択したノード、コアのログ、DNS、ネットワーク側の制限を確認します。
- 通信経路は通るが認証で失敗する:Claude Codeのログイン状態、アカウントの利用権限、認証情報の期限を確認します。
検証が終わったら、常用しない環境変数を解除します。macOS・Linuxではunset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy、PowerShellではRemove-Item Env:HTTP_PROXY, Env:HTTPS_PROXYを実行できます。永続設定を変更した場合は同じ画面で元の値に戻してください。Clash Vergeのルールやプロファイルを編集したときは、設定ファイルのバックアップを保管し、不要になったテスト用ルールを削除します。問題が再発した際は、エラー時刻、Clash Vergeの接続ログ、使ったポート、環境変数の有無を記録すると、システムプロキシ、ルール、ノード、認証のどこで止まるかを判断しやすくなります。