Claude Code で Unable to connect to API (ECONNRESET) や API Error: The socket connection was closed unexpectedly が出たときの切り分けです。ブラウザや curl は普通に通るのに Claude Code だけ落ちる、という状況を想定しています。
先に断っておくと、この種のエラーには公式が一本化した原因がありません。公式の対処は「接続を確認する」「再試行される」までで、MTU・IPv6・VPN といった具体策は、すべて GitHub issue でのユーザ報告ベースです。この記事では、公式の内容、手元で確かめたこと、報告されている対処、推測を分けて書きます。
確認環境は Claude Code 2.1.322、macOS 26.6.2、2026-11-11 です。
症状
版や状況によって、次のような文言で出ます。
API Error: Connection dropped (ECONNRESET)
Unable to connect to API (ECONNRESET)
API Error: The socket connection was closed unexpectedly. For more information, pass `verbose: true` in the second argument to fetch()
Request timed out
2 つ目は旧文言です。公式の Error reference によると、v2.1.227 より前は、接続系のエラーが Unable to connect to API にコードを付けた形((ECONNREFUSED) など)で出ていました。古い文言で検索してきた場合も、同じ種類の問題です。
3 つ目は、issue で多く見かける文言です。実行ファイル内の文字列にも The socket connection was closed unexpectedly があるのは確認できましたが、公式の Error reference には載っていません。
issue のタイトルでは、Connection error を含むものが 139 件、Unable to connect to API を含むものが 37 件ありました(2026-11 時点の調べ)。それなりに多くの人が当たっている症状です。
結論
-
ECONNRESETは「通信の相手、または途中の機器が、TCP 接続を切った」という意味です。Claude Code 自体の不具合とは限りません - まず
curl -I https://api.anthropic.comで同じシェルから到達できるか確認します。通らなければ回線・プロキシ・VPN の問題です -
curlは通るのに Claude Code だけ失敗する場合、issue では MTU を 1492 か 1460 に下げる、別の回線(テザリング、VPN)で試す、IPv6 を切るが効いたという報告があります。いずれも公式の対処ではありません - 一時的な切断は Claude Code が自動で再試行します(既定 10 回)。たまに出る程度なら、待つだけで済むことが多いです
原因として考えられるもの
公式の Error reference は、Unable to connect to API 系の一般的な原因として、インターネットに出られない、VPN が api.anthropic.com を遮断している、必要な社内プロキシが未設定、を挙げています。
それとは別に、issue では次のような分析が出ています。どれも報告者の推測や調査であり、Anthropic が原因と認めたものではありません。
- PPPoE などの回線で MTU が 1500 のままだと、大きなパケットが分割されて落ちる(#13657 の報告)
- Claude Code の実行環境(Bun)が TCP の keepalive を設定しておらず、ツール実行中にアイドルになった接続が途中で切られる(#60133 の報告)
- IPv6 経由の通信だけが落ちる
- TLS 1.3 のハンドシェイクで、耐量子の鍵共有(X25519MLKEM768)を含む大きな ClientHello が、特定の ISP 経路でリセットされる(#94225 の報告。この issue は 2026-11 時点で open)
代表的な issue はこちらです。
- https://github.com/anthropics/claude-code/issues/13657 (👍 20、closed)
- https://github.com/anthropics/claude-code/issues/60133 (👍 19、closed)
- https://github.com/anthropics/claude-code/issues/37077 (接続レベルのエラーが再試行されない、という報告。closed)
- https://github.com/anthropics/claude-code/issues/94225 (ISP 経路での TLS ハンドシェイク。open)
手元で確かめたこと
本物の回線障害は再現できません。そこで、挙動だけを確かめました。ANTHROPIC_BASE_URL に手元の偽サーバを指定し、ダミーの ANTHROPIC_API_KEY と、空の CLAUDE_CONFIG_DIR で実行しています。外部には何も送っていません。
- 1 つ目の偽サーバは、接続を受けた直後にリセット(RST)して切ります
- 2 つ目の偽サーバは、接続は受けますが、何も返しません
1 つ目では API Error: Connection dropped (ECONNRESET). Check the gateway set in ANTHROPIC_BASE_URL, then try again. と出ました。末尾の「ゲートウェイを確認」という案内は、ANTHROPIC_BASE_URL を設定していたために付いたもので、設定していない環境では付かないと思われます(推測)。
2 つ目では、API_TIMEOUT_MS=15000 を付けて、1 回の待ちが 15 秒で、再試行を 1 回に絞ったため、合計 35 秒ほどで Request timed out になりました。公式によると API_TIMEOUT_MS の既定は 600000(10 分)で、リクエストごとの応答ヘッダを待つ時間です。
ここで分かるのは、次の 2 点です。
-
Connection dropped (ECONNRESET)は、相手や途中の機器が接続を切ったときの文言である -
Request timed outは、切られたのではなく、返事が来ないときの文言である
どちらも「手元の Mac から API に出られているか」を調べる手がかりになります。一方、MTU や IPv6 の対処が効くかどうかは、私の環境が正常なため試せていません。
直し方
1. まず到達できるか確認する
Claude Code を起動しているのと同じシェルで実行します(公式の手順です)。
curl -I https://api.anthropic.com
Windows PowerShell では curl.exe -I https://api.anthropic.com です。応答ヘッダが返れば、少なくとも TCP と TLS は通っています。私の環境では HTTP 404 が返りました。API のトップに GET や HEAD を送ると 404 になるのは普通で、到達できている証拠になります。
ここで失敗するなら、Claude Code 以前の問題です。VPN、プロキシ、会社のファイアウォールを疑います。社内プロキシなら HTTPS_PROXY を設定してから起動してください。
2. 残骸の設定を確認する(公式)
curl は通るのに Claude Code だけ失敗するとき、公式は次を挙げています。
echo $ANTHROPIC_BASE_URL
何か入っていて、すでに止まったローカルのプロキシやゲートウェイを指していると、curl では見えない形で失敗します。~/.claude/settings.json の env ブロックも確認してください。ゲートウェイ経由で全リクエストが Connection dropped になるなら、公式は ENABLE_TOOL_SEARCH=false を付けて試すよう案内しています。
macOS では、切断したか消した VPN クライアントが、トンネルのインターフェース(utun)やルーティングを残していることがあります。ifconfig で古い utun が残っていないか確認する、というのも公式の案内です。
3. 別の回線で試す(issue での報告)
スマホのテザリングで同じことをして通るなら、自宅の回線やルータが原因です。issue では、ルータの再起動や交換で直った例、会社の VPN 経由では動くのに VPN なしでは動かなかった例が報告されています。
4. MTU を下げる(issue での報告)
#13657 では、MTU を 1500 から下げて直ったという報告が複数あります。PPPoE の回線では、ヘッダ分でパケットが 1500 を超えて分割され、途中で落ちる、という説明です。macOS の例です。
networksetup -getMTU Wi-Fi
sudo networksetup -setMTU Wi-Fi 1492
私の環境では、1 行目は Active MTU: 1500 (Current Setting: 1500) でした。Wi-Fi の部分は、自分のネットワークサービス名に読み替えます。1492 で直らなければ、報告にある 1460 も試せます。元に戻すときは 1500 を指定します。
注意点が 2 つあります。これは回線全体の設定を変えるので、ほかの通信にも影響します。また、私は直接試していません。報告が複数あるのは事実ですが、全員に効くわけではなく、「1500 のままだと分割されて落ちる」というのも報告者の説明です。
5. IPv6 を切る(issue での報告)
IPv6 経由の通信だけが落ちている場合に、IPv6 を無効にして直ったという報告があります。macOS ならシステム設定のネットワークから、該当の接続の詳細で IPv6 を「手動」や「リンクローカルのみ」にします。これも、効く人と効かない人がいます。
6. スリープ復帰後に出るとき
スリープから復帰した直後に出るなら、Claude Code を再起動してください。古い接続が残っているため、という報告があります(推測を含みます)。応答の途中でスリープしたときは Connection lost while your computer was asleep という別の文言が出るので、続きを頼み直します。
Request timed out が出るとき
公式は「接続期限内に応答がなかった」と説明しています。対処は次のとおりです。
- 再試行する
- 遅いネットワークや、応答をためこむプロキシ越しなら、
API_TIMEOUT_MSを増やす
export API_TIMEOUT_MS=900000
claude
ミリ秒で指定します。0 にしてもタイムアウトが全部なくなるわけではありません。公式によると、最初のバイトを待つ期限は 0 でも残ります。また、v2.1.305 より前では 0 にすると毎回失敗する場合がある、とも書かれています。
接続段階で期限が来ると、Request timed out. Check your internet connection and proxy settings という文言になります。こちらはネットワーク、VPN、HTTPS_PROXY の確認が先です。
直らないとき
- 再試行の回数は環境変数で変えられます。
CLAUDE_CODE_MAX_RETRIESの既定は 10 です。無人で動かす CI などでは、公式はCLAUDE_CODE_RETRY_WATCHDOG=1を案内しています - 古い版では、接続レベルのエラーが再試行されずに即失敗する、という報告が #37077 にあります。
claude updateで最新にしてから試してください - ISP の経路が原因と疑うなら、VPN を使うと通るかを確認します。#94225 の報告者は、VPN を通せば 12 回中 12 回成功した、と書いています。ただし 1 人の調査で、まだ open です
- 続くなら
/feedbackで報告してください。どの回線で、どのバージョンで、curlは通るか、を添えると調べやすくなります
同じ原因で出る別のメッセージ
-
Can't reach the API server — check your internet or DNS (ENOTFOUND)(名前解決の失敗) No internet route — check your connection or VPN (EHOSTUNREACH)-
Couldn't connect through your proxy (ERR_PROXY_TUNNEL)(プロキシが拒否) -
Socket is closed(Windows の社内プロキシが接続を切る場合。公式は v2.1.214 以降へ更新するよう案内しています) - 証明書のエラー(
Self-signed certificate detectedなど)は、別の記事にまとめています
Claude Code で出るほかの英文エラーと、それぞれの対処は、早見表にまとめています。
参考
- 公式 Error reference(Unable to connect to API): https://code.claude.com/docs/en/errors#unable-to-connect-to-api
- 公式 Error reference(Request timed out): https://code.claude.com/docs/en/errors#request-timed-out
- 公式 Error reference(Socket is closed): https://code.claude.com/docs/en/errors#socket-is-closed
- 公式 Network configuration: https://code.claude.com/docs/en/network-config
- issue #13657: https://github.com/anthropics/claude-code/issues/13657
- issue #60133: https://github.com/anthropics/claude-code/issues/60133
- issue #37077: https://github.com/anthropics/claude-code/issues/37077
- issue #94225: https://github.com/anthropics/claude-code/issues/94225
