Агент уже собран: читает CRM, пишет ответ. Страшно не опечатку — страшно нажать Send. Клиенту уйдёт чушь, в CRM сменится статус, с карты спишутся деньги. Отключать всё и копировать поля руками не хочется, но «пусть сам» тоже нет.
Выход — короткая карта: где агент идёт сам, а где одна-две кнопки «стоп» на вашем процессе. Пять точек на маршруте «заявка → ответ → CRM» и как их включить в Cursor с MCP, Python/LangGraph и n8n с согласованием в мессенджере.
Если коротко: останавливайте агента перед необратимым — отправка клиенту, смена статуса сделки, деньги, удаление записи, POST в прод. Чтение базы, черновик ответа и сверка полей — без паузы. Правило простое: если откат дороже пары секунд ожидания, нужен human-in-the-loop (человек в контуре); если действие обратимо — пусть работает сам.
Когда агенту мешать не нужно

Разница между ИИ-агентом для бизнеса и чат-ботом как раз в этом. Бот отвечает в окне чата — и на этом всё. Агент идёт дальше: меняет CRM, шлёт письма, дергает внешние API. Human-in-the-loop нужен там, где агент перестаёт быть «советчиком» и начинает менять мир снаружи.
На этой неделе в Cursor вышел Auto-review — вместо «спрашивать перед каждым действием» контекстный классификатор перед вызовом инструмента. По данным разработчиков, блокирует около 4% проверяемых действий; до прерывания пользователя доходит примерно 7% чатов. У части корпоративных клиентов раньше блокировалось до 40% — отсюда усталость и кнопки «да» без чтения. Классификатор сначала отдаёт feedback агенту; модалка — не на каждый tool call. Для вайбкодинга важно: одна shell-команда в одном контексте безопасна, в другом — нет.
Практическое правило из разбора HITL: гейт вешать по обратимости, не по «важности на словах». Confidence score модели сам по себе слабый критерий — лучше смотреть тип действия (чтение или запись), деструктивность, сумму, есть ли внешний получатель.
| Зона | Примеры для МСБ | Режим |
|---|---|---|
| Необратимо | Отправка письма или сообщения клиенту; публикация на сайте; смена статуса сделки; списание или возврат; удаление записи; HTTP POST в прод | Пауза и явное «да/нет» или правка payload |
| Обратимо | Поиск в базе, черновик ответа, чтение CRM, анализ логов, генерация вариантов | Агент идёт сам; человек смотрит постфактум или в дашборде |
| Серая зона | Создание задачи в трекере, внутренний черновик в таблице | HITL только если задача уходит внешнему человеку или с дедлайном «сейчас» |
Пять точек «стоп» на маршруте заявка → ответ → CRM

Возьмём один типовой процесс малого бизнеса: пришла заявка, агент собирает карточку, готовит ответ, обновляет CRM. Не абстрактная «безопасность ИИ», а конечный список гейтов — как в подходе агентской системы под один процесс.
- После подготовки, до отправки клиенту. Финальный текст, вложения, адресат. Здесь HITL обязателен: откат письма или сообщения клиенту уже дорогой.
- Перед записью в CRM, если меняется статус, сумма или ответственный. Чтение карточки — без паузы. Запись полей, от которых зависит воронка и отчёты — с подтверждением.
- Перед внешним API с деньгами или доступами. Оплата, возврат, смена тарифа, выдача ключей. Staging GET можно пустить автоматически; production DELETE или списание — всегда человек.
- Не ставить гейт на этапах «найти данные по заявке», «собрать карточку согласования», «сверить поля с исходным письмом». Это обратимая подготовка. Тормозить здесь — убить смысл автоматизации.
- Серая зона: внутренняя задача с дедлайном «сейчас». Если агент создаёт задачу только для вашей команды и без внешнего адресата — часто хватает постфактум-просмотра. Если из задачи уходит уведомление клиенту или подрядчику — снова точка 1.
Карточка согласования (практика no-code связок): что сделает агент, по какой сущности, «request_id», уровень риска, кнопки «Подтвердить», «Отклонить», при необходимости «Нужна правка». Владелец видит конкретное действие, а не «агент что-то делает».
Cursor, MCP и правила: не полагаться только на промпт

Если вы собираете агента в вайбкодинге в Cursor с MCP, у вас два слоя защиты поверх «спроси меня перед отправкой» в системном промпте.
Auto-review (Settings → Agents): классификатор смотрит tool call в контексте запроса. При блоке сначала feedback агенту, не всегда модалка. Это снижает шум, но не заменяет явные правила на ваши рискованные инструменты.
MCP-слой принудительного HITL. Пакеты вроде «hitl-gate-mcp» («assess_and_gate» перед side-effect) и «confirm-mcp» («request_approval» с audit log) ставят гейт на стороне сервера. Без «init» и явных rules модель может не вызывать гейт каждый раз — поэтому «правила + MCP», а не надежда на вежливость модели.
Cursor Rules. Явно требовать approval MCP перед delete, git push, внешними API — дополняет Auto-review. Пример для процесса заявок: rule «перед любым HTTP POST на production CRM и перед отправкой email через MCP — вызов confirm-mcp».
Python и LangGraph: interrupt() и память между паузами
Кастомный агент на Python удобен, когда no-code не хватает: своя маршрутизация риска, свои поля CRM, свои таймауты. В LangGraph паттерн — «interrupt()» внутри node или tool: выполнение останавливается, resume через «Command(resume=…)» и тот же «thread_id».
Три вещи, без которых HITL в проде развалится:
- Checkpointer (SQLite или Postgres). Без него после паузы или рестарта контекст теряется.
- Идемпотентность. Node перезапускается с начала при resume — side-effect до «interrupt()» не должен жить в той же node без защиты от дубля.
- Паттерн approve / reject / edit payload перед выполнением tool: человек может не только отклонить, но и поправить текст ответа или сумму в CRM до записи.
Для маршрута «заявка → ответ → CRM» типичная схема: node «собрать черновик» без interrupt; node «отправить клиенту» — interrupt с payload письма; node «обновить CRM» — отдельный interrupt, если меняются статус или сумма.
n8n: гейт на уровне инструмента, а не всего workflow
Для владельца без разработчика часто собирают цепочку в n8n: AI Agent читает заявку, черновит ответ, зовёт инструменты. Ошибка номер один — human review на весь workflow. Агент не может ни искать, ни черновить без клика.
Правильнее: Human Review на уровне tool в AI Agent (документация n8n и community-паттерны). Гейт вешается на конкретный рискованный инструмент — отправка в мессенджер, запись в CRM, платёжный API — а не на чтение и генерацию текста. Альтернатива: узел Send and Wait for Response с типом Approval перед необратимым шагом.
Технические условия для МСБ:
- Always-on инстанс (облако или Docker). Иначе ожидание ответа в мессенджере сбрасывается при рестарте.
- «request_id» и статус «pending» перед исполнением. Двойной тап по кнопке «Подтвердить» без проверки — два письма клиенту.
- Канал согласования для РФ-аудитории — мессенджер или email; встроенный чат n8n тоже подходит. Не строить статью вокруг заблокированных в РФ платформ как «главного» канала.
Таймаут, аудит и шесть типичных провалов
Если человек не ответил на согласование, политика должна быть записана заранее: abort, эскалация, безопасный дефолт (черновик вместо отправки), очередь на утро. Для customer-facing шагов — короткий таймаут; дефолт «ничего не делать» безопаснее авто-одобрения.
Минимальный audit trail для малого бизнеса: предложенное действие (payload), почему сработал гейт, решение человека, timestamp, «request_id». Формулировки человекочитаемые — «агент запросил отправку письма клиенту X», а не только «tool.invoke» в логе.
Что ломают чаще всего:
- HITL на каждый tool call — усталость, кнопки жмут без чтения.
- Нет «request_id» и идемпотентности — дубли при повторном callback.
- Состояние агента только в RAM — рестарт на паузе = потеря контекста.
- Гейт после необратимого действия, а не до.
- Только промпт «спроси меня» без enforcement через MCP, Require approval в n8n или LangGraph interrupt.
- Self-hosted n8n без persistent execution — зависшие approval после перезапуска.
По оценкам из обзоров 2026 года, лишь около 22% людей готовы доверять автономным агентам без контроля — это фон, не аргумент ставить гейт на чтение логов. Для high-risk сценариев в ЕС действует требование human oversight; для практика МСБ важнее конкретные точки на своём процессе, чем compliance-лекция.
Частые вопросы
Нужно ли согласовывать каждый черновик ответа?
Нет, если черновик ещё не ушёл клиенту и лежит во внутреннем поле. Согласовывайте финальную отправку и любую запись в CRM, которая двигает сделку или деньги.
Сколько точек «стоп» достаточно для одного процесса?
Обычно три-пять на весь маршрут, не на каждый инструмент. Для «заявка → ответ → CRM» чаще хватает двух жёстких (отправка клиенту, запись в CRM) плюс одной на платёжный API, если он есть.
Auto-review в Cursor заменяет MCP-гейт?
Нет. Auto-review снижает ложные срабатывания и даёт контекстную блокировку. Явные MCP approval и Rules нужны на ваши прод-инструменты — delete, push, внешние API с side-effect.
Что делать, если владелец бизнеса не на связи ночью?
Зафиксируйте политику: не отправлять автоматически по таймауту, сохранить черновик и поставить в очередь. Авто-одобрение для customer-facing рискованнее зависшего агента.
LangGraph без checkpointer — можно на тесте?
На локальном тесте — да. В проде с реальными паузами на согласование checkpointer обязателен, иначе после рестарта thread_id не восстановит состояние.
Почему не вешать human review на весь n8n workflow?
Агент не сможет сам искать данные и собирать карточку — вы снова в ручной рутине. Гейт только на инструменты с необратимым эффектом.
Как не получить два одинаковых письма клиенту?
Уникальный «request_id», статус «pending» до исполнения и проверка перед отправкой: если уже «approved» и выполнено — второй callback игнорировать.
Если нужно спроектировать такую карту под ваш процесс — от заявки до CRM, с выбором стека и явными гейтами, это как раз зона услуг по внедрению агентов. Написать с задачей можно через форму на сайте.