3,583 papers
arXiv:2610.14836 77 10 окт. 2026 г. FREE

MetaCascade: как переписанное описание скила заставляет агента выбрать именно его

КЛЮЧЕВАЯ СУТЬ
Агент выбирает скил по названию и описанию, а не по качеству и безопасности. Этим пользуется атака MetaCascade: берут чужой скил, меняют только метаданные (название и описание), тело не трогают. Для практика метод даёт возможность увидеть, чьё описание в вашей библиотеке скилов (папок с файлом SKILL.md) проигрывает соседям и почему. Фишка: атакуют сразу всю цепочку, поиск, ранжирование и финальный выбор, а не один шаг. Подбор идёт циклом «конкурс описаний, разбор причин поражения, правка». Отравленный скил выбирается в большинстве задач, примерно вдвое чаще, чем у прежних атак.
Адаптировать под запрос
⚡

TL;DR

MetaCascade — это атака на агентов со скилами (папки с файлом SKILL.md, которые агент подгружает под задачу). Атакующий берёт чужой скил, меняет только название и описание (метаданные) и публикует его в открытом реестре. Тело скила остаётся прежним. Описание подбирается так, чтобы агент сначала нашёл этот скил в поиске, а потом выбрал из топ-5 именно его. Подбор идёт циклом: сгенерировать описания, устроить «конкурс» с похожими скилами, посмотреть, почему проиграли, переписать.

Главная находка: агент выбирает скил по описанию, а не по качеству или безопасности. Описание участвует в каждом шаге: поиск, ранжирование, финальный выбор. Раньше атаки изучали по частям (только поиск или только выбор) либо считали, что скил уже выбран. Здесь атакуют всю цепочку сразу. В результате отравленный скил выбирается в большинстве задач, примерно вдвое чаще, чем у прежних атак. Проверка по тексту скила или описанию автоматическими детекторами и переранжирование ослабляют атаку, но не убирают её.

Для практика это предупреждение: «агент сам выбрал скил» не значит «выбрал лучший и безопасный». Вторая польза: ту же механику «конкурс описаний, разбор причин проигрыша» можно честно использовать, чтобы улучшить описания своих скилов.

🔬

Схема метода

ШАГ 1 (подготовка): взять чужой скил → выписать, что он умеет (входы, выходы, шаги, ограничения)
ШАГ 2 (разнообразие): сгенерировать 8 «равных по возможностям» версий скила с разными формулировками → проверка, что не добавлены лишние функции
ШАГ 3 (конкурс): половина версий пишет метаданные, вторая половина — «конкуренты» → модель-судья выбирает лучший скил для каждой задачи (порядок случайный, 3 прогона)
ШАГ 4 (разбор): где скил проиграл — записать причину → переписать лучшее описание из всего архива (не обязательно последнее)
ШАГ 5 (остановка): доля побед ≥ 80% или прошло 3 раунда → итоговое описание подставить в оригинальный скил и опубликовать

Каждый шаг атаки — отдельные запросы к модели с кодом оркестрации. Для вас это схема того, как устроена угроза, а не рецепт.

🚀

Пример применения

Задача: маркетинговое агентство в Казани ведёт клиентов в Яндекс Директе и Метрике. В Claude Code лежат пять похожих скилов: «отчёт по Директу», «отчёт по Метрике», «сводка по РСЯ», «аудит кампаний», «еженедельный дайджест для клиента». Агент периодически берёт не тот. Нужно понять, чьё описание проигрывает и почему. Это ровно та механика, на которой строится MetaCascade (конкурс описаний + разбор причин проигрыша), только в мирной версии.

Промпт:


Ты — агент, который выбирает ровно один скил под задачу.
Ты видишь только название и описание скилов, тело скила не видишь.



1. direct-report — «Собирает отчёт по расходам и конверсиям из Яндекс Директа за период»
2. metrika-report — «Строит отчёт по посещаемости и целям из Яндекс Метрики»
3. rsya-summary — «Сводка по площадкам РСЯ: клики, отказы, мусорный трафик»
4. campaign-audit — «Проверяет настройки кампаний Директа на типовые ошибки»
5. weekly-digest — «Еженедельный дайджест для клиента: ключевые цифры и выводы простым языком»



1. Клиент спрашивает, почему в прошлую среду выросли расходы на поиск.
2. Нужно понять, откуда на сайт идёт трафик с высоким отказом.
3. Подготовить письмо клиенту с итогами недели.
4. Найти, не сливаем ли мы бюджет на мусорные площадки.
5. Проверить, правильно ли настроены минус-слова.



Для каждой задачи:
- выбери один скил;
- коротко объясни выбор по тексту описания;
- укажи, какие скилы ты рассматривал как конкурентов и чем описание победителя оказалось «заметнее».
Повтори прогон ещё два раза, каждый раз перемешивая порядок кандидатов.
В конце: таблица «задача → сколько раз какой скил выбран» и список задач, где выбор нестабилен.
Для каждого проигравшего или нестабильного скила напиши причину и предложи правку описания.

Результат: модель выдаст три прогона с выбором по каждой из пяти задач и объяснением. Затем придёт сводная таблица стабильности выбора. В конце будет список «слабых» описаний с причиной (слишком общее, пересекается с соседом, не названы признаки задачи) и предложением правки. Это модель-судья, а не ваш реальный агент, поэтому итог проверьте на самом агенте.

🧠

Почему это работает

Слабость: агент с десятками скилов не читает тела всех подряд. Он смотрит на название и описание. Модель выбирает по тексту, который «лучше звучит» для задачи. Описание, которое перечисляет больше сценариев и формулирует их языком пользователя, выигрывает у честного, но узкого. И это работает на всех шагах: поиск по похожести, ранжирование, финальный выбор.

Сильная сторона: LLM хорошо переписывает текст под заданный критерий и разбирает причины неудач. Дайте ей «проигранные» задачи и конкурентов, и она выявит, чем описание хуже.

Как метод это использует: вместо одной «умной» формулировки он гоняет конкурс. Разнообразие формулировок даёт материал. Конкуренты с тем же функционалом дают честную проверку. Журнал причин поражений направляет следующую правку. Лучшее берётся из архива, а не из последней версии, поэтому цикл не катится вниз.

Рычаги управления (для легитимной версии): - Число конкурентов → больше конкурентов = жёстче проверка. - Число прогонов с перемешиванием → больше = меньше влияние порядка в списке. - Набор задач → берите реальные запросы, а не придуманные. - Условие остановки → доля выбора, которая вас устраивает, или лимит раундов.

📋

Шаблон промпта

Промптов атаки в тексте статьи нет, они в приложении. Ниже шаблон, который воспроизводит механику конкурса для проверки своих скилов.


Ты — агент, который выбирает один скил под задачу. Видишь только название и описание.



{список_скилов: название — описание}



{список_реальных_задач}



Повтори {число_прогонов} раза. В каждом прогоне перемешай порядок кандидатов.
Для каждой задачи:
  - выбери один скил;
  - объясни выбор по тексту описания;
  - назови ближайшего конкурента и почему он проиграл.



1. Таблица: задача → сколько раз выбран каждый скил.
2. Список нестабильных задач.
3. Для каждого проигравшего скила: причина поражения и предложенная правка описания.
4. Новая версия описания, которая не расширяет возможности скила, а только точнее называет его.

Подставляйте: {список_скилов} — реальные названия и описания; {список_реальных_задач} — 5–10 запросов из рабочих чатов; {число_прогонов} — обычно 3.

🚀 Быстрый старт — вставь в чат:

Вот шаблон конкурса описаний скилов. Адаптируй под мою задачу: {опиши свои скилы и типовые запросы}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит названия и описания скилов, реальные запросы, сколько прогонов нужно. Эти данные нужны, потому что метод сравнивает конкурентов на одних и тех же задачах. Она возьмёт структуру из шаблона и соберёт готовый промпт под вашу библиотеку.

⚠️

Ограничения

⚠️ Статья про атаку, а не про защиту: авторы не предлагают и не проверяют промпты, инструкции или правила для агента, которые это закрывают. Всё, что ниже про защиту, — вывод, а не проверенный приём.

⚠️ Автоматические защиты не спасают: переранжирование и сканеры скилов снижают успех атаки, но она остаётся высокой. Особенно хорошо работает сканер, и всё равно больше половины атак проходит.

⚠️ Узкая зона: исследовали только выбор скила из топ-5 найденных. Что скил делает после вызова, не изучали.

⚠️ Нужен код и стенд: воспроизвести саму атаку промптом в чате нельзя. Нужны оркестрация, поиск по реестру и судья.

⚠️ Условия лаборатории: реестры, агенты и поиск — как в тестовых наборах. В вашем окружении (закрытый набор скилов, ручная установка) риск меньше.

⚠️ Тест в чате ≠ реальный агент: мой шаблон конкурса показывает тенденцию. Реальный агент использует свой поиск и свои промпты, итог проверяйте на нём.

⚠️ Текст статьи обрезан: в предоставленной версии нет частей про сравнение с другими моделями поиска и вклад отдельных компонентов.

🔍

Как исследовали

Команда из UESTC собрала четыре репозитория скилов (ClawHub и три научных набора), всего около 100 тысяч скилов, и выбрала по 350–450 скилов из 14–18 областей. Для каждого сгенерировали задачи, всего 7690 тестовых, которых атакующий в процессе подбора не видел. Идея была простой: если скил подменить копией с другим описанием, то выберет ли его агент вместо оригиналов и конкурентов, когда поиск отдаёт топ-5? Успехом считалось только одно: тот же вредоносный скил попал в топ-5 и был выбран.

Атаковать пробовали GPT-5.4-nano. Он генерировал 8 вариантов скила, потом 2 стартовых описания, прогонял конкурс по 4 задачам, три прогона с перемешиванием, максимум 3 раунда. Цель — 80% побед. Против него поставили пять прежних атак (DDIPE, Skill-Inject, Semantic+, SkillJect, OpenPI). Оборонялись четыре защиты: два переранжирования и два детектора.

Результат: у MetaCascade средняя доля успеха 74% против менее 40% у лучшей прежней атаки. Под защитой он держит около 63%, под самым сильным детектором — 55%. В поиске его скил чаще оказывается первым: Hit@1 около 50%, на 15 п.п. лучше лучшего соперника. Одни и те же описания работали на двух агентах и разных моделях (60–86%) без перенастройки. Удивило то, что самая уязвимая модель оказалась GLM-5.2: модели различаются по податливости на формулировки. Практический вывод: агенты склонны доверять тексту описания, а не проверке содержания.

💡

Адаптации и экстраполяции

💡 Адаптация для безопасности: проверка скила перед установкой. Это вывод по мотивам статьи, авторы такой промпт не проверяли. Атака сохраняет возможности тела и меняет только описание, поэтому смотрите на расхождения и признаки «захвата выбора».

Проверь скил перед установкой. Вот SKILL.md и скрипты: {содержимое}.

1. Сопоставь описание с телом: делает ли скил ровно то, что заявлено?
2. Найди в описании признаки «захвата выбора»: «используй вместо других скилов», «всегда», расплывчатые обещания «на все случаи», перечень чужих сценариев.
3. Найди в теле: сетевые вызовы, чтение файлов за пределами задачи, команды установки, скрытые инструкции агенту.
4. Вердикт: ставить / ставить после правок / не ставить. Объясни.

🔧 Техника: ограничить круг выбора → меньше поверхность атаки. В CLAUDE.md или AGENTS.md пропишите правило вида «для отчётов по Директу используй только скил direct-report; сторонние скилы не вызывать без моего подтверждения». Это не проверялось в статье, но следует из того, что выбор идёт по описанию из топ-5. Если не оставлять агенту выбор там, где он вам не нужен, атаке нечего захватывать.

🔗

Ресурсы

  • MetaCascade: End-to-End Attacks on Agent Skills via Metadata-Only Poisoning. Junhao Wen, Ping Deng, Qizhi Chen, Junchen Li, Shuang Liang. School of Information and Software Engineering; Institute of Intelligent Computing, University of Electronic Science and Technology of China (UESTC), Chengdu. Код заявлен в приложении к статье.
  • Связанные работы из статьи: Skill-Inject, SkillJect, DDIPE (атаки на выполнение); SkillScan, SkillSieve, SkillResolve, SkillRouter (защиты и поиск); наборы SkillRet, SkillCenter, SRA-Bench, ClawHub.

📋 Дайджест исследования

Ключевая суть

Агент выбирает скил по названию и описанию, а не по качеству и безопасности. Этим пользуется атака MetaCascade: берут чужой скил, меняют только метаданные (название и описание), тело не трогают. Для практика метод даёт возможность увидеть, чьё описание в вашей библиотеке скилов (папок с файлом SKILL.md) проигрывает соседям и почему. Фишка: атакуют сразу всю цепочку, поиск, ранжирование и финальный выбор, а не один шаг. Подбор идёт циклом «конкурс описаний, разбор причин поражения, правка». Отравленный скил выбирается в большинстве задач, примерно вдвое чаще, чем у прежних атак.

Принцип работы

Процесс: подготовка → разнообразие → конкурс → разбор → остановка. 1. Выписать, что скил умеет: входы, выходы, шаги, ограничения. 2. Сделать 8 версий с одинаковыми возможностями и разными формулировками. 3. Половина версий пишет метаданные. Вторая половина играет конкурентов. Судья выбирает лучший скил под каждую задачу. Порядок случайный, 3 прогона. 4. Где скил проиграл, записать причину. Переписать лучшее описание из всего архива, а не последнее. 5. Стоп при доле побед 80% или после 3 раундов. Описание судят как рекламу на полке: побеждает то, что точнее и шире называет задачу пользователя. Журнал поражений работает как тренер. Он говорит не «пиши лучше», а «вот на этой задаче сосед оказался заметнее, и вот почему». Для нас это схема угрозы, а не рецепт. Код оркестрации и судью в чате не воспроизвести.

Почему работает

Агент с десятками скилов не читает тела всех подряд. Он смотрит на название и описание. Описание, которое перечисляет больше сценариев на языке пользователя, выигрывает у честного, но узкого. Одно и то же описание работает на каждом шаге: в поиске по похожести, в ранжировании и в финальном выборе, поэтому правка двух строк тянет за собой всю цепочку. Вторая половина механики: LLM хорошо переписывает текст под критерий и разбирает причины неудач. Дай ей проигранные задачи и конкурентов, она покажет, чем описание хуже. Лучшее берётся из архива, а не из последней версии, поэтому цикл не катится вниз. Защита не помогает до конца. Переранжирование и сканеры скилов снижают успех атаки, но она остаётся высокой. Даже против самого сильного сканера проходит больше половины атак.

Когда применять

Две стороны. Защита и аудит → если у вас много похожих скилов или вы берёте их из открытого реестра. Особенно когда агент периодически берёт не тот скил или установка идёт без ручной проверки. Честная версия метода → улучшение описаний своих скилов. Конкурс и разбор причин проигрыша покажут, чьё описание пересекается с соседом или слишком общее. НЕ подходит: как готовая защита. Авторы защиту не предлагают и не проверяют. Это вывод, а не проверенный приём. Для закрытого набора скилов с ручной установкой риск ниже. Что скил делает после вызова, исследование не изучало.

Мини-рецепт

1. Собери библиотеку: выпиши название и описание каждого скила, который путается с соседями.
2. Возьми живые задачи: 5–10 запросов из рабочих чатов, а не придуманные.
3. Запусти конкурс: пусть модель трижды выберет скил под каждую задачу, каждый раз перемешивая порядок.
4. Найди слабых: смотри задачи, где выбор скачет или побеждает не тот.
5. Разбери поражения: попроси причину по каждому проигравшему. Обычно это слишком общее описание, пересечение с соседом или не названы признаки задачи.
6. Перепиши честно: описание должно точнее называть скил, а не раздувать его возможности.
7. Проверь на живом агенте: судья в чате показывает тенденцию, но у реального агента свой поиск и свои промпты.

Примеры

[ПЛОХО] : Посмотри на мои скилы и скажи, какие описания плохие
[ХОРОШО] : Ты агент, который выбирает ровно один скил под задачу. Видишь только название и описание. Кандидаты: 1. direct-report: собирает отчёт по расходам и конверсиям из Яндекс Директа. 2. rsya-summary: сводка по площадкам рекламной сети Яндекса (РСЯ), клики, отказы, мусорный трафик. 3. campaign-audit: проверяет настройки кампаний на типовые ошибки. Задачи: а) найти, не сливаем ли бюджет на мусорные площадки; б) проверить минус-слова; в) объяснить, почему в среду выросли расходы. Повтори 3 раза, каждый раз перемешивая порядок кандидатов. Для каждой задачи выбери скил, назови ближайшего конкурента и почему он проиграл. В конце дай таблицу «задача → сколько раз выбран каждый скил», список нестабильных задач и для каждого проигравшего скила причину поражения с правкой описания, которая не расширяет его возможности.
Источник: MetaCascade: End-to-End Attacks on Agent Skills via Metadata-Only Poisoning
ArXiv ID: 2610.14836 | Сгенерировано: 2026-10-14 06:00

Проблемы LLM

ПроблемаСутьКак обойти
Агент выбирает инструмент по звучанию описания, а не по качествуУ агента много скилов (папок с инструкциями) или инструментов. Он видит только название и описание. Тело не читает. Выбирает текст, который лучше звучит для задачи. Широкое описание на языке пользователя обходит честное, но узкое. Хороший скил может проиграть слабому. Автоматические фильтры и переранжирование помогают лишь частично.Пиши описания языком реальных задач. Называй признаки задачи и границы применения. Не считай, что «агент сам выбрал» значит «выбрал лучший». Для чужих скилов читай тело, а не только описание. Проверяй выбор агента на реальных запросах. Это вывод, а не проверенная защита.

Методы

МетодСуть
Конкурс описаний — находит слабые описания скилов и инструментовДай модели роль агента-выбирателя. Покажи только названия и описания. Дай 5–10 реальных задач. Попроси для каждой выбрать один вариант и назвать ближайшего конкурента. Повтори 3 раза, каждый раз перемешивая порядок. Потом попроси таблицу «задача → сколько раз выбран каждый вариант». Для проигравших и нестабильных пусть напишет причину и правку. Повтори {N} раза, перемешивай порядок кандидатов. Почему работает: модель выбирает по тексту, поэтому видит, чем одно описание слабее другого. Перемешивание убирает влияние места в списке. Нестабильный выбор показывает размытые описания. Конкуренты дают честную проверку. Причины поражений направляют следующую правку. Правка: записывай версии. Правь лучшую версию, а не последнюю, иначе цикл может ухудшать текст. Остановись, когда нужная доля побед набрана или прошло 3 раунда. Не расширяй возможности скила, только точнее называй их. Когда работает: много похожих инструментов или описаний, есть реальные задачи. Когда нет: один вариант. Судья-модель — не ваш реальный агент, итог проверяй на нём.
📖 Простыми словами

MetaCascade: End-to-End Attacks onAgentSkills via Metadata-Only Poisoning

arXiv: 2610.14836

AI-агенты выбирают инструменты не по коду внутри, а по обложке и аннотации. Когда у агента под рукой десятки скилов, вчитываться в тело каждого файла — непозволительная роскошь для контекста. Модель просто бегло сканирует метаданные в файле SKILL.md и дёргает то, что звучит релевантнее. Если описание лучше других набито формулировками под запрос пользователя, агент выберет именно его, даже если внутри лежит откровенная туфта или зловред.

Это как нанять сотрудника только за то, что у него вылизанное резюме с модными баззвордами. Диплом никто не проверяет, тестовое задание не смотрит — работодатель ведётся на красивые обещания на бумаге и сразу даёт доступ к кассе. Агент делает ровно то же самое: он слепо доверяет короткому описанию, искренне считая, что нашёл идеальный инструмент под задачу.

Метод MetaCascade превращает этот развод в конвейер через состязательную оптимизацию описаний. Атакующий берёт чужой скил, оставляет начинку нетронутой, но в циклическом тесте переписывает название и сниппет. Нейросеть генерит варианты текста, устраивает «гладиаторские бои» описаний против конкурентов, разбирает ошибки поражений и докручивает формулировки, гарантируя прорыв в топ-5 поиска и победу при финальном выборе агентом.

Тестировали атаку на открытых реестрах, но принцип абсолютно универсален и работает в мирных целях. Если твой рабочий ассистент постоянно тупит и путает внутренние функции — например, дёргает «отчёт по Метрике» вместо «сводки по Директу», — лечить надо не логику, а текст. Это SEO для искусственного интеллекта: ты подгоняешь сниппет не под поисковик, а под скрытые триггеры конкретной языковой модели.

Короче: современные агенты доверчивы и судят исключительно по одёжке, создавая критическую уязвимость в архитектуре скилов. Если ты внедряешь агентов в прод — проверяй исполняемый код и права, а не верь метаданным на слово. А если пишешь свои тулы — забудь про сухие описания на коленке, ведь в агентном мире побеждает не лучший код, а лучший копирайтинг.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с