8月に入った頃、業務で使っているWindows機のClaude Codeでリクエストエラーが多発した。3日続いた。「ダウングレードしたら直った」という記事を見つけて、コマンドプロンプトからCLIを旧版に入れ直したら、たしかに止まった。デスクトップアプリの方は何も触っていない。exeは元のバージョンのままだ。
その後で公式ドキュメントを読み直して、自分の対処が半分まぐれだったと知った。Claude Codeは入口(インストール経路)が複数あって全部バージョンが別だし、ネイティブ版は放っておくと自動更新で元に戻る。この記事は、次に同じ状況になった人(と自分)のために、切り分けの順番と、面ごとの正しい下げ方・固定の仕方を置いておく。
[toc]
先に切り分ける。ダウングレードは最後の手
エラーが多発したとき、手元のバージョンが原因とは限らない。あとから何も触っていないMac側の会話ログをgrepしたら、7月末に3日間で計252件(71件→124件→57件)、8月頭にも別の山があった。エラーの山は珍しいものではなく、そして山はどれも、こちらが何もしないまま数日で引いていた。だから手元をいじる前に、まず上流を疑う。
順番はこうしている。
- status.claude.com を見る。サーバ側の障害なら何をしても直らない
- エラー文言を読む。
529やoverloadedはサーバ側の混雑。ECONNRESETやUnable to connectはネットワーク経路(プロキシ・VPN含む)。401は認証で、これは再ログインの話 -
claude doctorを打つ。インストールの健全性と設定ファイルの異常を、セッションを立てずに診断してくれる - ここまでで説明がつかず、特定バージョンから始まった感触があるなら、ダウングレードを試す
入口は1つじゃない。バージョンも別
ハマりの本体はこれだった。Claude Codeのインストール経路は複数あって、それぞれ独立にバージョンを持つ。
| 入口 | 自動更新 |
|---|---|
| ネイティブインストーラ(推奨の入れ方) | あり。バックグラウンドで勝手に上がる |
npm (@anthropic-ai/claude-code) |
起動時に更新を試みる |
| Homebrew / WinGet / apt系 | なし(手動) |
| VS Code拡張・JetBrainsプラグイン | エディタ側の拡張管理 |
| デスクトップアプリ | アプリ側で管理 |
つまり「ダウングレードした」と言うとき、どの面を下げたのかが問題になる。CLIを下げてもVS Code拡張は別だし、逆もそうだ。自分の実例がまさにこれで、下げたのはコマンドプロンプトから入れ直したCLIだけ。デスクトップアプリのexeは元のバージョンのまま残っていた。それでもエラーは止まったので、原因がたまたまCLI側にあった(かサーバ側が復旧した)ことになる。面を間違えていたら何も変わらなかったはずだ。
面ごとの下げ方
バージョン指定は公式のインストーラがそのまま受け付ける。2.1.89 の部分は戻したいバージョンに読み替え。
& ([scriptblock]::Create((irm https://claude.ai/install.ps1))) 2.1.89
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd 2.1.89 && del install.cmd
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89
npm install -g @anthropic-ai/claude-code@2.1.89
下げたら claude --version で指定した番号が出ることを確認する。出ないなら別の入口のバイナリが先に掴まれている(後述)。
下げただけだと、自動更新が元に戻す
ここが一番の落とし穴だと思う。ネイティブ版は起動時とバックグラウンドで更新を確認して、勝手に最新へ上げてくる。ダウングレードで直ったつもりが、翌日また元のバージョンで起動していた、が普通に起きる。
戻したバージョンに留まりたいなら、settings.json で自動更新を止める。
{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}
恒久対応としては、毎回手で止めるより「最新を追わない」設定の方が楽だった。stable チャネルは1週間ほど遅れて配信され、大きなリグレッションを踏んだリリースはスキップされる。
{
"autoUpdatesChannel": "stable"
}
minimumVersion を足すと、これより下には更新が下げない床も作れる。
複数の入口が同居していると、もう1段ややこしい
npmで入れた後にネイティブインストーラも試した、みたいな環境だと、PATH上でどちらの claude が先に掴まれるかで挙動が変わる。「下げたのに claude --version が変わらない」ときはだいたいこれで、claude doctor が競合するインストールを指摘してくれる。消す方を決めて片方に寄せる。
白状しておくこと
- Windows機で当時何のバージョンからいくつへ下げたか、記録を取っていなかった。なのでこの記事には「このバージョンが悪い」という情報がない
- 「ダウングレードして直った」と書いたが、Mac側で観測したエラーの山はどれも、何もしないまま数日で収まっていた。自分の解決がダウングレードの効果だったのか、上流の嵐が過ぎただけなのか、正直区別がついていない。切り分けの1番(statusを見る)を最初にやらなかったツケで、原因を特定する機会をもう失っている
- デスクトップアプリを旧版に戻していないのに直った、という事実も「CLIのバージョンが犯人」説と「上流説」のどちらとも矛盾しない。決め手にならないまま残っている
- エラー件数252件はMac側の会話ログをgrepした数字で、Windows機の件数は数えていない
次に同じことが起きたときの自分用メモ
- status.claude.com を開く。障害中なら待つ
- エラー文言をそのまま控える(あとで因果を判定する唯一の材料になる)
-
claude doctorとclaude --versionを全部の面(CLI・エディタ拡張・デスクトップ)で控える - 下げるなら1面ずつ。下げたら自動更新を止めて、直ったかを1日観察する
- 直っても、どの手が効いたのか分からない状態で手を重ねない
3日ハマった実感として、一番効くのは4と5だった。焦って複数の手を同時に打つと、直ったときに理由が分からない。実際、自分はいまだに分かっていない。