The model returned no contentの原因と対処——Claudeのエラー文言は「誰が書いたか」で意味が変わる
Claudeを使っていて手が止まり、出た文言をそのまま検索しても何も出てこない——そういう文字列がある。The model returned no content because the response was blocked by content filtering/The response was blocked by the provider's content filter/Streaming response ended before any complete data was received/Could not locate the Claude CLI on PATH/Connection to Claude's response was lost. Claude may still be working の5つがその例だ。共通しているのは「Claudeを使っていて出たのに、Claudeの資料を探しても見つからない(ように見える)」点で、理由は単純——いま画面に出ている文言を書いたのが、思っているプログラムとは限らないからである。本記事は個別の原因を一から解説するのではなく、その文言を書いたのは誰かを特定し、正しい記事へ振り分けるための入口として書いた。まず文言を書きうる層を4つに分ける(モデル提供元のバックエンド/Claude Code本体/起動元のIDE拡張やラッパー/第三者クライアント)。そのうえで実際に照合すると、5つのうち2つはClaude Code公式のエラーリファレンスに項目として存在していた。Streaming response ended… の公式の定義は「ヘッダは返ったがボディにClaude APIのメッセージが無い」であり、途中で切れた話ではない。Could not locate the Claude CLI on PATH は公式が「Wrapper and IDE errors=起動元のプログラムが印字するもの」として独立の章に置いている。一方でcontent filter系の2つは第三者側の語彙で、しかもOpenCodeのIssue #35736は、Vertexの404・ソケット断・本物の拒否という3つの別々の失敗がすべて同一の「blocked by content filter」として表示されると報告している。文言が正しいのは3つのうち1つだけだ。GitHubの公式ドキュメントもClaude利用時に入出力がGitHub Copilotのコンテンツフィルタを通ると明記しており、Claudeを使っていても止めたのがAnthropicのフィルタとは限らない。残る1つは公式にもRemote Controlのドキュメントにも文字列が無く、出どころを特定できなかったので名前を挙げず、自分で突き止める4手を置いた。確定・未確定はラベルで分けてある。