Возможности

Не помещайте учётные данные в окружение агента

Для встроенных HTTP и SSH Sallyport авторизует операцию, сам обращается к цели и подставляет учётные данные только внутри приложения. Агент получает результат, а не ключ. Точная граница описана в модели безопасности.

Работает на вашем MacБез аккаунта SallyportБез облачного сервиса управленияHTTP · SSH · внешние MCP
Маршрут запроса

Встроенные HTTP и SSH разделяют пути запроса и учётных данных

Запрос указывает операцию и цель. Sallyport проверяет запущенный процесс, применяет цепочку авторизации, сохраняет намерение в журнале и только после этого передаёт операцию исполнителю HTTP или SSH.

Вы

Клик или Touch ID, когда требуется

Локальная граница Sallyport
Процесс агентаОперация, цель и данные
Идентичность запущенного процесса
Цепочка авторизации
Сохраняемое намерение аудита
Исполнитель HTTP или SSH
Зашифрованное хранилищеУчётные данные передаются внутри
Запрошенная / настроенная цельHTTP URL или настроенный SSH-хост
запрос операциивнутренний путь учётных данныхрезультат, доступный агентусохранённые данные намеренно не добавляются
Агент просит Sallyport выполнить встроенную операцию HTTP или SSH. Sallyport проверяет идентичность запущенного процесса, применяет правила подтверждения, надёжно сохраняет намерение в журнале аудита и передаёт операцию исполнителю канала. Хранилище передаёт учётные данные этому исполнителю. Результат цели возвращается без проверки или изменения содержимого и может включать конфиденциальные данные.
Каналы выполнения

Каждый допущенный вызов проходит через один шлюз

У HTTP, SSH, удалённого MCP и локального stdio разные границы доверия. Вызовы их инструментов проходят одинаковые проверки хранилища, подтверждения, жизненного цикла и аудита.

01

HTTP

http.request → метод + URL + тело

Если хост и путь совпадают, Sallyport может добавить Bearer, Basic, пользовательский заголовок, AWS SigV4 или аутентификацию клиента OAuth2. Без совпадения запрос выполняется без учётных данных.

Запросы с учётными данными не следуют перенаправлениям. Остальные могут пройти ограниченную цепочку на том же хосте и порте без перехода с HTTPS на HTTP. Результаты и ошибки возвращаются в пределах лимита размера без проверки содержимого и могут включать конфиденциальные данные.

02

SSH

ssh.exec → хост + видимая команда

Приложение подписывает запросы аутентификации для помощника sp-ssh без состояния. Приватный ключ остаётся в Sallyport.app; помощник может вернуть запись сессии, которую приложение запечатает.

Политика accept-new по умолчанию сохраняет первый ключ хоста и отклоняет последующие изменения; strict требует уже известный ключ. Возвращаемый SSH-вывод и зашифрованные записи могут содержать конфиденциальные данные.

03

Удалённый MCP

server.tool → типизированные аргументы

Sallyport вызывает удалённый сервер по потоковому HTTP и добавляет настроенный API-ключ или токен OAuth 2.1. Этот сервер становится разрешённым получателем учётных данных.

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

04

Локальный MCP через stdio

server.tool → типизированные аргументы

Дочерний процесс получает привязанные учётные данные через окружение и наследует окружение Sallyport. Код сервера и его зависимости должны быть доверенными.

Процесс без подтверждения каждого вызова может работать до блокировки, изменения настроек или выхода из приложения. Процесс для одного вызова запускается после подтверждения и затем останавливается.

Удалённый MCP по потоковому HTTP

Локальный MCP через stdio

Вызов агента
Шлюз вызоваПроцесс, подтверждение, сохранённое намерение
Аутентифицированный запросПотоковый HTTP
Удалённый MCP-серверДоверенный получатель данных API / OAuth
настроенный API-ключ / токен OAuthаутентифицированные initialize + tools/listметаданные без аудита; возвращаются как получены
Вызов агента
Шлюз вызоваПроцесс, подтверждение, сохранённое намерение
Локальный дочерний stdio-процессПолучает привязанные секреты + окружение приложения
Жизненный цикл хранилищаГотово, блокировка, настройка, выход
учётные данные попадают в окружение процессане для каждого вызова: может оставаться запущеннымдля каждого вызова: подтвердить, запустить, вызвать, остановитьдоверяйте коду внешнего сервера и его зависимостям
При работе с удалённым MCP допущенный вызов проходит через Sallyport, который добавляет аутентификацию API или OAuth к удалённому запросу. Удалённый сервер считается доверенным получателем учётных данных. Результаты, ошибки и аутентифицированные метаданные каталога возвращаются без фильтрации по признаку учётных данных, с учётом документированных ограничений размера и длины описаний, и могут включать конфиденциальные данные. Инициализация и каталог по-прежнему находятся вне цепочки вызова. Локальный stdio-процесс получает привязанные учётные данные и окружение приложения. Процессы без подтверждения каждого вызова могут оставаться запущенными, пока хранилище готово; процессы для отдельных вызовов запускаются один раз после подтверждения.

Жёсткое ограничение: initialize и tools/list управляют каталогом внешнего сервера вне цепочки вызова. Sallyport не фильтрует содержимое по признаку учётных данных; документированные ограничения размера и длины описаний сохраняются. Имена, описания и схемы остаются произвольным содержимым под контролем внешнего сервера и могут включать конфиденциальные данные.

Авторизация

Единый порядок для каждого допущенного вызова инструмента

Пользовательского языка правил нет. Инициализация и получение каталога относятся к управлению, а не к допущенным вызовам, поэтому для них не создаются строки намерения.

  1. 01 · состояние

    Хранилище должно быть готово

    Если хранилище заблокировано, разблокируется или находится в карантине, действия агентов отклоняются. Блокировка также очищает сессии, ожидающие подтверждения, запросы учётных данных и процессы stdio MCP.

    отклонить или продолжить
  2. 02 · разрешение

    Определить цель и учётные данные

    Sallyport отклоняет вызов, если не удаётся определить обязательную цель или метаданные учётных данных.

    отклонить или продолжить
  3. 03 · каждый вызов

    Запрашивать подтверждение для каждого отмеченного использования

    Если ключ или внешний сервер требует подтверждения каждого вызова, нужно кликнуть или использовать Touch ID даже в подтверждённой сессии или сессии из списка разрешений.

    запросить или продолжить
  4. 04 · процесс

    Проверить сессию, список разрешений или режим наблюдения

    Активная сессия связывает PID и время запуска в ядре с данными об исполняемом файле и подписи кода. Она допускает процесс, а не каждый пакет или источник байтов. Совпадение со списком разрешений отключает только карточку сессии.

    запросить или продолжить
  5. 05 · намерение

    Записать до побочного эффекта

    Перед выполнением каждого вызова инструмента Sallyport должен надёжно сохранить зашифрованную запись о намерении. Если запись не удалась, операция не начинается.

    отклонить или выполнить
  6. 06 · результат

    Выполнить и закрыть строку

    Sallyport выполняет операцию, пытается добавить строку результата и возвращает ограниченный по размеру результат без проверки или изменения содержимого. Результат может включать конфиденциальные данные.

    вернуть результат

Цепочка и намерение аудита относятся к вызовам инструментов, а не к инициализации или каталогу. Изменение жизненного цикла до выполнения приводит к отказу. Во время выполнения оно отбрасывает результат, но не отменяет завершённый побочный эффект.

Хранилище и журнал

Секреты и доказательства идут разными путями

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

разблокировка и расшифровка записей

путь слепой записи аудита

Secure EnclaveКлюч P-256 с защитой Touch ID
Запечатанная идентичность хранилища
DEK хранилища
Зашифрованные записиПроизводный ключ и аутентифицированный контекст для каждой записи
Намерение + результат
Строки, запечатанные с помощью ECIES
Подписанная хеш-цепочка
Подписанная локальная контрольная точка
Открытый ключ аудита
проверка цепочки + контрольной точки
Ключ Secure Enclave открывает запечатанную идентичность хранилища, которая разворачивает ключ шифрования данных для зашифрованных записей. Отдельный открытый ключ аудита запечатывает строки намерений и результатов. Подписанная цепочка шифротекста обнаруживает правки, перестановку, внутренние пропуски и замену подписывающего ключа. Отдельная подписанная локальная контрольная точка обнаруживает откат за эту точку.
01 · Без просмотра и экспорта
В Sallyport нельзя просмотреть, экспортировать или восстановить учётные данные. Если ключи хранилища потеряны, учётные данные придётся перевыпустить у провайдеров.
02 · Зашифрованные метаданные
Имена, провайдеры, привязки к хостам, список SSH и настройки запечатываются вместе со значениями секретов.
03 · Чёткая граница обнаружения отката
Цепочка обнаруживает правки, перестановку, внутренние пропуски и замену подписывающего ключа. Контрольная точка обнаруживает откат за неё; после аварийного завершения хвост новее точки может быть потерян. Для полного локального отката нужен внешний свидетель.

Установите Sallyport

Установите подписанное приложение для Mac, добавьте учётные данные и подключите MCP-клиент.

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon

Sallyport

Sallyport выполняет API-вызовы и SSH-команды за вашего ИИ-агента. Ключи остаются в локальном хранилище на вашем Mac; вы подтверждаете каждый запуск, и каждое действие попадает в запечатанный журнал.

© 2026 Sallyport · Открытый код по лицензии Apache-2.0 · Oleg Sotnikov