Claude Codeで「Unable to connect to API (ECONNRESET)」が出た時の対処法:MTU設定を変更しよう
こんにちは、ポンコツエンジニアのソルテです。
今日はClaude code を利用して開発をしていた際に以下のようなエラーが出てしまいweb版の Claude 以外利用することができなくなってしまいました。
(プロンプトを送ってもエラーが出てコーディングをしてくれませんでした….TT)
Unable to connect to API (ECONNRESET)

今回は上記のようなエラーが出た際の解決方法を紹介いたします。
結論
皆さんが知りたいのは解決方法だと思いますので、最初に解決方法から紹介します。
解決方法は「MTUのサイズを変更(MTUは1400に)しろ!」です。
変更方法は以下のコマンドを打ってください。
#現在のMTUサイズを確認する
$ ifconfig en0 | grep mtu
#出力例
en0: flags=fugahoge<hogehoge> mtu 1500
#MTUのサイズを1400に変更する
$ sudo ifconfig en0 mtu 1400
#Macのログインパスワードを求められます
Password:🗝️
はい、これで解決しているはずです。
今すぐにClaudeに戻って開発を進めましょう。
これで解決していなかったら、あなたのエラーはMTUが問題でなかったということです。
原因の特定が進んだということで許してください。
現象の整理
今回の起きていた現象についてまとめます。
- Web版 Claude code:OK
- アプリ版 Claude code:NG
- CLI 版 Claude code:NG
- テザリング:OK
- 自宅Wi-Fi(5GHz):NG
- 自宅Wi-Fi(2.4GHz):NG
上記のようにネットワークの種類によって Claude との通信ができているかどうかが変わっていました。
ECONNRESETの接続エラーの原因
通信経路の許容サイズ(MTU)に対して、
アプリが送ろうとしたデータがデカすぎて、ルーターなどで強制遮断されていた
正直MTUのエラーなんて初めてだったのでどうしてこういったMTUのエラーがClaudeで起きたのかまではわかりません。
調査方法
今同じClaudeの(ECONNRESET)接続エラー現象が起きている人は以下の調査をしてみてほしいです。
以下の調査をすることでMTUが原因なのかわかります。
# 1500バイトの疎通確認(pingテスト)
$ ping -D -s 1472 -c 3 api.anthropic.com
# 1500バイトの疎通ができなかった場合の出力
PING api.anthropic.com (000.00.000): 1472 data bytes
Request timeout for icmp_seq 0
上記のように1500バイトでの疎通ができなかった場合「送ったパケットに対して返事がない」状態です。
この状態になる可能性としては以下の2つがあります。
- サイズが大きすぎてブロックされた
- そもそもPing(ICMP)が禁止(無視される設定に)されている
次にバイト数を下げて通信ができるかを確認します。
# 64バイトの疎通確認
$ ping -c 3 api.anthropic.com
# 64バイトの疎通ができた場合の出力
PING api.anthropic.com (xxx.xx.xxx.xx): 56 data bytes
64 bytes from xxx.xx.xxx.xx: icmp_seq=xx ttl=xx time=x.xxx ms
もしこれで通信ができたのであればMTUが問題である可能性が高いです。
まとめ
今回のClaudeの(ECONNRESET)接続エラーの解決方法の結論としてMTUを1400に下げれば解決するという話をしました。
原因として、送るパケットの大きさが大きすぎることが原因だからMTUのサイズを上げた方がいいんじゃないかと思ったのですが、それはできないらしいです。
理由としてはインターネットの通信の標準が1500バイトなため、もしパソコンの方でMTUを変更したとしても通信をしていると勝手に1500に戻されてしまうみたいです。
今回このようなエラーが起こったことによって今まであまり考えなかったパケットサイズのことや、実際にMTUの設定を変更するなどをしてよりネットワークに少し詳しくなった今日この頃でした。
これからはこのような私のエンジニアの日常についても記事を執筆していこうと思いますので、ディズニーが好きでエンジニアの方はぜひブックマークして行ったください。

