Claude Codeが接続できない主な原因
Claude Codeをターミナルから実行したとき、ログインが終わらない、APIへの接続がタイムアウトする、あるいはブラウザーではClaudeを使えるのにCLIだけ失敗することがあります。この場合、アカウントやインストールに問題があるとは限りません。ターミナルの通信がClashを経由していない、Clashのルールが接続先をDIRECTにしている、または環境変数に誤ったプロキシポートが指定されている可能性があります。
Claude Codeはターミナルで動作するCLIツールです。ブラウザーの通信がシステムプロキシに従っていても、すべてのターミナルアプリが同じ設定を自動的に使うとは限りません。特に、システムプロキシだけを有効にした状態では、CLIがプロキシを認識せず直接接続を試みることがあります。まず、Clashの稼働状況、ポート、ルール、ターミナル側の環境変数を順番に確認しましょう。
この記事で行うこと
Clashにプロファイルを読み込み、Claude Codeの通信を適切なプロキシグループへ振り分け、認証エラーやタイムアウトの原因を切り分けます。
利用地域とアカウントについて
Clashは通信経路を管理するツールであり、Claude Codeの利用資格や地域制限を変更するものではありません。Anthropicの利用条件、提供地域、組織のネットワーク規則を確認し、許可された環境で利用してください。
1Clashのプロファイルとポートを確認する
まずClash Verge、Clash Verge Revなどのクライアントを起動し、利用中のプロファイルが正常に読み込まれていることを確認します。サブスクリプションを追加しただけでは、プロキシ通信が始まらない場合があります。プロファイルを選択し、クライアントの接続機能を有効にしてから、プロキシグループに利用可能なノードが表示されるか確認してください。画面上の項目名はクライアントやバージョンによって異なります。
- プロファイルの読み込みが完了し、エラー表示がないことを確認します。
- プロキシグループで利用可能なノードを選択します。自動選択グループの場合は、グループ自体が無効になっていないか確認してください。
- Clashの設定画面でHTTPプロキシまたは混合ポートを確認します。よく使われるポート番号はありますが、環境によって異なるため、画面に表示された値を使ってください。
- 必要に応じてシステムプロキシを有効にします。ただし、ターミナルでは後述する環境変数の設定も確認します。
HTTPプロキシとSOCKSポートは別々に設定されている場合があります。Claude CodeやNode.jsの動作環境がどの方式を認識するかは、バージョンや起動方法によって異なるため、まずClashのHTTPポートまたはHTTPとSOCKSの両方を扱う混合ポートを利用する方法が分かりやすいでしょう。ここでは例としてポート番号を 7890 とします。実際の設定画面の値と異なる場合は、必ずその値に置き換えてください。
ポートを決めつけない
別のアプリがポートを使用している、または設定で番号を変更している場合、例の番号に接続しても通信できません。Clashのポート設定とターミナルの指定を一致させることが大切です。
2ターミナルにプロキシを設定する
ターミナルから起動したClaude CodeにClashを使わせるには、シェルの環境変数でプロキシを指定する方法が一般的です。以下の例では、Clashがローカル端末の 7890 番ポートでHTTPプロキシを提供しているものとします。利用中のポートに合わせて変更してください。
macOS・Linuxの場合
利用中のターミナルで、まず次のコマンドを実行してからClaude Codeを起動します。プロキシのアドレスは端末内からClashへ接続する例です。
大文字と小文字のどちらを参照するかは、利用するプログラムによって異なります。両方を設定しておくと、互換性の問題を避けやすくなります。動作確認ができたら、毎回手入力する代わりに、利用中のシェルに合わせて設定ファイルへ追加できます。zshなら通常は ~/.zshrc、bashなら ~/.bashrc などが候補です。ファイルを編集した後は、新しいターミナルを開くか、設定ファイルを再読み込みしてください。
Windows PowerShellの場合
PowerShellでは、次のように環境変数を設定し、同じウィンドウからClaude Codeを起動します。新しく開いたターミナルには一時的な設定が引き継がれないことがあります。
設定後も接続できない場合は、値が現在のターミナルに反映されているか確認します。macOS・Linuxでは printenv HTTPS_PROXY、PowerShellでは $env:HTTPS_PROXY を実行してください。表示されたポート番号がClashの設定と異なる場合は、環境変数を修正してから再試行します。
直接接続させる通信の設定
社内ネットワークやローカルサービスなど、プロキシを経由させたくない接続先がある場合は、必要なものだけを例外にします。環境変数の NO_PROXY または no_proxy を使う構成もありますが、対象を広くしすぎるとClaude Codeの通信までプロキシを通らなくなることがあります。原因調査中は例外をいったん外し、まずClash経由で接続できるか確認すると切り分けが簡単です。
認証情報をコマンドに含めない
プロキシにユーザー名やパスワードが必要な環境では、認証情報をシェル履歴、共有スクリプト、画面キャプチャに残さないよう注意してください。パスワードやAPIキーを公開リポジトリに保存することも避けましょう。
3Claude Codeの通信ルールとエラーを確認する
ターミナルのプロキシ設定が正しくても、Clashのルールが接続先をDIRECTへ振り分けていると期待した経路になりません。Claude Codeの通信先には、APIや認証、関連機能など複数の接続先が含まれることがあります。利用中のバージョンや機能によって異なるため、単一のホスト名だけを追加して解決したと決めつけず、Clashの接続ログを見ながら実際の通信先を確認してください。
ルールを追加する場合は、設定ファイルの rules: にある既存のルール構成と、参照するプロキシグループ名を確認します。以下は形式を示す例です。Claude は例示用のグループ名なので、実際にプロファイル内に存在する名前へ置き換えてください。ルールは通常、より具体的なものを広い条件や最終ルールより前に置きます。
この例をそのまま追加しても、グループ名が存在しない、設定のルール形式が異なる、または対象の通信先が別のドメインである場合には動作しません。プロファイルを直接編集すると、サブスクリプション更新で変更が失われることがあります。クライアントにルールの追加・マージ機能がある場合は、提供元のプロファイルを壊さない方法を選び、変更後に設定検証や再読み込みを行ってください。特定のドメインを確認できていない段階では、根拠のないルールを大量に追加するより、接続ログで実際の接続先と判定ルールを調べる方が確実です。
| 症状 | 確認する箇所 | 対処の方向性 |
|---|---|---|
| 接続がタイムアウトする | Clashの稼働状態、ポート、選択中のノード、接続ログ | ポートの一致を確認し、別の利用可能なノードでも比較する |
| 認証に失敗する | Claude Codeのログイン状態、アカウント、組織の認証要件 | ネットワーク設定だけでなく、公式の案内に従って再認証する |
| ブラウザーは使えるがCLIは失敗する | システムプロキシとターミナルの環境変数の違い | ターミナルにHTTP_PROXYとHTTPS_PROXYを設定して起動する |
| 一部機能だけ接続できない | Clashの接続ログ、ルールの順序、該当グループ | 実際の接続先を特定し、必要なルールだけ調整する |
認証エラーはネットワークだけが原因とは限りません。アカウントの状態、組織のSSO設定、認証トークンの期限、利用可能な地域なども確認してください。ブラウザーで認証を完了した後にCLIへ戻る構成では、ターミナルを起動した端末とブラウザーを操作した端末が異なると、認証フローが完了しない場合があります。エラーメッセージを確認し、公式のログイン手順をやり直してください。
安全な順序で原因を切り分ける
一度に複数の設定を変更すると、どの変更が効果をもたらしたのか分からなくなります。最初にClashを起動してノードを選び、ターミナルに正しいポートを設定します。次に接続ログでClaude Codeの通信が表示されるか、接続先が意図したグループに振り分けられているかを確認してください。通信がログに出ない場合は、CLIの環境変数や起動元を見直します。ログに出ているのに失敗する場合は、ルール、ノード、認証状態、ネットワーク側の制限を一つずつ確認します。
最後に、不要になった環境変数を解除する方法も把握しておきましょう。macOS・Linuxでは unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy、PowerShellでは Remove-Item Env:HTTP_PROXY と Remove-Item Env:HTTPS_PROXY を実行できます。解除後は新しい接続を試し、プロキシを経由しない状態に戻ったことを確認します。問題が解消したら、恒久設定は必要なシェルや端末だけに限定し、共有端末では設定を残さないようにしてください。
ログの共有時は情報を隠す
接続ログやエラー出力には、アカウント名、ローカルIPアドレス、認証情報などが含まれることがあります。サポートへ送る前に個人情報やトークンを必ず伏せてください。
4安定して使うための運用ポイント
毎回問題なく使うには、Clashの起動、プロファイルの更新、ターミナルの環境変数をセットで管理します。Clash Verge RevなどのGUIクライアントでは、プロファイルの更新後にルールやグループ名が変わることがあります。Claude Code専用のルールを追加している場合は、更新後にルールが残っているか、グループ名が一致しているかを再確認してください。接続できなくなったタイミングを記録しておくと、プロファイル更新やネットワーク変更との関係を見つけやすくなります。
また、ターミナルの設定を複数の場所に重複して書くと、古いポート番号が残ったり、別のプロキシ設定が優先されたりする原因になります。環境変数は一つの管理場所にまとめ、Clashのポートを変更したときに同じ値へ更新してください。会社や学校のネットワークを利用している場合は、個人のプロキシ設定が組織の規則に反しないか事前に確認することも重要です。
Claude Codeが使う通信先や必要な設定は、機能やバージョンによって変わる可能性があります。固定のIPアドレスを前提にするのではなく、ドメインベースのルールと接続ログを使い、変更時には公式の情報も確認してください。原因がネットワークではなく認証やアカウント側にあると分かった場合は、プロキシ設定をさらに複雑にせず、該当する公式サポート情報に沿って対応するのが安全です。
まずは一時的な環境変数で接続を試し、成功した場合にだけ必要な設定を恒久化しましょう。Clashのルール、ターミナルのプロキシ設定、Claude Codeの認証を分けて確認すれば、接続エラーの原因を見失わずに対処できます。