Перейти к документации
ДокументацияПодтверждения

Подтверждения и разрешения

Выберите, какие вызовы ждут человека, ответьте на карточку и узнайте, что делает агент, пока ждёт.

На этой странице

По умолчанию каждый вызов проходит сразу. Вы сами выбираете, где вызов ждёт человека: для одного агента, одного подключения и одного класса.

Выберите, какие вызовы ждут вас

Откройте Агенты и выберите агента. В его списке «Доступ» по строке на каждое подключение.

  • Включите «Спрашивать каждый раз», чтобы подтверждать каждый вызов этого подключения.
  • Или настройте столбцы «Чтение», «Изменение» и «Необратимое» по отдельности. «Автоматически» пропускает вызов, «Нужно подтверждение» ждёт человека, «Запрещено» отклоняет.
  • Отметьте «Код», чтобы необратимые вызовы требовали шестизначный код из приложения-аутентификатора. Столбец появится, когда вы настроите «Приложение-аутентификатор» в разделе Настройки.

Класс вызова Sallyport определяет по HTTP-методу. GET, HEAD и OPTIONS читают. POST, PUT и PATCH изменяют. DELETE и любой другой метод считаются необратимыми. Чтение становится изменением, если часть пути начинается со слова вроде send, run, exec, build, trigger, invoke или webhook. Рецепт сервиса может уточнить класс для известных ему вызовов.

Вызов сверх заданного вами бюджета ждёт, подробнее в разделе Лимиты.

Куда приходит карточка

Карточка приходит человеку, от имени которого действует агент, и всем владельцам и администраторам. Решает первый ответ. Каналы настраиваются в разделе Уведомления.

КаналКак работает
КонсольКарточка открывается в углу любого экрана, а пункт «Подтверждения» показывает, сколько вызовов ждёт. Переключатель «Карточки в консоли» отключает карточку в углу.
Браузер«Присылать карточки в этот браузер» доставляет карточки, даже когда консоль закрыта. Если браузер их заблокировал, разрешите уведомления в настройках сайта и обновите страницу.
TelegramНажмите «Подключить Telegram», затем «Откройте бота и нажмите Start». Карточки приходят только в личный чат, с кнопками Approve, Deny и Approve for 1 hour.
Электронная почтаПо умолчанию выключена. Переключатель «Присылать карточки на почту» её включает, в каждом письме ссылка на карточку.
Сам агентАгент показывает вам approve_url. Ссылка открывает ту же карточку по адресу https://my.sallyport.cloud/approve/<call_id>.

У каждого подключённого канала есть кнопка «Отправить тест». Таблица «Что куда приходит» задаёт, какие события уходят в браузер, Telegram и на почту. Для необратимого вызова Telegram предлагает только Deny и ссылку на карточку.

Ответьте на карточку

В карточке видно, что будет отправлено, какой агент спрашивает и из какого рабочего пространства. В блоке «Подробности» лежат правило, ключ, ID вызова, срок и слова самого агента с пометкой, что они не проверены. Каждая часть запроса показывается до 2 КиБ. Если часть длиннее, карточка говорит об этом над кнопками, а «Показать запрос целиком» загружает её полностью. В «Подробностях» виден и заголовок, который агент прислал на месте ключа, со своим значением; он не отправляется.

КнопкаЧто делает
Разрешить вызовВыполняет только этот вызов.
ОтклонитьОткрывает поле «Причина»; нажмите «Отклонить» ещё раз, чтобы отправить. Агент прочитает причину и не станет повторять вызов.
Разрешить GET /client/v4/zones на 24 ч, не более 200 вызововВыполняет вызов и создаёт разрешение. Тот же агент, подключение, класс и путь дальше проходят без карточки, пока не кончатся время или число вызовов.
Разрешать все чтения на api.cloudflare.com с этого моментаВыполняет вызов и ставит этому классу «Автоматически» для этого агента на этом подключении. Кнопку видят только владельцы и администраторы.
ПередатьПередаёт карточку другому владельцу, администратору или подтверждающему.

Чтобы подтвердить необратимый вызов, тоже нужна причина. Если в этой строке отмечен «Код», карточка попросит ещё и шестизначный код из приложения-аутентификатора.

Разрешение из карточки действует столько, сколько задано в поле «Максимальный срок разрешения (секунды)» в разделе Настройки, «Организация». По умолчанию это 24 часа. Разрешение покрывает 200 чтений, 20 изменений или 1 необратимый вызов. Кнопка Approve for 1 hour в Telegram даёт 20 вызовов на час. Разрешения можно проверить и отозвать на странице Разрешения: она открывается из «Подтверждений», а страница агента показывает его действующие разрешения.

Кнопка «с этого момента» есть только у класса со значением «Нужно подтверждение». Изменение попадает в Изменения правил, там кнопка «Отменить изменение» его откатывает. Если поставить классу «Запрещено», его разрешения отзываются.

Что видит агент, пока ждёт

В каждом ответе об ожидании есть call_id и approve_url. Повтор с тем же call_id продолжает тот же вызов, второй вызов не появляется.

  • MCP-клиент, который присылает токен прогресса, держит вызов открытым. Sallyport сообщает о ходе ожидания каждые 10 секунд, до 240 секунд.
  • Клиент без токена прогресса ждёт до 45 секунд.
  • Когда ожидание заканчивается, агент получает APPROVAL_PENDING с call_id, approve_url, expires_at и poll_after_ms. Дальше get_call отвечает сразу, а повтор с call_id снова ждёт.
  • Клиент с поддержкой MCP Tasks получает задачу и опрашивает её. Клиент с поддержкой URL elicitation показывает вам approve_url и сам повторяет вызов.
  • На /p/ приходит ответ 202 с заголовком X-Sallyport-Call-Id. Опрашивайте GET https://mcp.sallyport.cloud/p/calls/{call_id}: 202 во время ожидания, ответ сервиса после подтверждения, 403 после отказа, 410 после истечения срока.

Ответ доходит до ждущего вызова сразу. Claude Code уводит вызов, который ждёт дольше 2 минут, в фон и показывает результат, когда тот приходит.

Сколько ждёт карточка

  • По умолчанию карточка открыта 60 минут. Срок меняет поле «Срок подтверждения (секунды)» в разделе Настройки, «Организация».
  • Открытие полной карточки добавляет 5 минут, не больше двух раз. Карточка в углу срок не продлевает.
  • Напоминания приходят через 2, 15 и 45 минут после появления карточки. Напоминание, которое выпало бы на время после срока, не отправляется.
  • После отказа агент получает APPROVAL_DENIED с вашей причиной. Ничего не выполнялось.
  • После истечения срока агент получает APPROVAL_EXPIRED. Ничего не выполнялось; если действие ещё нужно, агент повторяет его без call_id.

Много вызовов подряд

  • Одинаковые вызовы одного агента присоединяются к уже открытой карточке, сколько бы времени между ними ни прошло. Вызов выполняется один раз, и каждая копия получает его результат.
  • Когда у агента 20 открытых карточек или у организации 100, новые карточки не появляются. Агент приостанавливается, одна карточка объясняет причину, а кнопка «Возобновить агента» на его странице запускает его снова.

Если у агента нет ключа

Карточка отвечает на вызов, для которого ключ уже есть. Вызов к сервису без ключа создаёт запрос в разделе Нужен ключ и даёт агенту ссылку на него.

То же происходит с приостановленным подключением, выведенным ключом и истёкшим входом через OAuth. Добавьте ключ кнопкой «Выдать доступ», и агент повторит вызов. Подробнее в разделе Ключи и агенты.