Claude Code 2.1.312 перестал затирать большие CLAUDE.md

Anthropic в Claude Code 2.1.312 от 27 октября исправила ошибку: Claude мог перезаписать очень большой CLAUDE.md, файл правил или подключённый через @ файл в подкаталоге, хотя видел только его начало. Как сказано в заметках к релизу на GitHub, инструмент Write в таком случае просит Claude дочитать файл целиком или править его на месте. На Bedrock, Vertex, Foundry и Mantle после обновления короткий системный промпт получают имена моделей, которых Claude Code не знает, например собственные имена деплоев и ARN профилей инференса, даже если за ними стоит Sonnet или Haiku. Полный промпт возвращает CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0.
Кого касается короткий промпт
Под изменение попадают команды, которые обращаются к модели через облачного провайдера под своим именем деплоя или через ARN профиля инференса. Такие имена Claude Code считает нераспознанными и с 2.1.312 отдаёт им короткий системный промпт, какая бы модель ни стояла за ними. По коду 2.1.312, который мы разобрали, переменная CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT проверяется раньше любой проверки модели: со значением 0 промпт будет полным при любом имени.
Та же граница сдвинулась и для автоматической смены модели после помеченного сообщения: переключение распространили на нераспознанные имена, включая имена деплоев. Отключает его CLAUDE_CODE_DISABLE_REFUSAL_FALLBACK=1. Модель для переключения Claude Code выбирает по семейству из ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL и ANTHROPIC_DEFAULT_HAIKU_MODEL, если они заданы. Всю цепочку выбора мы не прослеживали.
Обе переменные описаны только в заметках к релизу. На страницах документации о настройках, Amazon Bedrock и конфигурации моделей 28 октября их не было.
Большие CLAUDE.md и правила
По документации Claude Code, CLAUDE.md из подкаталога загружается по требованию: когда Claude читает, пишет или правит другой файл в этом подкаталоге. Чтением считается и cat или head одного файла через Bash. Так же подгружаются @-импорты этого файла, правила из .claude/rules/ подкаталога и правила, привязанные к путям. Если файл больше лимита, Claude получает только его начало и пометку о том, что остальное нужно дочитать через Read.
Порог мы нашли в той же документации: 40 000 символов при контекстном окне 200K, а при окне 1M - 200 000 символов на Claude Opus 4.6 и Claude Sonnet 4.6 и 150 000 на более поздних моделях. Лимит действует с v2.1.309, до неё файлы, которые загружаются по требованию, не обрезались. По нашему прочтению, новая защита в Write закрывает как раз это обрезанное состояние: документация описывает обрезку, а заметки к релизу - перезапись.
Рядом исправили ещё одну ошибку с подкаталогами: навыки, привязанные к каталогу или к путям через paths:, не находились после того, как Bash делал cd глубже в git-репозиторий.
Хуки, телеметрия и вход в VS Code
Хуки типа prompt и agent ограничили: в одной сессии, включая субагентов, одновременно работают не более 24, плюс до 12 тех, что ждут дольше тайм-аута своего события. Тайм-аут меньше секунды считается за секунду. В коде эти числа заданы константами, ограничитель действует только на хуки prompt и agent, а в 2.1.311 его не было.
У субагента autoCompactWindow начал работать вместе с CLAUDE_CODE_AUTO_COMPACT_WINDOW: он может уменьшить окно автосжатия, заданное переменной, а раньше в таком сочетании ни на что не влиял. Увеличить это окно он по-прежнему не может.
Событие OpenTelemetry claude_code.safety_event Claude Code перестал отправлять всего через пять версий после того, как оно появилось в 2.1.307. Поле mcp_server.name для удалённых MCP-серверов с фиксированным URL, которые объявлены плагинами из официального маркетплейса Anthropic, показывает настоящее имя сервера вместо custom. Спиннер, значения effort в OpenTelemetry и транскрипты показывают уровень, который реально действует, хотя раньше в них попадал только что выбранный посреди задачи уровень, ещё не применённый моделью.
Что ещё есть в списке изменений:
- в шлюзе Claude apps появился
oidc.user_id_claim: людей можно опознавать по другому полю id_token вместо sub, например по oid из Microsoft Entra ID; - после входа из расширения VS Code управляемые настройки и политика организации не загружались до конца сессии, это исправлено;
- в VS Code сессия, которая не смогла загрузить настройки организации, завершалась с одним кодом выхода, а вкладка теперь объясняет причину и предлагает Retry или Sign in again;
- в полноэкранном режиме клик по подсказке «to send now» под сообщением в очереди отправляет его сразу, как и клавиша;
- команда с недопустимым именем мешала загрузке всех команд, из-за чего
claude -pмог ничего не вывести; - пятичасовое окно в сообщениях о лимитах называется «5-hour limit» вместо «session limit»;
- Code Review проверял устаревший коммит или не проверял ничего, если GitHub присылал push-событие с опозданием, а теперь берёт текущий коммит пул-реквеста.
Авторский разбор
Что мы проверили
28 октября мы сравнили сборки Claude Code 2.1.311 и 2.1.312, включая npm-обёртку, и сверили их с документацией.
В главном заметки к релизу подтвердились, но два пункта в коде устроены иначе, чем звучат. Событие телеметрии о срабатываниях проверок безопасности не удалено: его выключили значением флага по умолчанию, а код отправки остался. Нераспознанное имя модели в коде определяется проверкой подстрок, поэтому имя деплоя, где прямо написано sonnet или haiku, под новое правило может не попасть.
- В
sdk-tools.d.tsу результата AskUserQuestion появилось полеunansweredсо значениямиskipped,replied_in_chatиdismissed. Оно заполняется только в сессии, которая объявляет возможностьask_user_question_unanswered_v1. В заметках к релизу его нет. - Отправку
claude_code.safety_eventрешает флагtengu_snoopy_creek: в 2.1.311 по умолчанию он был true, в 2.1.312 стал false. Сам отправитель и места вызова не изменились. Мы делаем вывод, что событие можно включить обратно без нового релиза, но такого переключения не наблюдали. Документация по мониторингу 28 октября всё ещё описывала событие как действующее с v2.1.307. - Знакомым в 2.1.312 считается имя, которое нашлось в каталоге моделей, содержит
claude-3-,haikuилиsonnetлибо совпадает с одним из имён отclaude-opus-4-0доclaude-opus-4-7. В 2.1.311 судьбу остальных имён решала отдельная ветка, в 2.1.312 её удалили. Отсюда наш вывод по скомпилированному коду: Bedrock-идентификатор или ARN со словом sonnet или haiku на этом шаге остаётся знакомым, а ARN профиля инференса с непрозрачным id и имя деплоя без этих слов - нет. Что делает с именем нормализация перед проверкой, мы не отследили. Кроме того, в коде есть запрос GetInferenceProfile с тайм-аутом 8 секунд, который выясняет модель за профилем, но к выбору промпта мы его не привязали. Для имён, не прошедших проверку, по коду полный промпт возвращает толькоCLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0.
Дальше
Claude Code и две бесплатные модели не сошлись на Next.js
Heroku агенты брали для Python в 14 из 30 запусков, а для Next.js ни разу из 29, и так у всех: Claude Code, DeepSeek и GLM. На Next.js те же модели не сошлись в главном выборе ни в одной из трёх категорий. Куда вы деплоите проекты, которые собрал агент?
Читайте также
- Claude Code 2.1.311: сжатие вместо остановки и ultrathink
- Claude Code 2.1.310 открыл Monitor для Bedrock и Vertex
- Claude Code 2.1.307 переводит код на API 2026-10-21
- Claude Code 2.1.305 вернул работу на Vertex и Bedrock
- Claude Code 2.1.301 не будет ждать далёкий сброс лимита
- Claude Code 2.1.300 считает запись кэша по сроку жизни
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

