0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code で "Unable to connect to API (ECONNRESET)" / "The socket connection was closed unexpectedly" が出たときの切り分け(MTU・IPv6・VPN、Request timed out も)

0
Posted at

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 はこちらです。

手元で確かめたこと

本物の回線障害は再現できません。そこで、挙動だけを確かめました。ANTHROPIC_BASE_URL に手元の偽サーバを指定し、ダミーの ANTHROPIC_API_KEY と、空の CLAUDE_CONFIG_DIR で実行しています。外部には何も送っていません。

  • 1 つ目の偽サーバは、接続を受けた直後にリセット(RST)して切ります
  • 2 つ目の偽サーバは、接続は受けますが、何も返しません

ECONNRESET と Request timed out を手元で再現した画面

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 で出るほかの英文エラーと、それぞれの対処は、早見表にまとめています。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?