Отдайте агенту задачуКлюч оставьте себе

Ваши агенты работают с настоящими боевыми ключами. Ключи остаются в хранилище. Всё, что тратит деньги или удаляет данные, ждёт одного вашего касания.

Без карты. 10 000 вызовов в месяц на бесплатном плане, и превышение никогда не блокирует вызов.

Ваш первый вызов, как его записывает шлюз
  1. 1агентdemo.request POST demo.sallyport.cloud/echoАгент называет действие. Ключа у него нет, и он его не просит.
  2. 2шлюзclass=write binding=demo credential=demo-token v1Рецепт говорит: POST /echo пишет. Запись спрашивает человека.
  3. 3выкарточка отправлена telegram, консоль, задача в клиенте«POST demo.sallyport.cloud/echo · агент my-first-agent · воркспейс personal · ключ demo-token»
  4. 4выодобрено область: только этот вызовОдно касание. Вызов всё это время ждал и продолжается по тому же идентификатору.
  5. 5шлюзunwrap demo-token v1 заголовок X-Demo-Token отправкаЗначение читается здесь, для этого вызова. Ни один маршрут платформы его не возвращает.
  6. 6апстрим200 x-upstream: website тело 214 B
  7. 7журналзапечатано prev e34a2b45 this f7315a11Строка намерения записана до того, как вызов ушёл, в одной транзакции с решением.

Это вызов из быстрого старта: echo-эндпоинт, рецепт demo из публичного каталога, одно одобрение. Хеши ниже посчитаны прямо на этой странице по строкам над ними. Пересчитайте их открытым верификатором, и цепочка сойдётся.

Где ключ прямо сейчас

У агента он уже есть

Вы вставили ключ в .env, или в конфиг MCP, или в CI-секрет. Дальше он живёт в процессе, в истории шелла, в залогированном ретрае и в контексте модели, которую хостите не вы. О том, что сделал агент, вы узнаёте утром из панели провайдера.

  • Ключ в конфиге — это ключ на каждый вызов, который агент решит сделать, включая тот, который вы бы остановили.
  • Ротация означает найти всех агентов, все ноутбуки и всех раннеров, где лежит копия.
  • Радиус поражения одной инъекции в промпт — весь ключ, а не один вызов.

В августе 2026 кампания ChainDrop выложила в npm 400 пакетов, которые читают файлы с кредами агентов из .claude, .cursor и .codex и переустанавливают себя через session-хук. Именно эти файлы вычищает sp init.

Что меняется в понедельник

Вставлять больше нечего
Агент получает токен, который сам по себе ничего не открывает. Ключи один раз уезжают в хранилище и остаются там. Одна команда пишет конфиг клиента, и Claude Code, Cursor, Codex и остальные смотрят на шлюз и видят человеческим языком все сервисы, которыми им можно пользоваться, ещё до первой попытки.
Важные вызовы ждут вас
Чтение проходит сразу. Запись спрашивает. Всё, что удаляет или тратит, отклоняется, пока вы не скажете иначе. Вопрос приходит в Telegram, в консоль или задачей внутрь клиента агента, и одно касание отправляет вызов дальше.
Вы можете доказать, что было
Каждый вызов попадает в ваш журнал до отправки, хешируется в цепочку арендатора и шифруется на ключ, которого у пишущего процесса нет. Подписанные checkpoint'ы уходят вам. Верификатор открытый и читает ваш экспорт без единого нашего ключа.

Весь продукт на одном рисунке

Где ключ на каждом хопе

Где ключ на каждом хопеТри хопа. Агент отправляет действие без креда. Шлюз классифицирует его, при необходимости спрашивает человека, пишет строку намерения, разворачивает ключ внутри своего процесса и отправляет вызов. Апстрим отвечает, и внедрённые байты вырезаются из ответа до того, как он дойдёт до агента.#1 намерение#5 отправка#7 результатВаш агентPOST /echo, аргументы, без ключатолько действиеSallyport1. классификация по рецепту2. вопрос человеку или живой grant3. запись намерения и печать4. unwrap, подстановка, отправкаВаше хранилищеdemo-token v1действие вместе с ключомАпстримвидит обычный авторизованный запросответ с вырезанными внедрёнными байтами
Ключ существует в жёлтом поле и на проводе под ним. Его нет ни на одном отрезке, до которого дотягивается агент, ни в одну сторону.

Подключается к

Работает с тем агентом, который у вас уже есть

Один эндпоинт и один токен. Клиенты со статичным заголовком подключаются одной командой. Те, кто требует OAuth, получают сервер авторизации под их чек-лист.

Всё остальное, что говорит по MCP через streamable HTTP, тоже работает, а всё, что умеет HTTP-запрос, работает через прокси.

На чём это держится

Три двери, один брокер

Один и тот же binding, одна политика и один журнал, каким бы путём ни пришёл вызов. Мы разобрали пятнадцать вендоров категории. Каждый закрывает одну из трёх.

MCP
Один эндпоинт, к которому подключается клиент. Обе живые ревизии протокола: stateless 2026-07-28 и сессионная 2025-11-25, каждая на своём хендлере.
HTTP
Обратный прокси на gw.sallyport.cloud, по пути на каждый binding. Наведите curl, скрипт или CI-джобу, и ключ добавим мы.
SSH
Агент выполняет команду на хосте. Приватный ключ до executor'а не доезжает: тот просит control подписать каждый challenge.

Три способа достучаться до вас, именно в таком порядке

Блокирующее ожидание не переживает реальных клиентов: Claude Code уводит вызов в фон примерно через две минуты и рвёт простаивающий запрос на пятой, Gemini CLI — на десятой. Поэтому ожидание здесь встроено в протокол, а не держится на соединении.

Задача
Если клиент понимает расширение tasks, вызов становится задачей, которую агент опрашивает. Ждать можно сколько нужно.
Ссылка, которую агент откроет
Шлюз отвечает input_required и ссылкой. Claude Code открывает браузер и держит вызов на переднем плане, пока карточка открыта.
Удержание с потолком
Последний путь держит запрос с прогрессом каждые десять секунд, потом отдаёт ссылку на одобрение и call_id. Ответьте позже — агент продолжит тот же вызов.

Журнал — это доказательство

Одна цепочка на арендатора, без разрывов по конструкции. Каждая строка хешируется поверх предыдущей, запечатывается на получателя арендатора и попадает под подписанный checkpoint, который уходит вам и в вашу SIEM. Наведите открытый верификатор на любой экспорт, и он скажет, сходится ли цепочка.

Цепочка одного арендатораПять запечатанных строк, каждая хеширует предыдущую, под подписанным checkpoint'ом.#4129f2c…#41341ab…#4140d77…#415b3e1…#4165c8a…каждая строка хеширует предыдущуюзапечатано на ключ, которого у писателя нетподписанный checkpointваш, и его можно отдать аудитору
Как устроена проверка

Вопросы, которые задают перед стартом

Я сплю. Пайплайн встанет?
Чтение идёт без вас. Для остального политика ставится один раз на binding: этот класс выполнять, тот спрашивать, третий отклонять. Разрешите класс на час с бюджетом вызовов, и агент отработает чисто до истечения. Лимиты скорости и лимиты плана отвечают временем повтора и карточку не поднимают.
Это замедлит агента?
Автоматический вызов тратит на нашей стороне одну проверку токена и одну транзакцию, дальше ждёт апстрим ровно как раньше. Чтение вообще не ждёт человека.
Что будет, когда Sallyport лежит?
Гейтящие вызовы останавливаются, и без одобрения ничего не проходит. В каждом воркспейсе есть печатная страница со списком binding'ов, провайдером каждого ключа и ссылкой на перевыпуск, так что ключ можно забрать и за минуты пойти напрямую. Ожидающие одобрения лежат в базе и продолжаются по тому же call_id после рестарта.
Некоторые API сами выдают секреты. Что тогда?
Агент не получает секрет от нас. Он может получить секрет от апстрима, если вы разрешили ему путь, который его выдаёт, и такие пути известны: installation-токены GitHub, CI-переменные GitLab, env Vercel с decrypt, kv у Vault. Каталог их помечает, класс — destructive, по умолчанию отказ, а консоль показывает полный список таких путей в вашем арендаторе.
Это vendor lock-in?
Журнал выгружается файлом и проверяется открытым инструментом, у которого нет наших ключей. Креды остаются вашими кредами в Stripe, в AWS, на ваших хостах, и отзываются одним кликом у источника. Binding'и — это несколько строк конфигурации, которые можно прочитать.
Сколько это стоит?
Бесплатно — 10 000 вызовов в месяц, люди в команде без ограничений. Team — 1 000 000 вызовов. Business — без лимита вызовов. Превышение плана включает триал и присылает уведомление. Вызовы при этом не блокируются.

Уберите ключи из конфига сегодня

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

Подключить первого агента

10 000 вызовов в месяц бесплатно. Первый вызов проходит прямо из консоли, до подключения любого клиента.