手元で確認できたのは、同じ HTTP 401 でも中身が違う 2 つの系統です。ひとつは GitHub のリリース URL を取りにいく途中で HEAD が拒否されるケース、もうひとつは headersHelper で取った bearer が切れたあとに再取得へ戻らず、OAuth の動きに入ってしまうケースです。どちらも issue 報告としては別件ですが、見えている症状はかなり近いです。
まず、あなたのケースがどちら寄りかで分けると見やすくなります。GitHub-hosted の release archive を fetch していて、http_head request の時点で 401 Unauthorized になるなら #70588 の線が濃いです。MCP サーバーで headersHelper を使っていて、トークンが期限切れになったタイミングで 401 が出るなら #82070 の症状に近いです。
#70588 では、Claude Code cloud/web session で network egress を "All domains" にしていても、GitHub release URL の前段にある HEAD が 401 になっています。issue 本文にはこうあります。
Error performing http_head request: HTTP Client Error (401 Unauthorized)
when querying URI: https://github.com/.../releases/download/...
同じ報告の中で、GitHub release URL は release-assets.githubusercontent.com の署名付き URL に 302 で飛び、その署名は GET 向けで HEAD では通らない、と説明されています。つまり、許可ドメインの広さではなく、HEAD を先に投げる実装と GitHub 側の応答の相性が問題になっているようです。少なくとも issue 報告では、同じ URL の GET は通るが HEAD は通らない、とされています。
一方の #82070 は、MCP server 側で headersHelper を設定しているのに、401 Unauthorized を受けたときに helper を再実行せず、OAuth の dynamic client registration 側へ流れてしまう、という報告です。ここで重要なのは、報告者の環境では oauth ブロックはなく、headersHelper だけで短命の bearer を供給していることです。期待されていた挙動は、v2.1.193 以降の docs に書かれている「401 Unauthorized or 403 Forbidden を返したら helper を再実行して fresh headers で retry する」というものですが、実際にはそうなっていない、とされています。
手元で実際に確認できた環境情報は次の通りです。
[env_summary]
OS : Darwin 25.3.0 (arm64)
Python : 3.14.2
検証日時 : 2026-08-11T18:15:02+09:00
Claude Code のバージョンはこれでした。
$ claude --version
2.1.207 (Claude Code)
claude doctor では、インストール状態は概ね正常と出ています。少なくとも今回の 401 を見ている範囲では、doctor の結果から直ちに異常とは言えません。
$ claude doctor
Claude Code doctor
Running: native (2.1.207)
Commit: bc512d563325
Platform: darwin-arm64
Path: ~/.local/share/claude/versions/2.1.207
Config install method: native
Search: OK (bundled)
Auto-updates: enabled
Auto-update channel: latest
Last update attempt: none recorded
Multiple installations found
- npm-global at /usr/local/bin/claude
- native at ~/.local/bin/claude
Remote Control
Control this session from claude.ai/code or the Claude mobile app
1 warning found
- Leftover npm global installation at /usr/local/bin/claude
Fix: Run: npm -g uninstall @anthropic-ai/claude-code
For a full setup checkup that can also fix issues, run /doctor in a Claude Code session.
ここから言えるのは、少なくとも自分の環境では 2.1.207 の native インストールで Claude Code は動いており、doctor が直接 401 の原因を示しているわけではない、ということです。Multiple installations found と出ていますが、issue の症状そのものとの因果は手元では確認できていません。
見分け方はかなり単純です。GitHub の release を取る処理で、http_head の段階で 401 になるなら #70588 を疑います。MCP で headersHelper を使い、アクセストークンの寿命が切れたあたりで 401 が出るなら #82070 の可能性が高いです。後者では、headersHelper しか設定していないのに OAuth/DCR 側へ入ってしまう、というのが報告の肝です。
現時点では、どちらの issue も「こうすれば直る」と断言できる段階ではありません。少なくともこの記事の一次情報として言えるのは、HTTP 401 という同じ見え方でも、発生地点が HEAD なのか、headersHelper の再実行に失敗しているのかで切り分ける必要がある、という点です。claude doctor に異常が出ていなくても、この症状は起こりえます。
#70588 と #82070 のどちらに近いかを先に見て、401 が返る直前のリクエスト種別を確認するのが近道です。
claude --version : 2.1.207 (Claude Code)
OS : Darwin 25.3.0 (arm64)
Python : 3.14.2
検証日時 : 2026-08-11T18:15:02+09:00