# Claude Code の Unable to connect to API を直す：ECONNREFUSED、ECONNRESET、proxy の切り分け

> Claude Code を起動した shell から API host を確認し、network、proxy、CA、実行環境、gateway のうち失敗した経路だけを修正します。

- URL: https://blog.laozhang.ai/ja/posts/claude-api-error-connection-error
- Published: 2026-08-04
- Updated: 2026-08-04
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ja/about)
- Topic: Claude Code
- Tags: Claude Code, Unable to connect to API, ECONNRESET, Proxy, トラブルシューティング

---
`Unable to connect to API` は、Claude Code が現在の API route との TCP 接続を完了できなかったことを示します。API が `401`、`429`、`500`、`529` を返した状態とは別です。まず現在の [Claude Status](https://status.claude.com/) を確認し、Claude Code を起動したのと同じ shell で次を実行してください。

```bash
curl -I https://api.anthropic.com
```

curl も接続できなければ、その環境の DNS、firewall、VPN、proxy、TLS を調べます。curl は HTTP response を受け取れるのに Claude Code だけ失敗する場合は、`/status`、proxy/CA 変数、WSL や macOS、Docker、`ANTHROPIC_BASE_URL` が選ぶ実際の host を確認します。

| 表示される suffix | 絞り込める範囲 | 最初の確認 |
| --- | --- | --- |
| `ECONNREFUSED` | 接続先または local proxy が接続を拒否 | 実際の endpoint と proxy address |
| `ECONNRESET` | 確立済みの接続が VPN、proxy、network device、remote side により切断 | 別の信頼できる network で 1 回比較 |
| `ETIMEDOUT` | 制限時間内に接続経路が完成しなかった | DNS、firewall、proxy、route latency |
| `fetch failed` | API response を得る前の network layer failure | 次の error line と同一 shell test |
| certificate / self-signed certificate | TLS inspection または corporate CA の不足 | 承認済み CA bundle の設定 |
| HTTP status と JSON body | API または provider まで到達済み | 接続分岐を離れ、status ごとに処理 |

再インストール、Key の変更、VPN の切り替え、DNS の変更、model の変更を同時に行わないでください。偶然直っても、再発時に原因を説明できません。

## 本当に接続エラーかを確定する

![curl と Claude Code の結果から原因を分ける matrix](https://blog.laozhang.ai/posts/ja/claude-api-error-connection-error/img/route-matrix.webp)

Anthropic の [Claude Code error reference](https://code.claude.com/docs/ja/errors) では、`Unable to connect to API`、`ECONNREFUSED`、`ECONNRESET`、`ETIMEDOUT`、`fetch failed`、network/proxy を含む timeout が network error に分類されています。重要なのは HTTP response の有無です。

- status code、response body、request ID がない：接続経路を調べる。
- `401` または invalid key が返る：network は API layer に到達しているため、authentication を調べる。
- `429`、`500`、`529` が返る：API または設定中の provider が応答しているため、個別の status を処理する。
- `Connection closed mid-response` が出る：streaming は開始済みです。完了した block を残し、最後の完全な位置から続けます。

Claude Code は一時的な connection failure や server error を自動で再試行します。最終的なエラーが terminal に出た時点で、短時間の自動回復では解消しなかった可能性が高い状態です。同じ条件で Enter を繰り返しても、診断情報は増えません。

## Claude Code を起動した shell で baseline を取る

browser、WSL、SSH、VS Code Remote、container は、それぞれ異なる DNS、proxy、certificate store を使う場合があります。browser で claude.ai が開くことは、`claude` process が `api.anthropic.com` に到達できる証明ではありません。

host への接続と route 関連の変数だけを確認します。

```bash
curl -I https://api.anthropic.com
env | grep -Ei '^(ANTHROPIC_BASE_URL|ANTHROPIC_API_KEY|HTTP_PROXY|HTTPS_PROXY|NO_PROXY|NODE_EXTRA_CA_CERTS)='
```

API key や proxy password が出る場合は、結果を issue やチャットへ貼らないでください。必要なのは、変数が存在するか、どの host、proxy、certificate file を選んでいるかだけです。

| curl | Claude Code | 次に見る場所 |
| --- | --- | --- |
| host を resolve できない | 失敗 | DNS または WSL resolver |
| port 443 が timeout | 失敗 | Firewall、VPN、proxy、outbound route |
| certificate validation error | 失敗 | TLS inspection と CA trust |
| 任意の HTTP response を受け取る | 接続エラー | Claude Code の process environment、scope、gateway |
| response を受け取る | 401/429/500/529 | 純粋な connection error ではない |

`curl -I` の成功は basic reachability を確認するだけです。account、full request、model、gateway compatibility まで確認したことにはなりません。

## curl も失敗する場合は network path を直す

status page が green でも、すべての地域、ISP、企業 network が正常とは限りません。そのうえで、1 つの条件だけを変えます。

1. mobile hotspot や家庭 network など、別の信頼できる回線で同じ curl を 1 回実行する。
2. VPN が active なら、切断後に 1 回だけ比較する。組織で VPN が必須なら、policy を迂回せず network team に allowlist を確認してもらう。
3. 実際に使用する API host と公式の [network access requirements](https://code.claude.com/docs/ja/network-config#network-access-requirements) が firewall で許可されているか確認する。
4. Linux/WSL では `/etc/resolv.conf` の nameserver が到達可能か確認する。Windows 側の browser が正常でも WSL resolver は壊れます。
5. DNS は成功するのに 443 が timeout するなら、credential ではなく firewall、router、proxy、outbound route を調べる。

`ECONNREFUSED` は、実際の host または local proxy port が接続を拒否したときに起きやすい症状です。`ANTHROPIC_BASE_URL` が別の host を選んでいないか確認します。`ECONNRESET` は一度つながった connection が切られた状態なので、VPN、TLS inspection、network quality、long-lived connection policy が有力です。

## Corporate proxy と custom CA を正しく設定する

![Corporate proxy と custom CA を通る Claude Code の trust path](https://blog.laozhang.ai/posts/ja/claude-api-error-connection-error/img/proxy-ca-path.webp)

Claude Code は起動時に標準の proxy 変数を読み取ります。

```bash
export HTTPS_PROXY=https://proxy.example.com:8080
export NO_PROXY=".example.internal"
claude
```

scheme、host、port は組織から指定された値を使います。Claude Code は SOCKS proxy をサポートしていません。proxy が TLS inspection を行う場合は、承認された CA bundle を設定します。

```bash
export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem
claude
```

`NODE_TLS_REJECT_UNAUTHORIZED=0` は certificate verification を無効にするため使わないでください。proxy credential を repository の script に保存するのも避けます。settings scope と CA store の違いは公式の [enterprise network configuration](https://code.claude.com/docs/ja/network-config) で確認できます。

Claude Code 起動後に export した変数は、実行中の process には反映されません。変更後は再起動します。Desktop-managed session、cloud session、background supervisor では shell variable が有効 scope でない場合があるため、`/status` と debug log で確認します。

## curl は成功し Claude Code だけ失敗する場合

Claude Code 内で `/status` を実行し、active credential、provider、proxy、endpoint が意図どおりか確認します。

- **Unexpected API key**：`ANTHROPIC_API_KEY` があると、subscription login ではなく API-key route を選ぶ場合があります。secret の値は表示しないでください。
- **Unexpected gateway**：`ANTHROPIC_BASE_URL` は destination を変更します。official API と third-party relay を同じ障害として扱わないでください。
- **WSL / remote IDE**：host terminal、WSL、実際の VS Code Remote shell で同じ curl を実行し、DNS、proxy、CA の差を確認します。
- **macOS の古い VPN route**：切断・削除済みの VPN が `utun` interface や network extension を残すことがあります。System Settings で確認し、不明な route を無作為に削除しないでください。
- **Docker Desktop**：container runtime が outbound traffic に影響する場合があります。作業に安全なら、停止した状態で 1 回だけ比較します。
- **Background process**：supervisor が別 shell の古い環境を引き継いでいる場合は、supported user settings または managed settings に network variable を置きます。

route の優先順位が不明なら、先に [Claude Code API configuration](https://blog.laozhang.ai/ja/posts/claude-code-api-configuration) で authentication と provider を整理します。

## 小さな request で復旧を確認する

1 つ変更したら Claude Code を再起動し、機密情報を含まない短い request を送ります。次の 3 点がそろえば復旧です。

1. 同じ shell が official host または承認済み gateway から HTTP response を受け取る。
2. `/status` が期待した authentication と route を示す。
3. 新しい request が同じ connection error なしで完了する。

HTTP status に変わった場合、transport route は前進しています。[Claude Code API Error 500](https://blog.laozhang.ai/ja/posts/claude-code-500-529-rate-limit)、[Claude API 529 overloaded](https://blog.laozhang.ai/ja/posts/claude-api-error-529-overloaded)、[Claude API rate limit](https://blog.laozhang.ai/ja/posts/claude-rate-exceeded-error) の該当ページへ移動してください。server response があるのに network 設定を切り替え続ける必要はありません。

## Support に渡す情報を最小化する

日時と timezone、OS、Claude Code version、正確な error suffix、route type、`curl -I` の結果、status page の観察、network または proxy を 1 つ変えた結果を記録します。`ANTHROPIC_BASE_URL` の host は、private address でない場合だけ共有します。

API key、OAuth token、proxy password、private prompt、customer data、完全な environment dump は送らないでください。official route は Help Center または利用可能な `/feedback`、corporate network や gateway はその owner へ、同じ redacted packet を送ります。

判断は 3 つです。同じ shell の curl も失敗するなら host までの経路、curl は成功して Claude Code だけ失敗するなら process environment、HTTP error が返るなら connection ではなく response を直します。

## 参考資料

本文で参照している外部ページを、登場順に並べています。最終更新日：2026-08-04。

- [Claude Status](https://status.claude.com/) (status.claude.com)
- [Claude Code error reference](https://code.claude.com/docs/ja/errors) (code.claude.com)
- [network access requirements](https://code.claude.com/docs/ja/network-config) (code.claude.com)
