Отдайте агенту задачуКлюч оставьте себе
Ваши агенты работают с настоящими боевыми ключами. Ключи остаются в хранилище. Всё, что тратит деньги или удаляет данные, ждёт одного вашего касания.
Без карты. 10 000 вызовов в месяц на бесплатном плане, и превышение никогда не блокирует вызов.
- 1агентdemo.request POST demo.sallyport.cloud/echoАгент называет действие. Ключа у него нет, и он его не просит.
- 2шлюзclass=write binding=demo credential=demo-token v1Рецепт говорит: POST /echo пишет. Запись спрашивает человека.
- 3выкарточка отправлена telegram, консоль, задача в клиенте«POST demo.sallyport.cloud/echo · агент my-first-agent · воркспейс personal · ключ demo-token»
- 4выодобрено область: только этот вызовОдно касание. Вызов всё это время ждал и продолжается по тому же идентификатору.
- 5шлюзunwrap demo-token v1 заголовок X-Demo-Token отправкаЗначение читается здесь, для этого вызова. Ни один маршрут платформы его не возвращает.
- 6апстрим200 x-upstream: website тело 214 B
- 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'ы уходят вам. Верификатор открытый и читает ваш экспорт без единого нашего ключа.
Весь продукт на одном рисунке
Где ключ на каждом хопе
Подключается к
Работает с тем агентом, который у вас уже есть
Один эндпоинт и один токен. Клиенты со статичным заголовком подключаются одной командой. Те, кто требует OAuth, получают сервер авторизации под их чек-лист.
- Claude Code
- claude.ai
- ChatGPT
- Cursor
- Codex CLI
- Gemini CLI
- VS Code
- Коннектор MCP в Claude API
- OpenAI Responses
Всё остальное, что говорит по 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. Наведите открытый верификатор на любой экспорт, и он скажет, сходится ли цепочка.
Вопросы, которые задают перед стартом
- Я сплю. Пайплайн встанет?
- Чтение идёт без вас. Для остального политика ставится один раз на 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 вызовов в месяц бесплатно. Первый вызов проходит прямо из консоли, до подключения любого клиента.