Когда работа с 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

Общее у них одно: «появилось при работе с Claude, но в официальной документации Claude этого не найти (во всяком случае, так кажется)». Причина понятна. Строку, которая сейчас на экране, написала не обязательно та программа, о которой вы думаете.

Путь к Claude давно не один. Команда claude в терминале, расширение для IDE, другой агент вроде OpenCode, работа через GitHub Copilot — и каждый из них сам решает, как сказать о сбое. Событие одно и то же, а слова свои у каждого слоя.

Эта статья не разбирает каждую причину с нуля. Это вход: определить, кто написал эту строку, и направить читателя к нужному разбору. Подробности остаются за отдельными статьями, здесь речь только про установление источника. Что удалось подтвердить по первоисточникам и что нет — разделено.

Коротко
① Первый шаг
Сверить с официальным каталогом

Claude Code официально публикует перечень строк, которые выводит сам. По наличию точного совпадения круг слоёв сужается. Это делают до того, как гадать о причине.

② Ловушка
Названная причина промахивается

Строки сторонних инструментов называют причину, но в публичных issue зафиксированы случаи, где названное расходится с действительностью. Поверив тексту, вы будете чинить не то место.

③ По виду не отличить
2 из 5 оказались официальными

Сверка пяти строк из вступления показала, что две есть в официальном справочнике ошибок Claude Code. По интонации строки слой не угадать.

1. Первое действие — искать точное совпадение в официальном каталоге

Есть шаг, который делают раньше любых догадок о причине. Проверить, принадлежит ли эта строка словарю самого Claude Code.

У Claude Code есть официальный справочник ошибок, и в нём исчерпывающе перечислены строки, которые Claude Code выводит на экран. Аутентификация, лимиты запросов, переполнение контекста, сеть, стриминг, MCP, плагины — всё приведено ровно в том виде, в каком показывается. Поэтому вопрос «есть ли там увиденная строка» решается не догадкой, а сверкой.

Исход A
Точное совпадение есть

Это либо сам Claude Code, либо строка, которую официальная документация относит к запускающей стороне. Официальное объяснение и порядок действий подходят как есть. Из пяти строк вступления такими оказались две.

Исход B
Похоже, но не совпадает

Скорее всего, другая программа пересказала строку своими словами. При пересказе туда могли дописать название причины, поэтому на слово его не берут.

Исход C
Ничего похожего нет

Эта строка — словарь того инструмента, которым вы пользуетесь. Искать нужно не в материалах Anthropic, а в репозитории и issue этого инструмента.

Слово «Claude» в тексте не делает строку формулировкой Anthropic. Слова Claude и model встречаются потому, что инструмент вызывает Claude, а не потому, что текст написан в Anthropic. Бывает и обратное: строку печатает программа Anthropic, а в основной части официального каталога её нет (глава 5).

2. Текст ошибки пишет один из четырёх слоёв

Если разложить путь обращения к Claude, мест, где при сбое рождается строка, ровно четыре. От того, какой слой её написал, зависит и чтение, и то, куда бьёт исправление.

Слой ①
Бэкенд, который отдаёт модель

Anthropic API, а также Amazon Bedrock, Google Vertex AI, шлюз GitHub Copilot и другие. Часто на экран попадают прямо HTTP-статус и поле error.message из JSON.

Пример: Output blocked by content filtering policy

Слой ②
Сам Claude Code

Пометка, которую CLI добавляет по собственному решению. Признак слоя — дословное присутствие в официальном справочнике ошибок, где описаны и смысл, и порядок восстановления.

Пример: Streaming response ended before any complete data was received

Слой ③
Запускающая программа (расширение IDE, обёртка)

Выводит та сторона, которая пыталась запустить Claude Code и не смогла. Официальный справочник выносит это в отдельную главу «Wrapper and IDE errors» и объясняет как то, что печатает не сам Claude Code, а запускающая программа.

Пример: Could not locate the Claude CLI on PATH

Слой ④
Сторонний клиент

Другой агент, вызывающий Claude как модель. Строки написаны самим проектом, и в официальном каталоге их нет. Часто они называют причину, но название бывает мимо.

Пример: The response was blocked by the provider's content filter

Из этих четырёх чаще всего неверно читают слой ④. Слои с первого по третий склонны сообщать «что произошло», тогда как строки слоя ④ нередко договаривают и «почему это произошло». Вот только такое утверждение — всего лишь догадка самого инструмента. Следующая глава разбирает реальный пример.

3. Когда написано «content filter» — чей это фильтр

Две строки из пяти во вступлении говорят одно и то же: заблокировано контентным фильтром. Здесь ошибиться особенно легко. Работа с Claude не означает, что остановил вас фильтр Anthropic.

3-1. The model returned no content because the response was blocked by content filtering

🟡 Источник (только наблюдение): единственный первоисточник, где эту строку удалось увидеть дословно, — issue #3348 в github/copilot-cli, репозитории самого GitHub. Заголовок звучит как «Repeated 'The model returned no content because the response was blocked by content filtering' on legitimate technical reasoning turns», строка входит в него как есть. Однако текст обращения автор отозвал, технического ответа сопровождающих там нет, а статус — closed as not planned. В публичной документации GitHub самой этой строки не видно. Поэтому статья не утверждает ничего сверх того, что о такой строке сообщили в GitHub Copilot CLI.

С другой стороны, ✅ одно можно утверждать твёрдо. Официальный документ GitHub «Hosting of models for GitHub Copilot» прямо пишет про случай с Claude следующее.

«При использовании Claude входные промпты и выходные дополнения по-прежнему проходят контентные фильтры GitHub Copilot — фильтр на совпадение с публичным кодом (там, где он применим) и фильтр на вредное и оскорбительное содержимое»

То есть когда Claude используется через Copilot, остановить вывод может и фильтр на стороне GitHub. Та же страница добавляет, что доступные в Copilot модели Claude размещены в «Amazon Web Services, Anthropic PBC, and Google Cloud Platform» — значит, конфигурация не обязательно обращается напрямую к api.anthropic.com.

Поэтому и действия разные. Строка Output blocked by content filtering policy, которая появляется напрямую в Anthropic API и Claude Code, вызвана прежде всего выходным фильтром против воспроизведения существующих произведений, и меры смещаются в сторону «не заставлять модель копировать дословно» (→ Причины и решение Output blocked by content filtering policy). А в случае Copilot GitHub сам пишет, что смотрит ещё и на совпадение с публичным кодом. Если задача — написать вывод, похожий на существующий код, остановить могло именно там. Одни и те же слова «content filtering» не означают, что проверяют одно и то же.

Для разделения хватает одного приёма. Прогоните тот же промпт через claude в терминале — путь, который идёт к Anthropic напрямую. Если там проходит, а встаёт только Copilot CLI, останавливает не фильтр Anthropic. Если же встаёт в обоих случаях, скорее всего решение принято на стороне поставщика модели.

3-2. The response was blocked by the provider's content filter

✅ Источник (подтверждено): эта строка принадлежит OpenCode, опенсорсному агенту для программирования. В репозитории anomalyco/opencode она дословно приведена в issue #35736.

И именно этот issue — тот пример, ради которого статья написана. Заголовок в переводе звучит так: «Ошибки провайдера Vertex (404, обрыв сокета, stop_reason:refusal) всплывают все как одно и то же „blocked by content filter“».

На деле 1
404 NOT_FOUND

В заданном регионе такой модели нет. Пример из issue — claude-opus-4-8@default. Это просто ошибка настройки, к фильтрам отношения не имеющая.

На деле 2
Обрыв сокета, сброс соединения

Соединение с Vertex API разорвалось во время долгой сессии. Это сетевое событие, содержимое вывода даже не оценивалось.

На деле 3
Настоящий отказ

Ответ приходит с HTTP 200, но с stop_reason: refusal и категорией безопасности (в примере из issue это cyber). Только этот случай отвечает тексту.

Из трёх текст верен лишь для одного. И тем не менее на экране одна и та же фраза. Вот почему строкам слоя ④ нельзя верить на слово: прочитав «заблокировано фильтром» и смягчив свои выражения, вы ничего не почините, если на деле там 404. Чинить надо настройку идентификатора модели и региона.

В том же репозитории открыт и issue #35643 «Даже когда контентный фильтр блокирует вывод, сгенерированное всё равно тарифицируется». Оба на момент написания статьи открыты.

🟡 Что подтвердить не удалось: где именно в исходном коде OpenCode собирается эта строка, в issue не указано, и установить это не получилось. Issue упоминает PR #31745 как прежнее частичное исправление, но смысл сообщения в том, что различать все три вида сбоя оно так и не научилось.

Порядок проверки получается такой. ① Убедиться, что заданные идентификатор модели и регион существуют в такой комбинации. ② Посмотреть, воспроизводится ли сбой на том же промпте или возникает вразнобой (вразнобой — сторона соединения). ③ Если доступен сырой ответ, посмотреть stop_reason. Только когда на шаге ③ виден refusal, это можно считать проблемой содержимого.

4. Streaming response ended before any complete data was received — это была строка самого Claude Code

Дальше — две строки, которые выглядят как текст стороннего инструмента, а на деле принадлежат официальному словарю Claude Code.

✅ Подтверждено: эта строка присутствует отдельным пунктом в официальном справочнике ошибок Claude Code. И официальное объяснение отличается от того, что представляет себе большинство.

«API вернул заголовки ответа, но в теле ответа не было сообщения Claude API»

То есть это не «дошло до середины и оборвалось», а «не пришло вообще ничего». Из-за слов Streaming и ended легко прочитать это как разрыв посреди идущего потока, но официальное определение указывает на состояние, когда вернулись только заголовки, а тело пустое. Спутав это, вы будете бесконечно пробовать средства против разрывов связи.

Официально предлагаются два действия. ① Отправить ещё раз — исходное сообщение остаётся в диалоге, поэтому длинный промпт заново вставлять не нужно, достаточно ввести try again. ② Если повторяется каждый раз, подозревать сеть, прокси и шлюз провайдера — официальная документация отправляет к пункту «Unable to connect to API».

Такое чтение подтверждают соседние родственные пункты. В официальном справочнике есть API returned an empty or malformed response (заголовки говорят об успехе, но тело не является корректным сообщением Claude API), а есть и Bedrock streaming response has content-type "..."; expected "application/vnd.amazon.eventstream" — пункт, который прямо называет несовпадение типа содержимого, вернувшегося от шлюза. Вся эта группа об одном: «200 пришёл, но внутри не ответ Claude».

Когда не пришло вообще ничего

Streaming response ended before any complete data was received
API returned an empty or malformed response

Подозревать маршрут. Корпоративный прокси, терминацию TLS, API-шлюз, промежуточные узлы перед Bedrock и Vertex. → к статье об ошибках сети, прокси и TLS-сертификатов

Когда оборвалось после начала вывода

Connection lost mid-response
The response stopped arriving

Здесь вышедшее на экран сохраняется, а продолжить с места обрыва помогает continue. → к статье о Connection lost mid-response

5. Could not locate the Claude CLI on PATH — строка, которую официальная документация относит к запускающей стороне

✅ Подтверждено: эта строка тоже есть в официальном справочнике ошибок. Но важно, где именно она стоит: в отдельной главе «Wrapper and IDE errors». Официальная документация описывает эту главу как ошибки, которые печатает не сам Claude Code, а запускающая программа.

Официальное определение: «запускающая программа не смогла найти команду claude в системном PATH». В качестве мер предлагаются две.

  • Переустановить. Установщик добавляет claude в PATH
  • Внести каталог установки в PATH. На macOS и Linux это обычно ~/.local/bin или /usr/local/bin, на Windows — обычно %APPDATA%\Anthropic\Claude\bin или C:\Program Files\Anthropic\Claude\bin

Вот только строка, которая реально появляется на экране, бывает длиннее официального заголовка. В issue #80087 репозитория anthropics/claude-code дословно записано то, что вывело расширение VS Code.

Could not locate the Claude CLI on PATH. Launching by name in a PowerShell terminal would run a 'claude' from the open folder instead of the installed CLI, so the launch was blocked. Make sure the Claude CLI's install directory is on your system PATH (not only your PowerShell profile), then restart VS Code and try again.

Вторая половина дописана самим расширением. Именно поэтому поиск ничего не находит, и искать правильно только по первому предложению. Это касается строк слоя ③ вообще: запускающая сторона прививает к официальному заголовку свои обстоятельства.

🟡 Что сообщает issue #80087 (включая неподтверждённое): автор пишет, что на Windows 11 команда claude в терминале работает нормально, а не удаётся только расширению. На v2.1.212 всё работало, на v2.1.214 и v2.1.217 воспроизводилось, поэтому он предполагает регрессию, появившуюся в v2.1.214. В качестве причины подозревается обработка вывода where.exe в Windows (окружение, где в имени пользователя есть не-ASCII символы), но это предположение автора обращения, а не установленная причина. Issue на момент написания статьи открыт, в качестве обходного пути предлагается зафиксировать расширение на v2.1.212.

Для разделения хватает одной строки. Наберите в терминале claude --version. Если версия показывается, а не работает только расширение, сломан не CLI, а тот PATH, который видит запускающая сторона. Когда редактор запускают с иконки, PATH его процесса может отличаться от того, который собирает login-оболочка. Случай, когда установка вообще не завершена, разобран в статье про command not found.

6. Строка, источник которой установить не удалось, и 4 шага, чтобы найти его самому

Про одну из пяти строк вступления — Connection to Claude's response was lost. Claude may still be working🔴 источник установить не удалось. Имён статья здесь не называет.

Но что проверялось и с каким результатом, записать стоит. Все пункты официального справочника ошибок Claude Code просмотрены подряд, и этой строки там нет. Полностью просмотрена и официальная документация Remote Control (продолжение локальной сессии со смартфона или из браузера) — там её тоже нет. Ближе всего по звучанию официальные Connection lost mid-response и Couldn't reconnect to your Remote Control session, но ни с одной из них строка не совпадает.

Значит, слой — либо ③, либо ④, но какой инструмент это написал, подтвердить не удалось. Оборот «Claude may still be working» (Claude, возможно, ещё работает) намекает, что писавший не сам запускает Claude — он смотрит со стороны на другой процесс или другую машину, — но 🟡 это догадка по манере речи, подтверждения нет.

На такой случай оставим порядок, которым читатель закроет вопрос сам. Он подходит ко всем случаям из предыдущих глав.

Шаг 1
Посмотреть, где это нарисовано

Появилось внутри потока ответа Claude или снаружи — в рамке, уведомлении, панели? Если снаружи, написал слой ③ или слой ④.

Шаг 2
Воспроизвести на голом claude

Прогоните ту же работу через claude в терминале. Не воспроизводится — строка принадлежит тому инструменту. Воспроизводится — спускаемся к слою ① или ②.

Шаг 3
Искать точное совпадение в официальном каталоге

Поищите по официальному справочнику ошибок средствами браузера. Запрос — только первое предложение: вторую половину мог привить запускающий (глава 5).

Шаг 4
Искать в issue этого инструмента

Если в официальной документации нет, искать надо не в материалах Anthropic. Ищите строку в issue репозитория того инструмента, которым пользуетесь. Источники для этой статьи установлены именно так.

7. Таблица соответствий — от строки к нужной странице

Сводим выводы на одну страницу. Столбец «кто написал» и определяет, насколько тексту можно верить.

Строка на экране Кто написал Что происходит на самом деле Куда идти
The model returned no content because the response was blocked by content filtering 🟡 Слой ④
строка, о которой сообщили в GitHub Copilot CLI
Вывод остановлен фильтром. Но это может быть фильтр на стороне GitHub (он смотрит и совпадение с публичным кодом) статья о выходном фильтре
The response was blocked by the provider's content filter ✅ Слой ④
OpenCode
Вариантов три — 404 по идентификатору модели, обрыв соединения, настоящий отказ. Тексту отвечает только третий разделение из главы 3
Streaming response ended before any complete data was received ✅ Слой ②
сам Claude Code (официально)
Заголовки пришли, но тело пустое. Это не обрыв на середине. Подозревать маршрут: прокси, шлюзы статья о сети и прокси
Could not locate the Claude CLI on PATH ✅ Слой ③
запускающая сторона (указано официально)
В PATH, который видит запускающая сторона, нет claude. Сам CLI чаще всего исправен статья про command not found
Connection to Claude's response was lost. Claude may still be working 🔴 Установить не удалось
в официальном каталоге нет
Не установлено. Ближе всего по звучанию официальная Connection lost mid-response 4 шага из главы 6 / статья о близкой официальной строке

Если читать таблицу построчно, видно, что «что происходит на самом деле» плывёт только в двух строках слоя ④. Слои ② и ③ не плывут, потому что у них есть официальное определение. Эта разница и есть разница в том, насколько тексту можно верить.

8. Что установлено и что нет

✅ Подтверждено по первоисточникам
  • Streaming response ended… и Could not locate the Claude CLI on PATH присутствуют пунктами официального справочника ошибок Claude Code
  • Вторую официальная документация помещает в «Wrapper and IDE errors» и объясняет как то, что печатает запускающая программа
  • Смысл первой — «заголовки вернулись, но в теле нет сообщения Claude API», это не обрыв на середине
  • Issue #35736 в OpenCode сообщает, что 404, обрыв соединения и настоящий отказ дают одну и ту же строку
  • Официальная документация GitHub прямо пишет, что при работе с Claude вход и выход проходят контентные фильтры GitHub Copilot
🟡 Сообщения есть, но не подтверждено
  • Источник The model returned no content because…. Дословно подтверждён только заголовок issue #3348 в github/copilot-cli, а текст обращения отозван
  • Причина регрессии расширения VS Code, которую называет issue #80087 (обработка вывода where.exe), — предположение автора обращения
  • Какой код OpenCode выводит эту строку, в issue не указано
  • Что «Claude may still be working» — манера речи наблюдающего за чужим процессом, это догадка по языку
🔴 Подтвердить не удалось
  • Какой инструмент выводит Connection to Claude's response was lost…. Её нет ни в официальном справочнике ошибок, ни в официальной документации Remote Control
  • Техническое объяснение со стороны GitHub по той строке в GitHub Copilot CLI (issue #3348 закрыт как not planned, ответа сопровождающих нет)
  • Завершение исправлений по двум issue OpenCode (на момент написания статьи оба открыты)

Итог такой. По виду строки слой, который её написал, не определить. Все пять строк вступления «выглядят написанными сторонним инструментом», а на деле две оказались официальными, две — сторонними, одна осталась неизвестной. Поэтому начинают не с догадок о причине, а со сверки с официальным каталогом. Она занимает минуту и вдобавок задаёт, где искать дальше.

FAQ

Q1. Работаю с Claude, но найти строку в документации Anthropic не получается.

Возможно, её написала не Anthropic. Инструменты, вызывающие Claude как модель (расширения IDE, другие агенты для программирования, работа через Copilot), сами решают, как сообщить о сбое. Сначала поищите точное совпадение в официальном справочнике ошибок, а если его нет — ищите строку в issue репозитория того инструмента, которым пользуетесь.

Q2. Если написано «content filter», значит сработал фильтр Anthropic?

Не обязательно. Официальная документация GitHub прямо пишет, что при использовании Claude входные промпты и выходные дополнения проходят контентные фильтры GitHub Copilot. А в OpenCode, по сообщению issue #35736, той же строкой про «content filter» показываются даже 404 и обрывы сокета, никак с фильтрами не связанные. Прогоните тот же промпт через claude в терминале и разделите случаи по тому, воспроизводится ли он.

Q3. Streaming response ended before any complete data was received означает, что связь оборвалась?

Нет. Определение в официальном справочнике ошибок — «API вернул заголовки ответа, но в теле не было сообщения Claude API». Речь не о том, что дошло до середины и оборвалось, а о том, что не пришло вообще ничего. Сначала отправьте ещё раз (хватит try again), а если повторяется каждый раз — подозревайте маршрут: прокси, шлюзы.

Q4. В терминале claude работает, а расширение IDE пишет «Could not locate the Claude CLI on PATH».

Проблема не в CLI, а в запускающей стороне. Официальный справочник относит эту строку к «Wrapper and IDE errors» — к тому, что печатает не сам Claude Code, а запускающая программа. Когда редактор запускают с иконки, PATH его процесса может отличаться от того, который собирает login-оболочка. Есть и примеры регрессии в конкретной версии расширения, как в issue #80087.

Q5. Поиск ничего не находит — значит, ошибка редкая?

Чаще всего дело в слишком длинной строке. К строкам слоя ③ запускающая сторона иногда прививает собственное объяснение поверх официального заголовка (в примере из главы 5 официальный заголовок — одно предложение, а на экране их было четыре). Ищите только по первому предложению.

Q6. Значит, причине, названной в тексте ошибки, доверять нельзя?

Зависит от слоя. Строкам, которые точно совпадают с официальным каталогом (слои ② и ③), следовать можно: их смысл и порядок действий задокументированы. Проблема — слой ④. Issue #35736 в OpenCode сообщает, что три совершенно разных сбоя превращаются в одну и ту же фразу про блокировку контентным фильтром. Если на деле это ошибка настройки, переписывание формулировок вслед за текстом не починит ничего и никогда.

Q7. Может, просто перестать пользоваться сторонними инструментами?

Так далеко заходить не нужно. Речь не о том, хорош инструмент или плох, а только об источнике строки при сбое. Достаточно один раз при диагностике попробовать воспроизвести на голом claude. О том, какой инструмент выбрать, см. сравнение Cursor, Claude Code, GitHub Copilot и Codex.

Q8. Как чинить Connection to Claude's response was lost. Claude may still be working?

В этой статье источник установить не удалось. Такой строки нет ни в официальном справочнике ошибок Claude Code, ни в официальной документации Remote Control. Значит, написала её либо запускающая сторона, либо сторонний клиент, но какой именно инструмент — подтвердить не получилось, поэтому имён статья не называет. Определите это в своём окружении по 4 шагам из главы 6. О самом явлении обрыва посреди ответа полезна статья про близкую по звучанию официальную Connection lost mid-response.

Похожие статьи

Использованные первоисточники