31 марта 2026-го кто-то в Anthropic забыл дописать одну строку — *.map — в .npmignore. В результате в npm-пакет @anthropic-ai/claude-code уехали source maps, и около 512 тысяч строк TypeScript, которые должны были остаться за кадром, оказались в node_modules у всех, кто в тот день обновился. Дальше — по классике жанра: пакет распаковали, и ленту завалило постами в духе «я прочитал исходники Claude Code, вот секретные суперсилы». Новость, которую мы разбираем, — пересказ одного из таких постов (André Figueira, BuildingBetter).
Я полез проверять руками, потому что чутьё подсказывало неладное. И оно не подвело: добрая половина «недокументированных суперсил» — это либо ровно то, что лежит в официальной документации Claude Code, либо пример, который в опубликованном виде попросту не запустится. Но вторая половина — честно интересная, и она неплохо показывает, во что Anthropic тихо превращает свой CLI. Давайте по порядку, с трезвой головой.
Сначала — про сам «слив», которого в новости нет
Это важный контекст, который пересказы почему-то теряют. Никакой хакер ничего не взламывал. Source maps — это служебные файлы, сопоставляющие минифицированный бандл с исходным TypeScript; их случайно не исключили из публикации. То есть Anthropic своими руками отгрузила собственные исходники в публичный реестр. Когда спохватились, сделали это неаккуратно: сначала пометили версию deprecated вместо того, чтобы по-настоящему снять её с публикации (unpublish), за что отдельно прилетело. По бандлу, кстати, видно много внутренней кухни — например, что аналитические события исторически носят префикс tengu_ (Tengu — один из внутренних кодовых неймов модели).
Юридически и этически чтение «утёкших» внутренностей — зона серая: то, что файл физически лежит у вас на диске, ещё не значит, что вам полагалось в него смотреть. Но техническая суть от этого никуда не девается, так что смотрим на неё прямо.
Главная правда: хуки — это программируемый middleware
Вот за что новость стоит похвалить: центральный тезис верный. Хуки Claude Code — это не «разрешить/запретить», а полноценный слой middleware между моделью и вашей системой, по духу ближе к CI/CD-пайплайну, чем к простому блокировщику.
Базовый механизм такой: на каждое событие (перед вызовом инструмента, после, при старте сессии и т.д.) Claude Code запускает ваш скрипт, передаёт ему JSON на stdin, а затем слушает две вещи — код возврата и JSON на stdout. Код возврата 2 блокирует операцию. А вот JSON на stdout — это и есть та самая «суперсила»: через поле hookSpecificOutput хук вмешивается в поведение модели в реальном времени.
Что реально умеет хук PreToolUse (и всё это — из официального референса, а не из «секретов»):
⚙️ permissionDecision — allow / deny / ask: программно одобрить, заблокировать или эскалировать на пользователя, минуя обычный запрос.
⚙️ permissionDecisionReason — текст причины, который показывается в интерфейсе.
⚙️ updatedInput — переписать аргументы инструмента до выполнения. Да, можно тихо подменить команду.
⚙️ additionalContext — впрыснуть текст прямо в контекст разговора.
Канонический пример из новости — хук, который дописывает --dry-run к любому git push: Claude думает, что выполняет git push origin main, а ваш скрипт по дороге превращает это в git push origin main --dry-run. Идея отличная. Но вот нюанс, на котором я притормозил: в том виде, в каком пример гуляет по постам, он, скорее всего, не сработает. Скрипт возвращает только {"updatedInput": {...}}. А официальная документация прямым текстом требует: при использовании updatedInput нужно одновременно отдавать permissionDecision: "allow", иначе подмена не применится так, как вы ждёте. Мелочь? Для копипасты «как есть» — вовсе нет. Именно из-за таких мелочей оно «у автора работает, а у меня молча не работает».
Дальше — пара паттернов, которые в официальном референсе я не нашёл, поэтому помечаю их честно как «со слов разбора исходников, проверяйте на своей версии»:
🧪 asyncRewake: true — хук бежит в фоне и не тормозит «счастливый путь», но если выходит с кодом 2 — будит модель и блокирует операцию. По сути, неблокирующая проверка, которая становится блокирующей только когда что-то пошло не так. Идеально под фоновый сканер секретов: грепаете записанные файлы на password|secret|api_key, нашли — exit 2, не нашли — вы даже не заметили, что скрипт отрабатывал.
🧪 once: true и async: true — выполнить хук ровно один раз (и самоудалиться) либо запустить в фоне без блокировки. Удобно для one-time setup и для аудита команд в .jsonl без добавления задержки.
Если убрать маркетинг, вырисовывается честная и мощная картина: вы пишете собственный классификатор разрешений на голом bash + jq. Авто---dry-run на пуши, блокировка rm -rf / и chmod 777, скан секретов на каждую запись файла, инъекция git-контекста (ветка, число незакоммиченных файлов) в начало каждой сессии — всё это собирается из перечисленного выше.
А теперь холодный душ: «секретного» тут меньше, чем обещают
Тон оригинала — «вам никто не сказал, как заставить хуки отвечать». Сказали. Поля permissionDecision, permissionDecisionReason, updatedInput, additionalContext, сам формат hookSpecificOutput, ветка с PermissionRequest и decision.behavior— всё это лежит в официальном Hooks reference и в доках Agent SDK. То есть «недокументированные суперсилы» по большей части задокументированы. Это не делает их бесполезными — наоборот: значит, их можно спокойно тащить в прод, не боясь, что завтра выпилят. Просто слово «секретные» здесь — это упаковка, а не факт.
«Агент, который учится»: что под этим на самом деле
Второй громкий тезис новости — агенты с постоянной памятью, которые «учатся на прошлых сессиях» и «запоминают ваши предпочтения без всякого дообучения». Здесь всё честнее, чем с хуками, но дьявол — в формулировках, и для технической аудитории это принципиально.
Что действительно есть:
📌 Поле memory во фронтматтере сабагента (user / project / local) — реально, приехало в Claude Code v2.1.33 ещё в феврале 2026. Каждому сабагенту даётся персональный каталог (~/.claude/agent-memory/<name>/ или проектный), первые 200 строк его MEMORY.md подкладываются в системный промпт при каждом вызове, а инструменты Read/Write/Edit включаются автоматически, чтобы агент мог сам вести свои заметки. Так и собирается «ревьюер, который помнит типовые ошибки проекта».
📌 Auto-memory — это уже про основную сессию: Claude пишет заметки сам для себя (не путать с CLAUDE.md, который пишете вы) в ~/.claude/projects/<project>/memory/. Отключается переменной окружения CLAUDE_CODE_DISABLE_AUTO_MEMORY.
📌 AutoDream — да, это реальная фоновая консолидация. В простое модель проходится по накопленным заметкам и прунит устаревшее, склеивает дубли, переводит относительные даты в абсолютные, освежает протухший контекст. Аналогия со сном (REM-фаза «раскладывает» дневной опыт по полочкам) — ровно отсюда название.
А теперь главное уточнение, которое теряется в пересказах: никакого «обучения» в смысле изменения весов модели тут нет. Это инженерия контекста — по сути, RAG поверх markdown-файлов. Claude не дообучается на вас; он ведёт и оптимизирует заметки, которые потом сам себе подкладывает в контекст. Фраза «запоминает без дообучения» технически верна, но звучит как магия, а под капотом — аккуратная работа с файлами. Для нас, инженеров, это даже лучше: всё прозрачно, лежит на диске, версионируется в git и не требует ничьих GPU.
И ещё две оговорки, которых в новости нет:
🧱 Память сабагентов изолирована. MEMORY.md вашего код-ревьюера не виден агенту-секьюрити-аудитору, и наоборот. Знание копится внутри агента, а не между агентами.
🧱 200 строк — это потолок инъекции на старте. Память устроена как индекс плюс файлы по темам, а не как бездонный мозг.
YOLO Classifier: разрешения на простом английском
Симпатичная находка: системой авто-одобрений в auto-режиме рулит классификатор, который внутри (судя по исходникам) зовётся yoloClassifier.ts. Сам факт такого классификатора подтверждается и со стороны — это AI-прослойка, которая в реальном времени решает, безопасно ли действие, чтобы не дёргать вас на каждый чих. Интересна деталь из разбора: в autoMode рядом со списками allow и soft_deny можно положить массив environment — и это не паттерны, а строки на обычном английском вроде «это локальная dev-машина без доступа к проду» или «тесты гонять безопасно, у них отдельная БД». Классификатор читает этот «брифинг» и учитывает его в спорных случаях.
Независимого подтверждения именно environment-массиву я не нашёл (он фигурирует только в разборе исходников), так что проверяйте на своей версии. Но если правда — это красивый сдвиг: вы конфигурируете политику безопасности не регэкспами, а описанием окружения на естественном языке. Подкупающе и слегка тревожно одновременно.
Где начинается зона риска
Отдельно отмечу то, что даже автор честно помечает как нестабильное, и то, что я не смог подтвердить по докам:
🚩 criticalSystemReminder_EXPERIMENTAL — короткое напоминание, переподставляемое каждый ход и переживающее компактацию контекста. В самом названии стоит EXPERIMENTAL: инженеры Anthropic считают его нестабильным. Работает сегодня — может исчезнуть завтра.
🚩 Часть фронтматтер-полей (omitClaudeMd, requiredMcpServers, скилловые agent, disable-model-invocation, shell) в официальном списке полей сабагентов я не вижу — там перечислены model, effort, hooks, memory, color, background, isolation и т.п. Возможно, что-то из «лишнего» — действительно недокументированное, а возможно — неверно прочитанный или уже переименованный код.
Золотое правило: «нашли в утёкших исходниках» ≠ «поддерживается, стабильно и не сломается на следующем минорном релизе».
Что в сухом остатке
Настоящая история — не про «секретные суперсилы», а про то, что Claude Code тихо перестал быть умным автокомплитом и стал программируемой средой: хуки — это middleware, память — это stateful-агенты, классификатор — это политика на естественном языке. Вот это действительно достойно внимания, и я ставлю на то, что конкуренты будут это копировать.
Но для меня эта новость — ещё и хрестоматийный пример «испорченного телефона» в техномедиа. Реальный казус (забытая строка в .npmignore) → в целом корректный, но кликбейтно упакованный разбор → русскоязычный пересказ, который выкинул контекст слива и усилил мотивы «секретного» и «само-обучающегося». На выходе «задокументированное поле хука» превращается в «скрытую суперсилу», а «консолидация markdown-заметок» — в «ИИ втайне изучает вас». Проверяйте первоисточники — особенно когда речь про инструмент, который потом сам же будет выполнять команды у вас в терминале.
Что я реально внедрил бы уже сегодня (и это безопасно, потому что задокументировано):
🛠️ Хуки PreToolUse для блокировки опасных команд и PostToolUse-сканер секретов на запись файлов.
🛠️ Память сабагентов (memory: project) для повторяющихся задач вроде ревью — пусть копит знание о кодовой базе.
🛠️ SessionStart-хук, впрыскивающий git-контекст, чтобы Claude с первого сообщения знал ветку и состояние дерева.
А чего бы не делал: не строил бы ничего критичного на полях с EXPERIMENTAL в имени и не копипастил бы примеры из вирусных постов, не сверившись с официальным референсом. Особенно тот, что про --dry-run.
Источники
Первоисточник новости:
📰 André Figueira, «I Read the Claude Code Source Code. Here's Everything You Can Configure That the Docs Don't Tell You» (BuildingBetter) — https://buildingbetter.tech/p/i-read-the-claude-code-source-code
📰 Полный русскоязычный пересказ (Telegraph) — https://telegra.ph/Claude-Code-chto-skryvaet-ishodnyj-kod-Nedokumentirovannye-supersily-o-kotoryh-molchat-manualy-05-29
Что я использовал для проверки и уточнений:
📚 Официальный Hooks reference Claude Code — https://code.claude.com/docs/en/hooks
📚 Хуки в Agent SDK (про обязательный permissionDecision: "allow" вместе с updatedInput) — https://platform.claude.com/docs/en/agent-sdk/hooks
📚 Документация по сабагентам и полям фронтматтера — https://code.claude.com/docs/en/sub-agents
📚 Память сабагентов (v2.1.33, февраль 2026) — https://github.com/shanraisshan/claude-code-best-practice/blob/main/reports/claude-agent-memory.md
📚 Что такое AutoDream / permission-классификатор — https://www.mindstudio.ai/blog/what-is-claude-code-autodream-memory-consolidation
📰 Контекст самого слива — VentureBeat, «Claude Code's source code appears to have leaked» — https://venturebeat.com/technology/claude-codes-source-code-appears-to-have-leaked-heres-what-we-know