Одна фраза сожгла 20% недельного лимита Claude Code: как ограничить субагентов, которые плодят субагентов
Ограничить фан-аут субагентов в Claude Code можно тремя механиками: поставить потолки MAX_CONCURRENT и MAX_TOTAL_SUBTASKS, убрать инструмент Agent из allowlist субагентов (чтобы они не плодили детей) и не давать deep research стартовать по умолчанию. Правила в CLAUDE.md - подсказка, а не забор: модель их обходит.
Одна фраза "проресёрчь тему" в Claude Code запускает сотню субагентов и жжёт недельный лимит за минуты. Разбираем, почему агент игнорирует правила из CLAUDE.md, и как ограничить фан-аут настройками.

Читаю на днях пост знакомого: он кинул своему агенту невинную фразу в духе "хорошенько проресёрчь эту тематику". И агент решил, что это команда к бою. Заспаунил сотню субагентов, каждый ушёл молотить свою веточку ресёрча, и за несколько минут это сожрало 20% его недельного лимита. Причём человек нигде не выбирал никакой "deep research" руками - он просто попросил поресёрчить. А в CLAUDE.md у него были правила роутинга, которые агент бодро проигнорил.
Я эту историю читал и кивал, потому что сам ходил по этим граблям. Claude Code реально умеет из одной вежливой просьбы развернуть облако агентов, которые плодят агентов. И если не поставить заборы заранее, лимит утекает не "постепенно", а рывком, за минуты. Давайте разберём по-человечески: почему так выходит, сколько это стоит в токенах и как ограничить фан-аут, чтобы одна фраза не пускала весь недельный бюджет по ветру.
Почему одна фраза запускает сотню агентов в Claude Code
Фраза "проресёрчь тему" запускает лавину, потому что у агента есть инструмент Agent (он же Task), которым он делегирует работу субагентам, а deep research по своей природе - это широкий веер поиска. Модель сама решает разбить задачу на десятки веток и на каждую посадить отдельного субагента в собственном контексте. Явной команды "запусти 100 агентов" вы не давали - вы дали намерение, а разбивку модель додумала.
Субагент в Claude Code - это делегированный работник внутри одной сессии: он уходит делать побочную задачу в своём контексте и возвращает summary. Штука полезная, когда побочка иначе завалила бы основную ветку логами и выдачей поиска. Проблема начинается, когда субагенты сами получают доступ к инструменту Agent и начинают спаунить своих детей. Это уже известная беда: в трекере Claude Code есть issue про то, что general-purpose субагенты рекурсивно плодят дочерних агентов, и это даёт экспоненциальный фан-аут с жёстким прожигом токенов (anthropics/claude-code #68110).
То есть механика простая и злая. Вы попросили поресёрчить. Оркестратор нарезал десять направлений. Каждое направление, если ему не запретить, может нарезать ещё несколько. Один "хорошенько" - и вот уже сотня параллельных сессий жрёт вашу подписку.
Сколько лимита реально съедает фан-аут субагентов
Много. Каждый субагент работает в своём отдельном контекстном окне, поэтому расход не складывается линейно с одним потоком, а множится. Anthropic прямо пишет, что Agent Teams (несколько инстансов Claude Code разом, релиз февраля 2026) могут жечь примерно в 7 раз больше токенов, чем обычная сессия, когда работники крутятся параллельно (Claude Help Center). Сотня субагентов на дорогой модели - это не "чуть подороже", это другой порядок трат.
Теперь про то, во что этот расход упирается. С августа 2025 поверх пятичасовых окон висят недельные капы: один общий недельный лимит на все модели плюс отдельный недельный лимит на Sonnet (Claude Help Center). Пятичасовые лимиты на планах Pro и Max с 6 мая 2026 удвоили, но недельный потолок никуда не делся - и именно в него вы влетаете, когда фан-аут прожигает 20% за минуты. Пятичасовое окно ещё как-то переживёшь, а вот выжженный недельный лимит - это дни без нормальной работы.
Отдельная ловушка - dynamic workflows: скрипт раскидывает работу на десятки и сотни субагентов, каждый со своими вызовами модели, и по докам они жрут заметно больше токенов, чем та же задача в обычном диалоге (Claude Code Docs). Инструмент мощный, но включать его "на всякий случай" - прямой путь к пустому баку.
Почему агент игнорирует правила роутинга из CLAUDE.md
Агент игнорирует правила роутинга не из вредности, а потому что часть субагентов до вашего CLAUDE.md просто не доходит. Встроенные Explore и Plan намеренно пропускают CLAUDE.md ради скорости и дешевизны ресёрча, поэтому написанное там правило "делегируй тяжёлое на другую модель" до этих субагентов физически не долетает. Чтобы правило сработало на делегировании, его надо повторить прямо в промпте, которым вы отдаёте задачу (Claude Code Docs).
И это ещё оптимистичный сценарий. Есть баг посвежее: поля tools и disallowedTools, которыми субагенту режут инструменты, не энфорсятся для дочерних процессов - субагент всё равно видит запрещённые инструменты и может их дёргать (anthropics/claude-agent-sdk-typescript #172). Так что если вы понадеялись только на текстовые правила и на denylist, а под капотом есть дырка, агент честно сделает не то, что вы просили. Мораль: CLAUDE.md - это не забор, это табличка "просьба не ходить". Забор надо строить механикой.
Я про распухший CLAUDE.md, который агент перестаёт слушаться, уже писал отдельно - как держать контекст для агента ссылками, а не простынёй. Тут тот же корень: чем больше правил вы навалили текстом, тем меньше шансов, что критичное из них сработает в нужный момент.
Как ограничить фан-аут субагентов в Claude Code
Ограничить фан-аут можно тремя механиками: жёсткими лимитами на число субагентов, урезанием инструментов у субагента и запретом на deep research по умолчанию. Текстовые уговоры в CLAUDE.md оставляем как подсказку, но полагаемся на настройки, потому что их модель обойти не может.
Первое - потолки на количество. У оркестрации есть параметры, которые кэпают параллелизм напрямую: MAX_CONCURRENT ограничивает, сколько субагентов крутится одновременно, а MAX_TOTAL_SUBTASKS - сколько модель вообще может поставить в очередь за один вызов (ClaudeKit Guide). Поставили разумный потолок - и "сотня агентов" превращается в очередь, где одновременно живёт горстка.
Второе - режем субагенту инструменты. У кастомного субагента есть поле tools (allowlist) и disallowedTools (denylist): denylist вычитается первым, потом allowlist разрешает остаток (Claude Code Docs). Если убрать инструмент Agent из allowlist субагента, он физически не сможет спаунить своих детей - рекурсивный веер обрубается на первом уровне. Именно это и предлагают как фикс в issue про экспоненциальный фан-аут: запретить субагентам доступ к Agent, добавить лимит глубины и общий кап на число агентов за ход. Только помните про баг с неэнфорсом (#172) и не стройте защиту на одном denylist - allowlist надёжнее.
Третье - не давать deep research стартовать самому. Раз модель рвётся запустить ресёрч из любого "проресёрчь", то и формулировки, и настройки должны это гасить: явно просить "без субагентов" или "в один поток", когда веер не нужен, и включать workflows и teams осознанно под конкретную большую задачу, а не держать их фоном.
Из практики скажу так: у меня расход по подписке стал управляемым ровно тогда, когда я перестал верить уговорам в конфиге и начал резать возможности. Про то, как скиллы Claude Code съедали мой недельный лимит и как я стал тратить в разы меньше, есть отдельный разбор с цифрами - там та же логика, только про скиллы, а не про субагентов. А про то, что бывает, когда агенту вообще ничего не запрещаешь, - история, как он одной командой снёс мне папку проекта.
Короткий чеклист, чтобы одна фраза не спалила лимит
Собираю в одну кучку, чтобы было под рукой:
- Поставить потолки MAX_CONCURRENT и MAX_TOTAL_SUBTASKS - чтобы фан-аут упирался в очередь, а не разлетался вширь.
- Убрать инструмент Agent из allowlist субагентов, которым не положено плодить детей.
- Не полагаться на denylist в одиночку - помним про неэнфорс дочерних процессов, строим на allowlist.
- Критичные правила роутинга дублировать в промпт делегирования, а не только в CLAUDE.md, - Explore и Plan его не читают.
- Deep research и workflows включать осознанно под задачу, а не оставлять как поведение по умолчанию.
Забор из настроек модель не перепрыгнет, а вот вежливую просьбу в конфиге - запросто. Так что если у вас есть агент, который любит из "проресёрчь" развернуть армию, - идите резать возможности, а не дописывать ещё один абзац правил. Проверено: помогает лучше, чем очередное "пожалуйста, не надо" в CLAUDE.md.
Частые вопросы
Почему Claude Code запускает deep research, хотя я его не выбирал?
Потому что широкий ресёрч - это разбивка задачи на десятки веток с субагентами, и модель додумывает её из любого намерения вроде "проресёрчь тему". Явной команды не нужно: вы дали цель, а веер модель развернула сама.
Дублируются ли токены при параллельных субагентах?
Да. Каждый субагент работает в своём контекстном окне, поэтому расход множится, а не складывается линейно. Anthropic оценивает параллельные Agent Teams примерно в 7 раз дороже обычной сессии (данные Claude Help Center, 2026).
Можно ли запретить субагенту создавать своих субагентов?
Да - уберите инструмент Agent из allowlist субагента, тогда он физически не сможет спаунить детей. На denylist в одиночку не полагайтесь: есть баг с неэнфорсом ограничений для дочерних процессов.