Три бага в Claude Code: Anthropic опубликовала постмортем

Claude Code действительно поглупел на месяц — и модели тут ни при чём. Anthropic опубликовала постмортем: три бага в обвязке CLI, по-разному ломавшие ответы — от дефолтного режима рассуждений до API-хедера, сбрасывавшего thinking-блоки на каждом ходу. Все три закрыты к v2.1.116 от 20 апреля.

Обложка: Три бага в Claude Code: Anthropic опубликовала постмортем

Claude Code действительно поглупел на месяц — и модели тут ни при чём. Anthropic опубликовала постмортем: три отдельных бага жили в harness — обвязке CLI, которая готовит контекст перед отправкой в Messages API. Все три закрыты в Claude Code v2.1.116 от 20 апреля, подписчикам 23 апреля сбросили usage limits.

Key Takeaways
Если пользуетесь Claude Code — проверьте версию. Ниже — разбор всех трёх багов и что Anthropic меняет
  • Деградация касалась Claude Code, Claude Agent SDK и Claude Cowork (веб-версия Claude Code). Messages API и инференс-слой — не затронуты
  • С 4 марта по 7 апреля дефолтный reasoning effort — настройка того, сколько модель «думает» перед ответом — стоял на medium вместо high. Задержка ниже, интеллект тоже. Затронуло Sonnet 4.6 и Opus 4.6
  • С 26 марта по 10 апреля API-хедер clear_thinking_20251015 срабатывал на каждом ходу, а не один раз, как задумано, — Claude «забывал» контекст и повторялся. Затронуло Sonnet 4.6 и Opus 4.6, фикс в v2.1.101
  • С 16 по 20 апреля в system prompt стояло ограничение ≤25 слов между tool-вызовами и ≤100 слов на финальный ответ — срезало качество на сложных задачах. Затронуло Sonnet 4.6, Opus 4.6 и Opus 4.7
  • Все три бага закрыты к Claude Code v2.1.116 от 20 апреля. Anthropic сбросила usage limits всем подписчикам 23 апреля

Таблица по багам: что, когда и какие модели

  • Баг 1. Default reasoning effort на medium — 4 марта — 7 апреля. Sonnet 4.6 + Opus 4.6. Фикс: откат дефолта 7 апреля
  • Баг 2. Thinking-блоки чистились каждый ход — 26 марта — 10 апреля. Sonnet 4.6 + Opus 4.6. Фикс: Claude Code v2.1.101
  • Баг 3. System prompt сжимал ответы до 100 слов — 16 — 20 апреля. Sonnet 4.6 + Opus 4.6 + Opus 4.7. Фикс: Claude Code v2.1.116

Почему это не заметили сразу

В постмортеме Anthropic отдельно подчёркивает: модели они намеренно не деградируют, API и инференс-слой проверили сразу — там всё чисто. Все три проблемы жили в harness — обвязке Claude Code, которая готовит контекст перед отправкой в Messages API.

Три изменения попали к разным пользователям в разные даты — снаружи это выглядело, будто Claude просто иногда глупеет, без чёткой закономерности. Внутреннее использование сотрудниками и автоматические evals (автоматический прогон на тестовых задачах с оценкой качества) проблему поначалу не воспроизводили — отличить шум от реальной деградации было непросто. Первые репорты пришли в начале марта.

Баг 1. Дефолтный reasoning effort опустили с high на medium

Когда Opus 4.6 пришёл в Claude Code в феврале, дефолтным был high effort. Быстро посыпались жалобы: в этом режиме модель иногда думает так долго, что CLI выглядит зависшим, а токены и лимиты уходят быстрее.

4 марта Anthropic переключила дефолт на medium: по внутренним evals интеллект просел незначительно, зато задержка стала предсказуемой, а лимиты расходовались экономнее. В компании признают, что это был неверный компромисс — пользователям ценнее интеллект по умолчанию, а понижать effort удобнее через /effort для конкретных задач. 7 апреля откатили: Opus 4.7 теперь по дефолту на xhigh (внутренняя нотация Anthropic — «extra high»), остальные модели — на high. Баг затронул Sonnet 4.6 и Opus 4.6.

Баг 2. Кэш-оптимизация, которая сбрасывала thinking-блоки

Из всех трёх багов — самый тонкий. Когда Claude рассуждает над задачей, reasoning остаётся в conversation history (истории переписки сессии) — это нужно, чтобы на следующем ходу помнить, зачем он делал предыдущие правки и вызывал инструменты. 26 марта выкатили оптимизацию: если сессия простояла без активности больше часа, при возобновлении старые thinking-блоки (записи внутренних рассуждений в истории) можно выкинуть один раз. Всё равно это cache miss по prompt cache — префикс сессии придётся переотправлять целиком.

Реализация использовала API-хедер clear_thinking_20251015 вместе с keep:1 — оставить один последний блок рассуждений. Баг в логике: чистить должны были однократно при возобновлении сессии, а чистили на каждом ходу до конца процесса. Каждый запрос говорил API: «оставь только последний блок reasoning, остальное выбрось». Эффект усугублялся: если пользователь присылал follow-up прямо во время вызова инструмента, это стартовало новый ход под сломанным флагом — и выбрасывались даже рассуждения текущего хода. Claude продолжал выполнять задачу, но всё хуже помнил, зачем.

Со стороны это выглядело как забывчивость, повторения и странный выбор инструментов. Побочный эффект — постоянные cache miss, из-за которых usage limits расходовались быстрее обычного (это объясняет отдельную серию репортов про «лимиты тают»).

Баг прошёл несколько человеческих и автоматических code review, unit-тесты, e2e-тесты, автоматическую верификацию и dogfooding (внутреннее использование сотрудниками на рабочих задачах). Anthropic отмечает: два не связанных между собой эксперимента — внутренний серверный тест очередей сообщений и побочное изменение в отображении thinking — случайно маскировали проблему в CLI-сессиях сотрудников. Сам баг жил на стыке context management Claude Code, Anthropic API и extended thinking и срабатывал только в corner-кейсе устаревшей сессии. Воспроизведение заняло больше недели.

При разборе инцидента Anthropic натравила свой внутренний Code Review — инструмент, который ревьюит код движком Claude — на те самые PR с багом, сначала на Opus 4.7, потом на Opus 4.6, обоим дав полный контекст репозиториев. Opus 4.7 баг нашёл, Opus 4.6 — нет. Вывод: Code Review научится подтягивать связанные репозитории как контекст, и эта версия доедет до пользователей. Фикс бага — в Claude Code v2.1.101 от 10 апреля.

Баг 3. System prompt резал ответы до 100 слов

У Opus 4.7 на старте есть заметная черта — он ощутимо многословнее предшественника. Это помогает на сложных задачах, но раздувает output-токены. Anthropic пробовала несколько способов это сгладить: дообучение модели, промптинг и переработку thinking UX — и среди прочего выкатила строчку в system prompt Claude Code к релизу Opus 4.7 16 апреля:

Length limits: keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless the task requires more detail.

На внутренних evals регрессий не было — несколько недель тестировали и выкатили в релиз. Когда расследование дошло до ablations (удаление строк system prompt по одной и замер эффекта) на расширенном наборе evals, выяснилось: именно при этой строчке качество просаживалось на 3% на Opus 4.6 и 4.7. Откатили в Claude Code v2.1.116 от 20 апреля. Баг затронул Sonnet 4.6, Opus 4.6 и Opus 4.7.

Что меняют

Чтобы такие истории не повторялись, Anthropic меняет процесс:

  • Больше сотрудников будут использовать ровно тот публичный билд Claude Code, что и пользователи — не internal-тестовый
  • Code Review научится подтягивать связанные репозитории как контекст — и эта версия доедет до пользователей
  • Жёстче контроль system prompt: на каждое изменение — per-model evals и ablations
  • Новый инструментарий для ревью и аудита изменений system prompt
  • Для изменений, способных зацепить качество модели, — soak-период (выдержка на узком срезе пользователей), расширенный набор evals и постепенный раскат
  • Обновлённые инструкции в CLAUDE.md: model-specific изменения строго привязаны к конкретной модели

Что делать прямо сейчас

Три конкретных шага:

  • Проверить версию — claude --version. Нужно v2.1.116 или новее
  • Если ниже — обновить: npm install -g @anthropic-ai/claude-code@latest
  • Лимиты обновятся автоматически при следующем запросе — отдельных действий не нужно

Если в марте — апреле казалось, что Claude «поглупел» — это вам не показалось. Если после обновления всё равно видите странное поведение — шлите репорт через /feedback с конкретным воспроизводимым примером: именно такие репорты помогли Anthropic выйти на все три бага.

Общий вывод для тех, кто строит агентные системы: баги в обвязке бывают не менее разрушительными, чем проблемы в самой модели. И заметно труднее ловятся — выглядят как «модель иногда странно себя ведёт», а не как чёткая ошибка в логе. Саймон Уиллисон пишет, что оставляет сессии Claude Code открытыми на часы или дни и потом возвращается (у него прямо сейчас 11 таких по ps aux | grep claude) — ровно тот режим, в котором баг №2 был особенно заметен.

FAQ
1
Моя подписка Claude Code была затронута?

Если пользовались Claude Code, Claude Agent SDK или Claude Cowork в период с 4 марта по 20 апреля — скорее всего да, хотя бы одним из трёх багов. Прямое обращение к Messages API не затронуто.

2
Какие модели пострадали?

Первые два бага (reasoning effort и clear_thinking) задевали Sonnet 4.6 и Opus 4.6. Баг с system prompt (16—20 апреля) зацепил также Opus 4.7 — он вышел как раз 16 апреля.

3
Что делать сейчас?

claude --version — проверить, npm install -g @anthropic-ai/claude-code@latest — обновить до v2.1.116 или новее. Если заметили странности после 20 апреля — шлите репорт через /feedback с конкретным воспроизводимым примером.

4
Почему Anthropic не отловила баг внутренними тестами?

Два не связанных между собой эксперимента — внутренний серверный тест очередей сообщений и побочное изменение в отображении thinking — случайно маскировали баг с thinking-кэшем в CLI-сессиях сотрудников. Сам баг срабатывал только после часа простоя сессии — редкий corner-кейс в dogfooding. Внешние метрики, evals и unit/e2e-тесты проблему не воспроизводили. Выцепить помогли конкретные пользовательские репорты.

5
Что за clear_thinking_20251015?

API-хедер Anthropic Messages API, который говорит серверу: из истории conversation можно выкинуть старые thinking-блоки, оставив последние N. Директива keep:1 — оставить один последний. Claude Code им пользовался для экономии токенов в сессиях, простоявших больше часа. Баг заставлял хедер срабатывать не однократно при возобновлении, а на каждом ходу до конца процесса.

6
Почему ограничение в 25 слов так сильно ударило по качеству?

Текст между tool-вызовами и в финальных ответах — это в том числе форма проговаривания рассуждения. Жёсткое сжатие до ≤25 слов между вызовами и ≤100 слов в финале заставляло модель обрывать промежуточные шаги, и на сложных задачах это просаживало качество. Ablation на расширенном наборе evals показал −3% на Opus 4.6 и 4.7.

7
Эти баги могут повториться?

Полностью не исключено — агентные обвязки хрупкие по природе. Но теперь каждое изменение system prompt и каждая правка, способная задеть качество модели, проходит ablations и soak-период до полного раската — ровно те процедуры, которых не хватило в трёх перечисленных случаях.

Выводы

Постмортем Anthropic разом показывает три жанра сбоев в агентных системах: неверно выбранный компромисс между скоростью и интеллектом, тонкий баг в API-логике, который мимикрировал под „модель забывает", и system prompt, который прошёл все evals, но провалил продакшен. Все три закрыты к 20 апреля, подписчикам сбросили лимиты. И отдельный практический вывод: /feedback с конкретным примером — реально работающий канал, именно им выцепили проблемы, которые внутренние инструменты проспали.