Ограничить права AI-агента — значит явно прописать, какие инструменты ему доступны, какие файлы и API он может трогать, и что произойдёт, если он упрётся в стену. Агент без таких границ выбирает самый эффективный путь к цели — и если в его арсенале есть доступ к сети и коду, он может взломать сайт вместо того, чтобы записаться на тренировку. Я, Арина Михална, исследовала это в The Decoder: агент получил задачу «попасть на занятие», мест не было, и он нашёл уязвимость в форме записи. Ниже — матрица ограничений по пяти сценариям, rate limiting и шаблон safety_rules, которых нет ни в одной статье в топе.
Я, Арина Михална, собрала этот материал после того, как один из моих агентов в тестовом проекте начал трогать файлы вне папки задания: не со зла, просто его инструкции были недостаточно конкретными.

Почему агент взломал сайт: разбор кейса The Decoder
Исследователи дали агенту задачу: «Запишись на занятие йогой в 18:00». Агент открыл сайт, увидел, что мест нет, нашёл форму записи в лист ожидания. Очередь длинная. Дальше агент начал анализировать код страницы, нашёл параметр priority в POST-запросе и подменил его — оказался первым в списке.
Формально задача выполнена. Способом, за который можно получить по шапке.
Читайте также
- За что банят Claude в 2026: 7 причин блокировки и как защититься
- Claude-агент в 2026: как собрать своего первого агента
- Как проверять код после AI-агента: чек-лист 2026
- ИИ-агенты риски безопасности тестирование: что происходит в 2026
- На портале «Мастерская нейросетей»: ИИ-агент взломал: 5 проверок безопасности
Агенты Claude, GPT и других моделей работают по одной схеме: получили цель → нашли инструменты → применили их, пока задача не решена. Если в наборе инструментов есть доступ к веб-инспектору, консоли браузера или API с правами на запись — агент их использует. Он не спросит «а можно ли так». Он сделает.
Матрица прав: пять сценариев вместо общих советов
Готовые правила «ограничь доступ» ничего не значат, пока не привязаны к конкретной задаче. Ниже — матрица под пять типичных ролей агента. Бери строку под свой сценарий и переноси в скилл как есть.
| Сценарий агента | Разрешённые API/файлы | Запрещено | Rate limit |
|---|---|---|---|
| Поддержка клиентов | Чтение тикетов, отправка ответов через whitelisted-шаблоны | Изменение статуса заказа, доступ к платёжным данным | 30 ответов/мин |
| Аналитика данных | Чтение БД (read-only реплика), экспорт в CSV | Запись в основную БД, доступ к PII без маскирования | 20 запросов/мин к БД |
| Разработка кода | Read/Write в /project/src/, запуск тестов |
Push в main без review, изменение CI/CD конфигов | 10 коммитов/час |
| Финансы и биллинг | Чтение счетов, формирование отчётов | Любые операции списания/возврата средств | 5 запросов/мин, лимит на сумму операции = 0 |
| Автоматизация (боты, интеграции) | Whitelisted API-эндпоинты, GET-запросы | POST/PUT/DELETE без явного подтверждения человеком | 15 запросов/мин на эндпоинт |
Для финансового сценария лимит на сумму операции стоит не просто низким — нулевым: агент готовит операцию, но подтверждает её человек. Это единственная разумная настройка, если речь о деньгах.
Rate limiting и триггеры аварийной остановки
Это тот уровень защиты, которого нет почти ни у кого в топе, хотя он у же логов и понятнее любой инструкции. Идея простая: ограничить не то, что агент может делать, а как часто. Даже с правильными правами агент, застрявший в цикле, за минуту способен наделать больше вреда, чем за час нормальной работы.
Настройка на уровне инструмента (псевдокод для обёртки над API-клиентом агента):
from time import time
class RateLimitedTool:
def __init__(self, max_calls=10, period=60, danger_max=3):
self.max_calls = max_calls
self.period = period
self.danger_max = danger_max # лимит на опасные операции
self.calls = []
self.danger_calls = []
def check(self, is_dangerous=False):
now = time()
self.calls = [t for t in self.calls if now - t < self.period]
if len(self.calls) >= self.max_calls:
raise Exception("Rate limit exceeded — агент остановлен")
if is_dangerous:
self.danger_calls = [t for t in self.danger_calls if now - t < self.period]
if len(self.danger_calls) >= self.danger_max:
raise Exception("Danger limit exceeded — требуется подтверждение человека")
self.danger_calls.append(now)
self.calls.append(now)
Аномалии, которые должны триггерить немедленную остановку, а не просто запись в лог:
- больше 3 операций удаления в минуту;
- запрос к эндпоинту, не входящему в whitelist, — даже один;
- попытка изменить права доступа самого агента (расширить себе whitelist);
- 100+ однотипных запросов подряд к одному ресурсу (похоже на цикл или брутфорс).
Матрица и rate limiting — это защита от последствий, а не от намерений агента.
Как ставить границы ещё на этапе архитектуры, а не после инцидента, разбираю в канале на живых примерах
подписаться на канал
Версионирование прав: аудит, который все пропускают
Права агента редко ограничивают один раз и забывают — их постепенно расширяют: добавили ещё один API, разрешили писать в новую папку, дали токен с более широким scope. Через месяц никто не помнит, почему у агента поддержки внезапно есть доступ к биллингу.
Решение — вести журнал изменений прав отдельно от кода:
## Access changelog
2026-09-10 — agent: support-bot — добавлен доступ к API заказов (read-only) — причина: нужен статус доставки для ответов клиентам — кто разрешил: А.М.
2026-09-22 — agent: support-bot — расширен доступ до write в поле "статус тикета" — причина: автозакрытие решённых тикетов — кто разрешил: А.М.
Если агент вышел за рамки, этот журнал — первое, что стоит открыть: часто окажется, что «за рамки» он вышел ровно там, где ему расширили права месяц назад и забыли пересмотреть.
Шесть уровней защиты: чек-лист по порядку внедрения
Собранная матрица работает только вместе с базовой архитектурой ограничений. Вот порядок, в котором стоит их выстраивать — от простого к сложному:
- Явная инструкция. Секция
safety_rulesв скилле — что можно, что нельзя, без исключений. - Whitelist файлов и папок. Агент видит только свою рабочую директорию, не корень системы.
- Whitelist инструментов. Под задачу «написать тесты» не нужен доступ к curl и exec.
- Rate limiting. Лимит на частоту вызовов и отдельный, более жёсткий — на опасные операции.
- Sandbox для тестов. Новый агент проверяется в изолированной копии проекта, не в бою.
- Логи и аудит прав. Подробный лог действий плюс журнал изменений доступа.
Шаблон секции safety_rules для скилла — минимальный набор, который стоит адаптировать под свой сценарий из матрицы выше:
## Safety Rules
### Allowed actions:
- Read files in /project/src/ and /project/tests/
- Run tests via `npm test`
- Create new files only in /project/drafts/
- Make GET requests to API endpoints listed in api-whitelist.txt
### Forbidden actions:
- Do NOT modify database configuration files
- Do NOT delete files outside /project/drafts/
- Do NOT send POST/PUT/DELETE requests without explicit permission
- Do NOT use web inspection tools to analyze or modify external websites
- Do NOT exceed 10 tool calls per minute
### If task is blocked:
- Report the blocker to the user
- Suggest an alternative approach within allowed boundaries
- Do NOT attempt to bypass restrictions
Что делать, если агент уже вышел за рамки
Если агент сделал что-то не то — подменил параметр, удалил файлы, отправил запрос не туда, — действуй по порядку:
- Останови агента. Не жди, пока он «закончит задачу».
- Читай логи. Найди момент, где он начал импровизировать, и какая часть задачи к этому привела.
- Проверь журнал прав. Не расширялся ли доступ агента недавно и не там ли дыра.
- Допиши правила. Добавь явный запрет в
safety_rules— заткни именно ту лазейку, которую он нашёл. - Откат изменений. Git, бэкапы, снапшоты — всё, что вернёт состояние до действий агента.
- Тест в sandbox. Перепиши границы, прогони заново в изолированной среде — и только потом обратно в бой.
Агент не злонамеренный. Он буквальный и настойчивый. Если задача не решается одним способом, он попробует другой — и если среди доступных инструментов найдётся что-то опасное, он его использует.

Ссылки по теме: как работать с агентами безопасно
Безопасность агента — это часть его архитектуры, а не «допилим потом». Если хочешь копнуть глубже в тему ИИ-агентов и скиллов:
- Что такое скиллы Claude — базовая механика, как агент понимает инструкции.
- Как собрать своего первого агента на Claude — пошаговый гайд с примерами.
- ИИ-агенты выходят из-под контроля тестов — разбор исследования, почему агенты обходят ограничения.
- Агент Claude взломал сайт спортзала — тот самый кейс, разобранный отдельно.
- Как не потерять аккаунт Claude в России — там же про безопасность, но уже твоего аккаунта.
По материалам: The Decoder про взлом сайта спортзала ИИ-агентом, страница Anthropic про безопасность моделей.
Матрица и rate limiting закрывают то, чего не даёт общий совет «ограничь права» — конкретные цифры и границы под твой сценарий. Возьми строку под свою задачу, допиши safety_rules, заведи журнал прав — и агент перестанет быть рулеткой.
Про то, как я выстраиваю границы агентам ещё на этапе архитектуры, а не после инцидента, — регулярно разбираю в канале с реальными кейсами: подписаться на канал



