Claude Code 2.1.274 предупреждает, пока память не кончилась

Claude Code 2.1.274 начал предупреждать о критической нехватке памяти. На экране появляется заметное сообщение, а под ним шаги: как освободить память или безопасно перезапуститься. Тем, кто держит долгие фоновые команды, важнее соседнее исправление. Раньше на машинах с умеренной нагрузкой на память такие команды останавливались после 30 минут простоя. Теперь их останавливают только при критической нехватке памяти, и в отладочном логе написано, почему.
Версия вышла 17 сентября. Заметки к релизу на Github длинные: CLI, расширение для VS Code, облачные сессии, Claude Tag и Code Review. Основная часть приходится на две темы: как Claude Code подключает MCP-серверы и как шлюз Claude apps держит нагрузку. Несколько пунктов потребуют перенастройки.
Сколько ждать MCP-серверы
Новая переменная CLAUDE_CODE_MCP_STARTUP_WAIT_MS ограничивает, сколько первый неинтерактивный ход ждёт MCP-серверы, которые ещё подключаются. Значение 0 означает не ждать вовсе. В скриптах и CI этой переменной можно прямо управлять временем старта.
Ту же задержку убирают ещё три изменения. В сессиях с --input-format stream-json первый ход не ждёт до 2 секунд серверы, чьи инструменты tool search и так откладывает. Эти инструменты появятся на одном из следующих ходов. Если запустить Claude Code с --strict-mcp-config и пустым --mcp-config, первый неинтерактивный ход раньше мог простаивать до MCP_TIMEOUT из-за посторонних MCP-серверов. Это исправлено. А в облачных сессиях первый ход иногда начинался без инструментов MCP-сервера из SDK, который ещё не успел подключиться. Это тоже исправлено.
Ошибки MCP, которые сбивали с толку
Самая неприятная из них касалась долгих вызовов. Вызовы инструментов через Streamable HTTP обрывались примерно через 5 минут, даже если для сервера был задан более длинный таймаут. Ещё одна проблема была у серверов, прописанных как http, но понимающих только старый протокол HTTP+SSE: они не подключались, если на первый запрос отвечали ошибкой 422 или другой 4xx.
Две ошибки давали неверный диагноз. Отказ с 403 insufficient_scope выглядел как истёкший вход. Теперь сообщение называет недостающие права и отправляет на повторную авторизацию через /mcp. Промпты и ресурсы сервера не обновлялись, если он присылал уведомления об изменении списка, но не объявлял listChanged. Это тоже исправлено.
Одно исправление касается безопасности. Если в конфиге MCP стоят плейсхолдеры ${VAR}, в ошибках подключения и в описании инструмента для входа в MCP показывались уже подставленные секреты. Если такие логи куда-то уходили, их стоит проверить.
Шлюз Claude apps
Шлюз получил набор правок, рассчитанных на загруженную базу и перезапуски. Проверка лимита трат под нагрузкой наконец обходится одним обращением к базе вместо четырёх, так что на загруженном шлюзе меньше проверок обрывается по таймауту. Ещё одно исправление касается такой проверки: если Postgres рвал соединение посреди неё, возникал необработанный отказ промиса (unhandled promise rejection).
Подключение к Postgres теперь настраивается. Параметр store.connect_timeout_seconds увеличивает таймаут подключения, по умолчанию он равен 5 секундам. При старте шлюз до трёх раз пробует первое подключение, прежде чем завершиться, поэтому база, которая становится доступной на несколько секунд позже, не обрушивает запуск. Если база всё же недоступна, ошибка указывает на store.postgres_url и на заданный таймаут.
По SIGTERM шлюз раньше рвал все открытые потоки. Теперь он даёт запросам в работе до 25 секунд, срок задаёт CLAUDE_GATEWAY_DRAIN_TIMEOUT_MS. Каждая реплика одновременно отправляет наверх 256 запросов. Шлюз выводит этот лимит строкой в лог при старте и предупреждает, когда открытых запросов на реплике больше. Если вход упирается в ограничение частоты, /login объясняет отказ, а лог шлюза называет сработавший лимит и настройку, которую надо поменять.
Шлюзу добавили и данных. Claude Desktop и Cowork передают в телеметрии через него enduser.sub, идентификатор пользователя у провайдера входа (IdP). В предыдущей версии, 2.1.273, Claude Code научился помечать запросы к LLM-шлюзам служебными заголовками. Остальная телеметрия тоже стала подробнее. У спана claude_code.llm_request появился атрибут effort, как у события api_request. Новое событие claude_code.managed_settings_resolved показывает, откуда взялись управляемые настройки. Сами настройки в отредактированном виде и их хеши попадают в него с OTEL_LOG_MANAGED_SETTINGS=1. В режиме OTEL_LOG_RAW_API_BODIES=file:<dir> появились файл index.jsonl и атрибуты request_body_id и message.id. По ним каждый ответ связывается с файлом запроса и сообщением в транскрипте.
Долгие сессии и агенты
Сессии могли бесконечно повторять запрос после ошибки 400 «unexpected tool_use_id». Теперь испорченный транскрипт по возможности чинится сам. Если не получается, цикл обрывается понятной ошибкой с подсказкой про /rewind.
Правки для сессий с хуками в основном касаются /goal. Если контекст переполнялся повторно уже после реактивного сжатия, такие сессии заканчивались ошибкой «Prompt is too long», хотя должны были сжиматься снова. При возобновлении сжатой сессии через --continue или --resume активный /goal пропадал. Ещё одна ошибка была у claude agents: после перезапуска при автообновлении терялись флаги --model, --effort, --permission-mode, --allow-dangerously-skip-permissions и --agent. Сабагенты с model: "opus" на Bedrock, Vertex и Foundry уходили с модели сессии, если в её идентификаторе нельзя было распознать семейство модели. Исключением был случай, когда задан ANTHROPIC_DEFAULT_OPUS_MODEL.
Несколько правок экономят ходы модели и время. В headless-сессиях и сессиях через SDK раньше на каждую завершённую фоновую задачу уходил отдельный вызов модели. Теперь на все завершения, которые уже стоят в очереди, отвечает один вызов. Monitor присылает финальный вывод скрипта и код выхода одним уведомлением вместо двух. Bash после каждой перезагрузки плагинов заново загружал профиль оболочки, и следующая команда зависала на несколько секунд. Теперь профиль перезагружается, только если изменились каталоги bin/ плагинов. Убрано и замедление на каждом ходе, которое возникало, когда языковой сервер публиковал диагностику по всему проекту на тысячи файлов.
Проверки разрешений стали строже. Команды Bash, которые перебирают в цикле или присваивают некоторые специальные переменные оболочки, теперь запрашивают разрешение. Сессии, изолированные в worktree, отклоняют команды с некоторыми вложенными подстановками оболочки. В файлах с многобайтовыми символами превью в запросе на правку иногда показывало не то место, которое потом правилось. Это исправлено.
В интерфейсе тоже есть правки. Транскрипт перенумеровывал нумерованные списки в ваших сообщениях: набранное «3. 2. 1.» отображалось как «3. 4. 5.». Теперь номера показываются как набраны. Остальные пункты относятся к отдельным продуктам. В VS Code шаг, прерванный перезагрузкой окна, теперь продолжается. В меню Customize появились разделы Memory и Instructions, а настройка claudeCode.lockEditorGroups не даёт Claude закреплять группы редакторов. В облачных сессиях можно сравнивать изменения с любой веткой. Routines при отсутствии подключения к GitHub пропускают запуск и повторяют попытку до 72 часов, а не отключаются после первой неудачной проверки. В Claude Tag исправили ответы на упоминания от других приложений и ботов Slack. Code Review формулирует замечания короткими фразами: кого затрагивает проблема, где ошибка и как её исправить.
Что придётся перенастроить
Записи MCP с "type": "sdk" в .mcp.json, настройках, плагинах и файлах агентов теперь пропускаются с предупреждением. Такие серверы работают внутри процесса, и регистрировать их может только приложение, в котором запущен SDK. При клонировании плагинов и маркетплейсов файлы Git LFS не скачиваются и остаются указателями. Чтобы получить их, выполните git lfs pull в склонированном каталоге.
/code-review изменил поведение для моделей без собственных настроек. Вместо множества сабагентов-ревьюеров он использует более короткие промпты прямо в сессии. В локальных сессиях новая версия артефакта, опубликованная в другом месте, не запускает ход. Claude узнаёт о ней из следующего результата инструмента Artifact. Self-hosted раннеры пропускают репозиторий только для чтения, если git-хостинг отказал в доступе при проверке, и не роняют из-за этого старт сессии.
Установки через Bedrock, Vertex и Foundry, а также установки с отключённой телеметрией получили по умолчанию MCP-клиент v2. С серверами, к которым подключаются напрямую по HTTP, он согласует протокол MCP версии 2026-07-28. У остальных установок так уже было. Вернуть прежнее поведение можно через MCP_SDK_GENERATION=v1 или MCP_PROTOCOL_NEGOTIATION=legacy. Позже, в версии 2.1.302, исправили сбой с этим протоколом. Серверы, которые согласовывают версию 2026-07-28, но не передают resultType, ttlMs или cacheScope, раньше показывались без инструментов, или у них не проходил ни один вызов.
Дальше
Cowork и чат съезжаются в одного Claude, Видео
Закрыли ноутбук, а Claude дописывает отданный ему отчёт и переспрашивает, если что-то непонятно. Cowork и чат сводят в один продукт, раскатка на Pro и Max идёт в ближайшие недели.
Читайте также
- Claude Code 2.1.275 тянет навыки из claude.ai в терминал
- В проекте без CLAUDE.md Claude Code 2.1.277 читает AGENTS.md
- Шлюз узнает, какой агент Claude Code прислал запрос
- Мультиплеера в проектах Claude Code «пока нет»
- Claude Code на Pro по умолчанию работает на Haiku 5.5
- Claude Code отказывается воссоздавать чужие игры
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

