Содержание
Когда вы работаете в Claude Code или с Anthropic API, работа может внезапно остановиться из-за такой ошибки:
API Error: 400 Output blocked by content filtering policy
# Сырой ответ выглядит так:
{"type":"error","error":{"type":"invalid_request_error",
"message":"Output blocked by content filtering policy"}}
«Вывод заблокирован политикой фильтрации контента» — иными словами, не ваш ввод, а вывод, который пытался вернуть Claude, был на полпути остановлен фильтром безопасности со стороны Anthropic. HTTP-статус — 400, тип — invalid_request_error. Это не превышение лимита использования и не переполнение контекста: проблема в том, «что именно пытались вывести».
Сначала три главных тезиса. ① Причина почти всегда — вердикт «попытка дословно воспроизвести существующий защищённый материал». Claude рассчитан на создание нового контента, и в нём есть защитный механизм, останавливающий дословное копирование существующих текстов. ② Однако ложных срабатываний (false positive) много — генерация текста стандартных лицензий вроде MIT/Apache или работа по «приведению в точное соответствие» существующей странице может вызвать срабатывание даже без злого умысла. ③ Суть решения — «не давать модели делать дословную копию»: лицензии и т.п. получайте инструментами, промпт смещайте к «преобразованию, резюмированию, генерации нового», а если попали в цикл повторных попыток — остановите его и переформулируйте. В этой статье на основе официальной информации и реальных отчётов о сбоях разберём причину, паттерны ложных срабатываний, способы исправления и отличия от похожих ошибок.
Где именно происходит остановка
— фильтр останавливает не ввод, а «вывод»
Остановка происходит на ③ этапе вывода. Это не «слишком длинный ввод» (Prompt is too long) и не лимит использования.
Вывод, который «создаёт новое», проходит, а вывод, который «дословно копирует существующее», часто застревает.
1. О чём говорит эта ошибка
В Anthropic API есть система безопасности, которая проверяет и ввод (то, что вы отправляете), и вывод (то, что возвращает Claude). Output blocked by content filtering policy, как и следует из названия, означает, что именно фильтр на стороне «вывода» остановил контент, который Claude собирался вернуть. Ответ API приходит как HTTP 400/invalid_request_error, а Claude Code останавливает сессию с сообщением API Error: 400 Output blocked by content filtering policy.
Важно: это не то же самое, что «модель вежливо отказывается в диалоге (refusal)». Refusal возвращается как текст, а этот 400 означает, что сам вызов API становится ошибкой. Поэтому Claude Code не может получить ответ и обработка прерывается.
Ключевой момент: это не «баг», а «срабатывание защитного механизма». Поэтому это не из тех проблем, что «лечатся перезапуском», и правильный подход — пересмотреть, что именно вы пытались вывести. Тем не менее, как описано ниже, ложных срабатываний довольно много, так что если ошибка возникла при законной работе, чаще всего её можно обойти переформулировкой или сменой способа.
2. Почему она возникает — механизм, останавливающий «воспроизведение» защищённых материалов
Согласно официальному объяснению Anthropic, основная цель этого фильтра — не допустить дословного копирования и повторного воспроизведения (regurgitate) существующих материалов. Официально роль Claude определена как «создавать новый контент и идеи, а не воспроизводить существующее», плюс приводится политика, запрещающая использование, нарушающее права интеллектуальной собственности.
То есть фильтр склонен срабатывать, когда вывод оценивается как «очень похожий на дословную копию уже существующего в мире текста». Конкретно это следующие случаи.
Просьба «выпиши как есть» полный текст лицензии вроде MIT / Apache-2.0 / BSL / MPL, стандартного кодекса поведения или шаблона легко расценивается как дословное копирование существующего.
Инструкции вида «исправь файл, чтобы он полностью совпадал с этим онлайн-документом» или «воспроизведи точь-в-точь как в исходной статье» — то есть перекопировать внешний существующий материал.
Массовое цитирование / полная перепечатка существующей API-документации, книг или статей. Резюме или переработка проходят легче, а дословная копия застревает.
Внимание: официально также прямо сказано, что «если это предупреждение возникает при реальной попытке извлечь защищённый материал, то при повторении возможны предупреждения, а также приостановка или закрытие аккаунта». Не обходите фильтр с целью намеренного дословного копирования. Здесь речь идёт исключительно о ложных срабатываниях при законной работе.
3. Частые ложные срабатывания (false positive)
Официально также признаётся существование ложных срабатываний: «есть пользователи, которые сталкиваются с этим отказом/ошибкой без намерения что-либо копировать». И действительно, в Issue Claude Code много сообщений о срабатывании на такой «абсолютно безобидной» работе.
Остановка при стандартной настройке — создании файла LICENSE, конфигурации CI, файлов оздоровления сообщества (CODE_OF_CONDUCT и т.п.).
Срабатывание посреди задачи-сравнения «сверь с онлайн-перечнем и исправь расхождения», когда вывод приблизился к существующему перечню.
Бывает, что после 1–2 часов работы происходит остановка с кодом 400, а причину ошибочно диагностируют как «лимит токенов». На деле виноват выходной фильтр.
Известная особенность самого Claude Code: получив эту ошибку, он может войти в цикл повторных попыток, снова и снова пытаясь выдать тот же вывод, и застрять. Он подолгу крутится в цикле, не создав ни одного файла, и легко перепутать причину. Заметив цикл, первым делом остановите его вручную (следующий раздел).
4. Как исправить прямо сейчас
Реакция различается для случая «защитный механизм сработал правильно» и «ложное срабатывание», но при законной работе следующий порядок с высокой вероятностью помогает обойти проблему.
Полные тексты шаблонов вроде лицензий не заставляйте писать модель, а получайте инструментами. Например: npx license mit, вставка с choosealicense.com, указание шаблона в gh repo create.
Вместо «воспроизведи как есть» меняйте на «резюмируй», «переработай», «перепиши своими словами», «выведи только различия». Часто достаточно просто не требовать дословного совпадения.
Если Claude Code продолжает повторять тот же вывод, прервите его клавишей Esc. Не отправляйте ту же инструкцию заново, а возобновляйте после переформулировки.
Чтобы понять, какой вывод стал триггером, разбейте большую пакетную генерацию на мелкие части. Сравнение с рабочей конфигурацией по одной переменной облегчает поиск причины.
Если при законной работе ошибка возникает повторно — обратитесь в поддержку Anthropic. Официально приветствуется обратная связь для улучшения фильтра.
Примеры переформулировки (та же цель, но проходит легче)
❌ «Впиши в LICENSE полный текст лицензии MIT как есть»
✅ «Хочу создать LICENSE. Выполни npx license mit и сгенерируй его»
❌ «Вставь этот официальный документ дословно, слово в слово»
✅ «Прочитай этот официальный документ и кратко изложи суть
своими словами в виде списка. Дословная копия оригинала не нужна»
5. Как отличить от похожих ошибок
Хотя всё это — «остановка», причину можно определить по сообщению. Разделяйте по статусу и ключевым словам.
| Сообщение / тип | Настоящая причина | Что делать |
|---|---|---|
| Output blocked by content filtering policy (400) | Вывод расценён как воспроизведение существующего защищённого материала | Избегать дословной копии, переформулировать / получать инструментами |
| Prompt is too long (400) | Ввод превысил окно контекста | /compact・/clear (разбор) |
| usage limit reached | Исчерпан лимит использования тарифа | Ждать сброса / старший тариф (разбор) |
| 529 Overloaded / 500 | Временная перегрузка / сбой на стороне сервера | Повторить попытку спустя время (разбор) |
| Вывод обрывается на середине | Достигнут лимит вывода max_tokens |
Повысить лимит вывода / генерировать по частям |
Если сомневаетесь, надёжнее всего судить по самой строке сообщения. Написано content filtering policy — это тема данной статьи, too long — переполнение ввода, usage limit — исчерпание лимита. Про ошибки Claude Code в целом собрано также в статье частые ошибки Claude Code и их решения.
6. Чек-лист по предотвращению повторов
- Лицензии и шаблонные документы получайте инструментами или из шаблонов, а не заставляйте писать модель
- Существующие материалы запрашивайте не как «воспроизведение», а как «резюме, переработку, своими словами»
- Уберите из промпта слова «слово в слово», «как есть», «полностью совпадает»
- Большую пакетную генерацию дробите на мелкие части, чтобы можно было вычленить вывод-триггер
- Если остановилось с кодом 400 — сначала прочитайте строку сообщения, чтобы не перепутать причину (ошибочный диагноз «лимит токенов»)
- Заметив цикл повторных попыток, остановите его клавишей Esc и возобновляйте после переформулировки
- О ложных срабатываниях при законной работе сообщайте в поддержку, помогая улучшать фильтр
Итоги
API Error: 400 Output blocked by content filtering policy означает, что это не лимит использования и не переполнение контекста, а «вывод», который пытался вернуть Claude, был остановлен фильтром безопасности. Основная задача фильтра — предотвратить дословное воспроизведение существующих защищённых материалов, и при генерации текста стандартных лицензий или работе «по приведению в соответствие» существующему материалу он часто срабатывает ложно, без злого умысла. Суть решения проста: не давать модели делать дословную копию, а заменять это генерацией, резюмированием и получением через инструменты. И если остановилось с кодом 400 — сначала прочитайте строку сообщения, чтобы не перепутать причину. Одного этого достаточно, чтобы в большинстве случаев двигаться дальше.
FAQ
В. Означает ли это, что мой аккаунт получил предупреждение?
О. При единичном ложном срабатывании — нет. Однако официально прямо сказано, что при реальных повторных попытках извлечь защищённый материал возможны предупреждения и приостановка аккаунта. Из-за одного случая при законной работе паниковать не нужно.
В. Разве не неудобно, что нельзя написать даже лицензию MIT?
О. Полный текст лицензии — это «существующий шаблонный текст», поэтому получить его через npx license mit или с choosealicense.com быстрее и надёжнее, чем заставлять модель делать дословную копию. Заодно это обходит ложное срабатывание.
В. Чем это отличается от лимита токенов (Prompt is too long)?
О. Это совершенно разные вещи. too long — про то, что размер ввода превысил окно, и решается через /compact и т.п. Нынешняя content filtering policy — про содержимое вывода, и уменьшением размера не лечится. Подробнее — здесь.
В. Что бы я ни делал, при законной работе всё равно останавливается. Как быть?
О. Если после переформулировки промпта ближе к генерации/резюмированию и дробления задачи ошибка всё равно повторяется — сообщите в поддержку Anthropic, приложив request id. Фильтр постоянно улучшается, и обмен данными о ложных срабатываниях — кратчайший путь к решению.