Claude Code 2.1.299 успевает сжать диалог до сгорания кэша

Если оставить в терминале разговор на 200 тысяч токенов и уйти на час, Claude Code 2.1.299 сам сожмёт его примерно на 54-й минуте, пока часовой кэш промптов ещё жив. Так сказано в списке изменений релиза на Github, где сжатие по простою стоит рядом с длинным перечнем исправлений безопасности, модов и MCP.
Коротко
- Сжатие по простою срабатывает на диалогах от 200K токенов: порог меняет CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS, строка "idleCompaction": false в settings.json его отключает, и обе настройки требуют v2.1.290 или новее.
- Релиз закрывает дыры в песочнице: команда могла писать в папку --plugin-dir, чей код Claude Code перезагружает и запускает вне песочницы, а на macOS обходить запреты через симлинки.
- В заметках не объясняется, почему выбраны именно 54 минуты, и сжатие описано только для терминала; про VS Code, десктоп и сессии с пятиминутным кэшем релиз ничего не говорит.
Срок жизни кэша Claude Code постепенно отдавал в руки пользователей. По данным Pondero, версия 2.1.108 добавила переменные ENABLE_PROMPT_CACHING_1H и FORCE_PROMPT_CACHING_5M, а вместе с ними команду /recap для возвращения в сессию после перерыва. В 2.1.243 появились настройки promptCacheTtl и subagentPromptCacheTtl, которые принимают только 5m и 1h. Саму идею раньше реализовал сторонний инструмент: по данным GitHub, claude-cache 0.1.0 от 2026-10-07 сжимал простаивающую сессию с часовым кэшем через 55 минут.
Claude Code сжимает диалог от 200K токенов после 54 минут простоя
Новая функция работает в терминале. Если разговор перевалил за 200K токенов и вы не пишете в него примерно 54 минуты, Claude Code сжимает его до того, как истечёт часовой кэш промптов. Цель в релизе названа прямо: чтобы следующее сообщение не обрабатывало всю историю заново.
Порог настраивается. Переменная CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS меняет минимум в 200K токенов, а "idleCompaction": false в settings.json выключает сжатие по простою целиком. Обе настройки требуют v2.1.290 или новее, так что версию стоит проверить заранее, прежде чем прописывать их в конфиг.
В том же релизе есть соседняя экономия контекста. С переменной CLAUDE_CODE_DISABLE_FILE_MENTIONS Claude при @-упоминании получает только путь к файлу и читает его своими инструментами, без вставки содержимого в промпт. PDF, упомянутые через @, тоже облегчили: их байты не хранятся в транскрипте сессии, что снижает расход памяти и диска.
Команда из песочницы могла писать в папку, чей код запускается вне песочницы
Одна из закрытых дыр касалась --plugin-dir. Команда оболочки в песочнице могла записать файлы в эту папку, а Claude Code перезагружает код оттуда и выполняет его уже вне песочницы. Рядом закрыты ещё две лазейки: на macOS команда могла прочитать или изменить запрещённый путь по его настоящему адресу, если путь проходил через симлинк, а правила allowRead и allowWrite не перепроверялись после подмены стартовой папки симлинком.
Ужесточились и правила для MCP. Разрешение mcp__a раньше пропускало и сервер с именем a__b или a_, а в 2.1.299 правило касается только названного сервера, и для всех его инструментов нужно писать mcp__<server>__* с полным нормализованным именем. Запросы к прокси коннекторов claude.ai и к MCP-серверам Anthropic перестали следовать HTTP-редиректам.
Ещё одна правка касается сторонних шлюзов: запросы к Anthropic за флагами, при запуске, в быстром режиме, за профилем и с отзывами несли API-ключ, настроенный для шлюза в ANTHROPIC_BASE_URL. Команда возобновления, которую Claude Code печатает при выходе, называет сессию по ID, чтобы ничего из имени сессии не выполнилось при вставке строки.
Моды получили доступ к вложениям промпта и данным входа
Для модов, установленных через управляемые настройки, появились два новых источника данных. Хук prompt.submit читает байты картинки или документа из $.prompt.media, а $.session.identity() сообщает, как выполнен вход в сессию, и показывает организацию и email, если управляемый forceLoginOrgUUID перечисляет эту организацию.
Остальным модам тоже досталось. Text получил size, weight, mono и tabular, а bold объявлен устаревшим в пользу weight; Box научился именованным отступам от xs до xl. Хук turn.start слышит ходы субагентов и тиммейтов, их отличает поле e.agentId. Исправлен мод, который отправлял промпт в конце каждого хода и тем самым продлевал headless-запуск сверх --max-turns и --max-budget-usd.
Потоки через свой ANTHROPIC_BASE_URL ждут данных 300 секунд вместо 180
Тем, кто ходит к модели через собственный шлюз, релиз чинит две неприятности. Потоки через кастомный ANTHROPIC_BASE_URL обрывались после 180 секунд без данных, а в 2.1.299 ждут 300 секунд независимо от того, загружены ли флаги. Сессии на модели со специфичным для шлюза именем заканчивались ошибкой «Prompt is too long · automatic compaction failed» около 200K токенов вместо отправки запроса.
На Windows хуки PreToolUse и PermissionRequest без указанной оболочки пропускали вызов, если не установлен Git for Windows; сломавшаяся проверка в новой версии блокирует вызов. А /usage, предупреждение о близком лимите и строка статуса иногда показывали больше 100% использования, что тоже исправлено.
Сжатие тоже сбрасывает кэш, но пересобирать приходится короткую выжимку
В документации Claude Code объясняется, что модель ничего не помнит между запросами, поэтому каждое сообщение заново отправляет системный промпт, контекст проекта, все прошлые реплики и результаты инструментов. Кэш промптов узнаёт совпадающее начало этой посылки и полностью обрабатывает только изменившийся хвост. Совпадение должно быть точным: правка где угодно в префиксе пересчитывает всё, что идёт после неё.
Представьте копицентр, который час держит ваш отсканированный том. Принесли следующую страницу вовремя, и сканируют только её; опоздали, и весь том снова идёт в сканер. По данным Skillforge, чтение из кэша стоит около десятой части обычной цены входных токенов, так что опоздание бьёт и по времени ответа, и по деньгам.
Сжатие кэш тоже сбрасывает: /compact меняет слой контекста проекта, и префикс строится заново, как при смене модели, уровня effort, подключении MCP-сервера или обновлении Claude Code. Разница в объёме. Если сжать диалог до истечения часа, пересобирать придётся короткую выжимку, а не 200 тысяч токенов истории.
Похоже, функция рассчитана прежде всего на подписчиков. Как пишет Claude Hub, часовой кэш по умолчанию получает основной диалог подписки в пределах лимитов плана, а API-ключи и облачные провайдеры живут на пятиминутном, и запись часового кэша оплачивается дороже. В релизе нет ни объяснения выбора 54 минут, ни слова о том, какие детали из 200K токенов истории теряются при таком сжатии.
Сжатие по простою за пределами терминала
Пока сжатие по простою описано только для терминала. Появится ли оно в расширении для VS Code, десктопном приложении и облачных сессиях, в списке изменений не сказано, сроков тоже не называют. Открыт и вопрос о сессиях на пятиминутном кэше: порог в 54 минуты рассчитан на часовой кэш, а отдельного режима для короткого срока жизни релиз не предлагает.
Дальше
Anthropic за пять месяцев съехала с git на свою Scion
«Узкое место теперь в инфраструктуре под человеческий масштаб», пишет Anthropic: слияний в день стало больше 30 000 против около 2 500 в мае, и монорепозиторий за пять месяцев переехал с git на свою Scion. У вас git уже начинал тормозить на большом репозитории?
Читайте также
- Claude Code 2.1.296 даёт субагентам сжимать контекст раньше
- В Claude Code 2.1.295 упавший хук может блокировать действие
- Claude Code 2.1.292 ставит плагин вместе с маркетплейсом
- Claude Code 2.1.290 подсказывает модам, кто просит доступ
- В Claude Code появился агент, который читает вывод за вас
- Claude Code 2.1.288 вернёт промпт, стёртый по Ctrl+C
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

