Пустите агента в прод.Ключи оставьте себе.
Sallyport держит учётные данные в локальном хранилище и сам выполняет API-вызовы и SSH-команды за агента. Каждый запуск вы подтверждаете кликом или через Touch ID. Нет команды, которая показала бы сохранённый ключ, и кнопки экспорта тоже нет.
brew install --cask olegsotnikov/tap/sallyportmacOS 14+ · Apple Silicon · Apache-2.0 · Бесплатно · без аккаунта · без облака
Для инженеров, которые пускают Claude Code, Cursor или Codex к настоящей инфраструктуре
Подтверждение в рабочем контексте
Этот ключ требует подтверждения при каждом использовании. Вызов ждёт вашего решения.
⏺ sallyport · http.request
PATCH api.cloudflare.com/client/v4/zones/…/dns_records
⎿ key cloudflare · flagged approval per call
⎿ ожидание подтверждения...
Требуется подтверждение
http.request → api.cloudflare.com
claude ← node ← zsh
Сейчас агент может прочитать ваши ключи
API-токены в .env, SSH-ключи на диске, OAuth-гранты в конфигах. Всё это читает и сам агент, и каждый пакет, который он подтягивает. А одного отравленного README хватит, чтобы увести их наружу.
Секреты открыты процессу
Токены в .env и переменных оболочки, SSH-ключи на диске, OAuth-токены в конфигах. Их читает агент, его дочерние процессы и всё, что npm поставил сегодня.
Инъекция в промпт превращается в кражу
Вредоносная страница или README велит агенту отправить токен на новый адрес, и агент подчиняется. Он для того и создан, чтобы выполнять инструкции.
Вы узнаёте из счёта
Без шлюза не остаётся записи о том, какие вызовы сделал агент, куда он их отправил и что в них было. Украденные ключи всплывают через недели, по чужому расписанию.
Это не гипотеза
Май 2026
Атака на npm через TanStack
84 вредоносные версии в 42 пакетах собирали облачные учётные данные, токены GitHub и SSH-ключи прямо во время установки, а затем расползались через пакеты самих жертв.
Конец 2025
Червь Shai-Hulud
Скомпрометированные npm-пакеты крали секреты при установке и с помощью украденных данных заражали следующую партию пакетов.
Август 2025
Nx S1ngularity
Отравленный сборочный инструмент сканировал машины разработчиков в поисках секретов, пробовал локальные AI-инструменты и выгружал добычу через GitHub CLI.
Все три собирали ключи из переменных окружения и файлов на диске. Sallyport не держит рабочие ключи ни там, ни там.
Агенту ключи не нужны
Агент отправляет запрос: вызови этот API, выполни эту команду на таком-то хосте. Sallyport подставляет учётные данные внутри приложения, выполняет вызов и возвращает результат. Ключ не попадает в окружение агента, а запечатанный журнал показывает, что выполнялось и кто это подтвердил.
Фиксированная лестница решений
Каждое действие поднимается по одной и той же вшитой лестнице. Здесь нет языка правил, который можно настроить неправильно, и нет движка правил, который со временем протухнет; необязательный список разрешений может пропустить запрос подтверждения сессии для доверенных идентификаторов кода.
Модель доверия
блокировка хранилища
Хранилище блокирует всё
При запуске хранилище заблокировано. Secure Enclave и Touch ID защищают доступ к его данным. До разблокировки Sallyport отклоняет все действия.
подтверждение каждого вызова
Помеченные ключи требуют подтверждения каждый раз
Ключ с пометкой "Подтверждение на каждый вызов" требует клик или Touch ID при каждом использовании, в том числе внутри подтверждённой сессии.
подтверждение сессии
Одно подтверждение на запуск агента
Новый процесс агента показывает карточку с данными о подписи его кода. Подтверждение действует, пока процесс не завершится, вы не отзовёте сессию или хранилище не заблокируется.
наблюдение
Выполнить и записать
Если подтверждение сессий выключено, действия выполняются без карточек и остаются в журнале.
Блокировка хранилища, подтверждение каждого вызова, подтверждение сессии, наблюдение.
Всё в одном подписанном приложении
Одно подписанное приложение для Mac держит хранилище, подтверждения и журнал. Аккаунт создавать не нужно, облачного сервиса за ним нет.
Абсолютная блокировка хранилища
Пока хранилище заблокировано, Sallyport отклоняет все действия агентов и все операции управления, кроме проверки статуса.
Шифрование на диске
Хранилище шифрует имена и значения ключей, провайдеров, привязки к хостам, список SSH и настройки.
Данные о процессе
В карточке указаны подпись кода вызывающего процесса и цепочка родительских процессов, включая неподписанные процессы.
Touch ID для изменений
Изменения конфигурации могут требовать Touch ID. Синтетический клик не пройдёт биометрическую проверку.
Журнал со слепой записью
Sallyport шифрует записи о запусках и действиях при сохранении, а затем связывает шифротекст хеш-цепочкой.
SSH с видимой командой
Sallyport видит всю SSH-команду, проверяет ключ хоста и сохраняет зашифрованную запись сессии. Приватный ключ остаётся в приложении.
Режим наблюдения
Режим наблюдения убирает карточки сессий, но сохраняет блокировку хранилища, подтверждение отдельных вызовов и журнал.
Без восстановления
Хранилище нельзя экспортировать, раскрыть или восстановить отдельным ключом. При его потере перевыпустите учётные данные у провайдеров.
HTTP, SSH и MCP
Агент подключается к Sallyport как к обычному MCP-серверу. Все действия проходят ту же лестницу и попадают в тот же журнал.
HTTP API
http.request → api.github.comПриложение выполняет HTTPS-вызов и подставляет учётные данные только во время выполнения. При перенаправлении на другой хост оно не передаёт их дальше.
SSH
ssh.exec → deploy@prod-03Помощник без состояния открывает соединение. Приложение подписывает запросы SSH, закрепляет ключи хостов и сохраняет запись сессии. Приватный ключ не попадает в помощник.
MCP-серверы
github.create_issueПроксируйте локальные stdio- или удалённые MCP-серверы через тот же шлюз. Sallyport хранит и обновляет токены OAuth 2.1.
Что на кону
84
вредоносных версий пакетов в одной npm-атаке, охотившейся за учётными данными
0
аккаунтов, облачных сервисов и телеметрии: Sallyport работает целиком на вашем Mac
1 касание
Touch ID подтверждает помеченный вызов; синтетический клик его не подделает
~2 мин
от brew install до первого вызова через шлюз
Чего Sallyport не обещает
Инструменты безопасности любят обещать лишнего, поэтому свои границы мы зафиксировали письменно.
Ограничения
Подтверждённая сессия может действовать неправильно
Подтверждение сессии разрешает процессу работать, но не оценивает смысл каждого запроса. Для ключей, которые нужно проверять отдельно, включите подтверждение каждого вызова.
Sallyport не остановит нативный код с вашими правами
Sallyport не является антивирусом. Код с правами вашего пользователя может атаковать приложение или операционную систему.
Sallyport не проверит запрос за вас
Карточки показывают подпись кода вызывающего процесса и цепочку процессов. Решение всё равно принимаете вы.
Частые вопросы
Как лицензируется Sallyport?
Где хранятся мои секреты?
Приложение связывается с серверами Sallyport?
Каковы системные требования?
Что происходит, пока хранилище заблокировано?
Работает ли Sallyport с Claude Code и другими агентами?
Может ли агент увидеть мои ключи?
Что делать при потере доступа к Mac?
Вашего агента отделяет от ваших ключей одна инъекция в промпт.
Бесплатная загрузка. Apple Silicon, macOS 14 или новее. Аккаунт не нужен. Никогда.
brew install --cask olegsotnikov/tap/sallyportmacOS 14+ · Apple Silicon