症状の整理:ターミナルで claude がエラー・タイムアウト

2026 年現在、Anthropic が提供する Claude Code は、ターミナルから直接 AI コーディング支援を行える CLI ツールとして開発者の間で広く使われています。ところが、プロキシ環境下でいざ claude コマンドを叩くと、

  • 起動直後に 接続エラーConnectionErrorECONNREFUSED 等)で止まる
  • コマンドは受け付けるが API レスポンスがタイムアウトする
  • ブラウザで claude.ai は開けるのに CLI だけ疎通しない
  • 認証フロー(ブラウザにリダイレクトされる部分)は通るが モデル呼び出しが詰まる

といった症状がよく見られます。これらは「Clash 側でブラウザのトラフィックだけ拾えていて、CLI プロセスの HTTP 通信が直結のまま落ちている」または「ルールが当たっているが、特定ホストが意図しない出口に向いている」ケースであることがほとんどです。

CLI ツールはブラウザと異なり、OS のシステムプロキシ設定を自動的に尊重するとは限りません。環境変数でプロキシを渡す必要があるケースも多く、TUN モードの有無でも挙動が変わります。本稿ではこの点に焦点を当て、Clash の分流ルールプロキシグループ設計の両面から整理します。

Cursor IDE 分流記事との役割分担

当ブログでは、AI コーディング IDE として人気の Cursor を Clash で切り分ける手順を別記事で解説しています。Cursor と Claude Code はどちらも AI アシスタント機能を持ちますが、ネットワークの出方が根本的に異なります

  • Cursor:Electron ベースの GUI アプリ。エディタ本体・拡張マーケット・更新チャネルなど複数のホストに分散。OS のシステムプロキシを一部経由しやすい。
  • Claude Code:純粋な CLI ツール。api.anthropic.com など Anthropic のエンドポイントへの通信が中心。環境変数(HTTP_PROXY / HTTPS_PROXY)またはTUN モードで初めてClash に捕捉される。

したがって「Cursor の分流設定を流用すれば Claude Code も動く」とはなりません。Claude Code 専用の出口グループを切り出し、Anthropic ドメインを明示的にそこへ向ける設計が必要です。ChatGPT や Grok などの汎用 AI サイト向け分流とも役割が異なりますので、AI サイト向け分流の記事も合わせて参照してください。

Anthropic / Claude Code の通信を分解する

Claude Code が実際にどこへアクセスするかは、ログやパケットキャプチャで確認するのが最も正確ですが、カテゴリとしては次のように整理できます。

① API エンドポイント(最重要)

api.anthropic.com が Claude Code の中核です。モデルへのリクエスト・ストリーミング応答・ツール呼び出しなどがここを通ります。このホストが詰まると何もできません。出口ノードの選定では、低遅延かつ安定したものを専用グループに割り当てることを優先してください。

② 認証・アカウント

anthropic.com(apex ドメイン)や console.anthropic.com は、OAuth ベースの認証フローや API キー管理で使われます。初回セットアップ時にブラウザが開くのもここが起点になることが多いです。API エンドポイントと同じプロキシグループに入れるか、別途「認証用」グループを作るかは運用の好みで決めてください。

③ CDN・静的アセット

Claude Code はツール本体のアップデートやモデルメタデータ取得のために、Anthropic が使う CDN ホスト(storage.googleapis.com などのクラウドストレージや独自 CDN サブドメイン)にアクセスする場合があります。ここが直結のままでも日常的な会話はできることもありますが、アップデートや初期化に失敗する原因になり得ます。

④ テレメトリ・ログ収集

クラッシュレポートや使用統計のためにサードパーティのログ収集サービスへの通信が発生する場合があります。これは DIRECT に落としても問題ないケースが多いですが、企業ネットワーク環境では通信先を把握した上でルールに含めるかどうか判断してください。

ヒント

正確なホスト名はツールのバージョンで変わります。Clash のログで Matched RuleUnmatched のエントリを確認し、実際の接続先を追いながらルールを育てるのが現実的です。

関係するドメインの目安

以下はルール設定の出発点となるドメインの目安です。必ずログで実際の接続先を確認してから使用してください。バージョンアップで追加・変更される場合があります。

  • anthropic.com(apex)
  • api.anthropic.com(API エンドポイント)
  • console.anthropic.com(管理コンソール)
  • claude.ai(Web UI /ブラウザ認証リダイレクト先)
  • statsig.anthropic.com(機能フラグ・実験)
  • sentry.io(エラーレポート、サードパーティ)

このうち特に anthropic.com サフィックス全体をプロキシグループへ向けることが基本方針になります。sentry.io のようなサードパーティは方針に応じて DIRECT または既存の汎用グループへ割り当てます。

プロキシグループの設計

最小構成として、次の考え方でグループを用意するとシンプルです。

  • ANTHROPICapi.anthropic.com など API 系ホスト専用。遅延が低く安定したノードを最優先で選ぶ。
  • ANTHROPIC_CDN(任意):CDN・アップデート系。API ほど低遅延でなくてよいが、帯域に余裕のあるノードを選ぶ。

2 グループを分けるメリットは、「API が詰まったときだけノードを変える」「CDN は別の安価なノードに回す」といった操作を select 型グループで素早く行えることです。運用が複雑になりすぎると感じる場合は、1 グループにまとめても問題ありません。

# Concept only — replace node names and RULE-SET URLs with trusted sources;
# verify all hostnames against your own connection logs before deploying.
proxy-groups:
  - name: ANTHROPIC
    type: select
    proxies:
      - node-us-west
      - node-jp
      - DIRECT

  - name: ANTHROPIC_CDN
    type: select
    proxies:
      - node-us-west
      - DIRECT

ルール設定の例

以下は YAML の rules セクションへ追記するイメージです。広いルール(GEOIPMATCH)より上に配置してください。

rules:
  # Anthropic API / auth / web
  - DOMAIN-SUFFIX,anthropic.com,ANTHROPIC
  - DOMAIN-SUFFIX,claude.ai,ANTHROPIC

  # Anthropic CDN (optional separate group)
  - DOMAIN-SUFFIX,storage.googleapis.com,ANTHROPIC_CDN

  # Third-party error reporting — adjust policy per your needs
  - DOMAIN-SUFFIX,sentry.io,DIRECT

  # ... other rules ...
  - MATCH,PROXY

RULE-SET を活用している場合は、Anthropic 用のカスタムルールセットを proxy-providers と組み合わせると、複数設定ファイルへの一括反映が楽になります。ルール記法の基礎は YAML・ルール分流の記事で補完できます。

CLI のプロキシ:環境変数の設定

CLI ツールが OS のシステムプロキシを無視するケースでは、環境変数でプロキシを渡す必要があります。Clash がデフォルトで混合ポート(例:7890)を待ち受けている場合は次のように設定します。

# bash / zsh — add to ~/.bashrc or ~/.zshrc for persistence
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1

設定後は シェルを再起動するか source ~/.zshrc を実行してから claude を起動してください。Windows(PowerShell)の場合は $env:HTTPS_PROXY = "http://127.0.0.1:7890" のように設定します。Git や npm の環境変数プロキシについては Git/npm 向けの記事も参考にしてください。

TUN モードを使う場合

Clash を TUN モードで動かしているなら、OS 全体のトラフィックがコアに集まるため、環境変数の設定は不要です。ただし TUN モード自体が正常に機能しているか(ルーティング・ファイアウォール)を先に確認してください。Windows 向けの TUN トラブルシューティングは こちらの記事を参照してください。

PROCESS-NAME でプロセス単位の分流

mihomo(Clash Meta)は PROCESS-NAME ルールをサポートしており、プロセス名でトラフィックを振り分けることができます。ドメインが汎用的すぎて他のサービスと被る場合や、「CLI だけ別ノード」にしたいときに有効です。

rules:
  # Route Claude Code CLI traffic by process name (macOS/Linux binary name)
  - PROCESS-NAME,claude,ANTHROPIC
  # Windows executable
  - PROCESS-NAME,claude.exe,ANTHROPIC

  # Domain-based rules as fallback
  - DOMAIN-SUFFIX,anthropic.com,ANTHROPIC
  - DOMAIN-SUFFIX,claude.ai,ANTHROPIC
  - MATCH,PROXY

PROCESS-NAME の実行ファイル名はバージョンやインストール方法によって変わる場合があります。ps aux(macOS/Linux)やタスクマネージャー(Windows)で実際のプロセス名を確認してから記述してください。また、PROCESS-NAME は TUN モードまたは redir-host 相当の経路でのみ有効に機能する場合があります。

DNS と Fake-IP の注意点

分流ルールを設定しても「ルールは当たっているのに疎通しない」場合、DNS の問題が隠れていることがあります。

Fake-IP フィルタの確認

enhanced-mode: fake-ip を使っている場合、fake-ip-filterapi.anthropic.com が誤って含まれていると、名前解決がコアをバイパスして実 IP を返し、ルールが効かなくなります。フィルタリストに Anthropic のドメインが含まれていないことを確認してください。

DNS リーク

TUN なしのシステムプロキシ構成では、DNS クエリ自体は直結で飛ぶ設定になっていることがあります。nameserver-policy+.anthropic.com を信頼できるリゾルバへ向けると、名前解決と分流の一貫性が高まります。

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.example/dns-query
  nameserver-policy:
    # example: send Anthropic lookups to trusted resolver
    "+.anthropic.com": https://dns.example/dns-query
    "+.claude.ai": https://dns.example/dns-query

DNS の仕組みと Fake-IP の全体像は ドキュメントの DNS/Fake-IP ページで確認できます。

切り分けチェックリスト

  1. 環境変数の確認echo $HTTPS_PROXY でプロキシが設定されているか。TUN モードの場合は不要。
  2. ログでホスト名を特定:Clash のログ画面で claude 実行中に Unmatched のエントリが出ていないか確認する。
  3. ルールの順序GEOIPDIRECT が広く当たる前に anthropic.com のルールが上に来ているか。
  4. Fake-IP フィルタfake-ip-filter に Anthropic ドメインが誤って入っていないか。
  5. ノードの入れ替え:同じグループ内でも別ノードに切り替えて疎通が改善するか試す。
  6. 認証フローの確認claude login や OAuth のリダイレクトが通っているか(claude.ai のルールも当たっているか)。
  7. CDN の確認:アップデートや初期化の失敗なら CDN 系ホストがカバーされているか確認する。
注意

利用規約・法令・雇用契約・社内セキュリティポリシーは環境ごとに異なります。本稿はネットワーク設定の一般的な説明であり、特定サービスの利用を推奨・保証するものではありません。企業環境での利用は社内ポリシーを必ず確認してください。

当ブログで扱っている CLI・開発者向け分流記事の役割分担は次のとおりです。

  • 本記事:Claude Code(Anthropic CLI)— anthropic.com / api.anthropic.com / claude.ai を専用グループへ。
  • Cursor IDE:GUI エディタ — エディタ本体・拡張マーケット・更新チャネルに分けた設計。
  • AI サイト(ChatGPT・Grok):ブラウザで開く Web 系 AI — ドメインをまとめた汎用 AI グループ。
  • Git・npm(Windows):バージョン管理・パッケージ管理 CLI — 環境変数と混合ポートの設定。
  • Docker レジストリ:コンテナイメージ取得 — Hub・GHCR 等のレジストリ専用グループ。

複数の CLI ツールを使う開発環境では、それぞれ専用のプロキシグループを用意し、問題が起きたときにグループ単位でノードを切り替えられるようにしておくと、障害の切り分けが格段に楽になります。

まとめ

Claude Code が Anthropic API に繋がらない原因は、大きく分けて「CLI がプロキシを参照していない(環境変数未設定・TUN なし)」と「Clash のルールが当たっていない(ドメイン未記載・順序の問題)」の 2 パターンです。

解決のアプローチは明快です。まず HTTPS_PROXY 環境変数か TUN モードで CLI のトラフィックを Clash に通す。次に anthropic.com サフィックスを専用の ANTHROPIC プロキシグループへ向けるルールを、広いルールより上に置く。必要に応じて PROCESS-NAME でプロセス単位の分流を追加し、Fake-IP フィルタに漏れがないか確認する——この手順で大半のケースは解消します。

CLI ツールの設定は一度決めてしまえば安定して動き続けるのが強みです。開発環境のルール設計をゼロから始めるなら、まず Clash クライアントを手元に整えることが第一歩です。→ 無料で Clash をダウンロードして、Claude Code の分流設定を始める