Claude Code 2.1.296 даёт субагентам сжимать контекст раньше

Если вы правите через Claude Code файлы в Windows-1252, Shift-JIS или GBK, проверьте последние правки: до версии 2.1.296 инструменты Edit и NotebookEdit заменяли в таких файлах все не-ASCII символы, а сейчас такие правки отклоняются. В том же релизе на Github субагенты получили собственное окно автосжатия и могут сжимать контекст раньше основного диалога.
Коротко
- Read получил опцию allow_large и читает целый текстовый файл сверх обычного лимита за один вызов, если в контексте есть место, а лимит описаний MCP-инструментов вырос с 2 048 до 4 096 символов.
- /cost, строка статуса, --max-budget-usd и SDK считают чтение кэша Sonnet 5.5 по 0,10 доллара за миллион токенов вместо 0,20, а CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL сажает всех агентов рабочих процессов на одну модель.
- Проверка Bash автоматически одобряла часть команд с переменной BASH_ARGV0, а в Git Bash на Windows rm -rf /c/Users/<name> в режиме bypass проходил без вопроса; оба случая требуют подтверждения.
Если вы не следили: по данным Automater, предыдущая версия 2.1.295 вышла 8 октября, и главным в ней был режим onFailure: "block" для command- и HTTP-хуков, при котором сбой хука блокирует действие. Как пишет Claudeupdates, там же появилась CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS, которая ограничивает ожидание ошибок 429 и 529 в режиме автоповтора, а всего изменений в той версии было 143.
autoCompactWindow даёт субагенту сжимать контекст раньше основного диалога
Параметр autoCompactWindow можно указать во frontmatter субагента и в определениях, которые передаются через --agents. Он задаёт субагенту окно автосжатия меньше, чем у основного разговора, и сжатие у него срабатывает раньше. Субагент, который долго разбирает логи, начнёт сворачивать свою переписку, не дожидаясь лимита главной сессии.
Рядом появилась переменная CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL. Она сажает всех агентов рабочих процессов на одну модель, остальные субагенты при этом работают на своих. Флаг --debug начал называть нераспознанные поля во frontmatter пользовательских агентов и подсказывать вероятную опечатку.
Ещё несколько починок касаются агентов. Возобновлённым субагентам, чью работу прервало завершение сессии, сообщали, будто пользователь отклонил вызов инструмента. Workflow-скрипты молча обрезали результаты и параметры агентов с вложенностью глубже примерно 20 000 уровней, а инструмент Workflow не принимал скрипты с переводами строк CRLF, например выгруженные на Windows.
Read читает большие файлы целиком, а лимит описаний MCP вырос до 4 096 символов
У инструмента Read появилась опция allow_large. С ней Claude может прочитать текстовый файл сверх обычных ограничений по размеру одним вызовом, когда ему нужен весь файл и в контексте хватает места. Лимит по умолчанию на описания MCP-инструментов, которые отправляются заранее, и на инструкции MCP-серверов вырос с 2 048 до 4 096 символов.
Пересчитали и деньги. /cost, строка статуса, --max-budget-usd и стоимость в SDK оценивают чтение кэша Sonnet 5.5 в 0,10 доллара за миллион токенов, раньше было 0,20. Тем, кто часто видит перегрузку, пригодится CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS: переменная задаёт более длинную максимальную задержку при повторе запроса, получившего ошибку 529.
Поправили и запуск MCP-серверов. Headless-сессии после смены каталога или перезагрузки плагинов запускали сервер из .mcp.json или плагина, отключённый для этой папки. На Windows stdio-серверы при выходе убивались принудительно; сейчас сначала закрывается stdin, а дерево процессов завершается, только если сервер работает дольше 300 мс.
Edit отказывается править файлы не в UTF-8, а PowerShell-команды проверяются до 32 КБ
Edit и NotebookEdit заменяли все не-ASCII символы в файлах, которые не записаны в валидном UTF-8, например в Windows-1252, Shift-JIS или GBK. Такие правки отныне отклоняются.
В проверке разрешений Bash команды, которые присваивают значение переменной BASH_ARGV0 и затем её используют, иногда одобрялись автоматически, а сейчас требуют подтверждения. На Windows rm -rf /c/Users/<name> в Git Bash проходил в режиме bypass permissions без вопроса. PowerShell-команды длиннее примерно 1 КБ, наоборот, всегда просили разрешения; правила allow и распознавание команд только для чтения действуют до 32 КБ.
Для администраторов поправили управляемые хуки. PreToolUse-хук из managed settings, отклонявший вызов с "continue": false, и управляемые prompt-хуки отказывали в вызове, но не завершали ход; в PostToolUse-хуках в части сессий не применялся updatedMCPToolOutput. Заодно исправлена регрессия из 2.1.295: сохранённый вход через шлюз Claude apps игнорировался, если forceLoginMethod указывал на шлюз без forceLoginGatewayUrl.
Почему субагенту нужно своё окно сжатия?
В документации Claude Code сказано, что субагент ведёт исследование в собственном контекстном окне: крупные чтения файлов остаются у него, а в основной контекст возвращаются только сводка и небольшой блок метаданных. Там же описано, что после сжатия Claude Code перечитывает до пяти недавно прочитанных или изменённых файлов, а файл больше 5 000 токенов возвращается только ссылкой на путь.
Howaiworks описывает контекстное окно как конечный буфер, где лежат все запросы, ответы, прочитанные файлы и вывод инструментов. Когда разговор подходит к пределу, Claude Code, по тем же данным, пишет сводку прежних шагов и решений и подменяет ею старые сообщения. Представьте рабочий стол, с которого старые бумаги убирают в одну папку с пометками. Сжатие идёт с потерями: точная строка ошибки из начала сессии, как пишет Howaiworks, может не пережить пересказ.
Журнал изменений не объясняет, когда Read сочтёт, что в контексте есть место
По данным Howaiworks, ошибка «Autocompact is thrashing» почти всегда возникает из-за одного крупного объекта, который раз за разом попадает в контекст, и большой файл советуют читать кусками. allow_large, напротив, читает файл целиком за один вызов, а условие «если в контексте есть место» журнал изменений не расшифровывает. Странно, что там не описан и формат значения autoCompactWindow.
Что пока неизвестно про autoCompactWindow
Журнал изменений не называет ни значения autoCompactWindow по умолчанию, ни единиц, в которых его задавать. Открытым остаётся и вопрос, какой запас контекста Claude сочтёт достаточным, чтобы включить allow_large. Дата следующей версии Claude Code не называется.
Читайте также
- В Claude Code 2.1.295 упавший хук может блокировать действие
- Claude Code 2.1.292 ставит плагин вместе с маркетплейсом
- Claude Code 2.1.290 подсказывает модам, кто просит доступ
- В Claude Code появился агент, который читает вывод за вас
- Claude Code 2.1.288 вернёт промпт, стёртый по Ctrl+C
- На модах Claude Code Anthropic собрала /diff и AGENTS.md
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
