allow
Инструменты, разрешённые заранее
Правило вроде Bash(git commit:*) пропускает эту команду без остановки. Правило описывает команду, а не то, что команда откроет, когда запустится.
Claude Code
Система разрешений решает, какие инструменты Claude Code может запускать. О том, до чего эти инструменты дотянутся, она не говорит ничего, а дотянутся они до любого секрета на вашей машине. Sallyport убирает ключи туда, где агент их не прочитает.
Claude Code спрашивает, прежде чем запустить инструмент, который вы не разрешили. Правила лежат в settings.json списками allow, ask и deny, и настроить их как следует стоит.
allow
Правило вроде Bash(git commit:*) пропускает эту команду без остановки. Правило описывает команду, а не то, что команда откроет, когда запустится.
ask
Поведение по умолчанию. Claude Code показывает вызов инструмента и ждёт. Вы разбираете одно действие, прямо сейчас, с тем контекстом, который у вас есть в два часа ночи.
deny
Правило deny не пускает инструмент Read в ./.env. Оно не мешает разрешённой команде шелла открыть тот же файл и ничего не решает про процессы, которые запускают ваши зависимости.
bypass
Флаг --dangerously-skip-permissions снимает вопрос целиком. Про него ниже отдельный раздел.
Все эти правила про инструменты агента. Ни одно из них не про файл, который инструмент читает. Ваши API-токены лежат в .env, ключ SSH в ~/.ssh, и оба доступны любому процессу, запущенному от вашего имени, с запросами или без.
К нему приходят по понятным причинам: долгие рефакторинги и ночные прогоны, где диалог подтверждения означает простой до утра. Стоит понимать, что именно вы за это отдали.
Claude Code и раньше мог читать ваши файлы, работать в вашем шелле и ходить в сеть. Флаг убирает паузу, на которой вы бы это заметили.
Запрос был шансом поймать агента на открытии .env. Преградой вокруг самого файла он не был никогда. Прочитать его может любой процесс от вашего имени, включая ту зависимость, которую npm поставил, пока вы читали запрос.
Одна prompt injection на загруженной странице, один отравленный README в транзитивной зависимости, и эти инструкции оказываются внутри сессии, где лежат ваши ключи и не осталось ни одного запроса.
YOLO-режим отнимает у вас шанс заметить. Ключи в досягаемости не он сделал: они были в досягаемости и в обычном режиме.
Security review
Claude Code прочитает дифф и отметит в нём уязвимости, и пусть отмечает. Эта работа про код, который вы выкатываете. Про то, до чего дотягивается сам агент во время работы, она не говорит ничего, а именно об этом вся страница. Это разные задачи, и решение одной ничего не даёт другой.
Sallyport держит ключ и делает вызов сам. Claude Code просит действие и получает результат. В его окружение ключ не попадает, поэтому пропущенному запросу, отравленной зависимости и внедрённой инструкции просто нечего унести.
01
http.request на api.stripe.com или ssh.exec на prod-03. Приходит по MCP, ровно так же, как Claude Code вызывает любой другой инструмент.
02
Закрытое хранилище отказывает во всём. Ключ с подтверждением каждого вызова показывает карточку каждый раз. В остальных случаях одна карточка на запуск агента, с полномочиями подписи кода вызывающего.
03
Ключ подставляется внутри приложения, во время выполнения. В окружение агента он не попадает, и редирект на другой хост его с собой не уносит.
04
Зашифровано и связано хешами прямо в момент действия. Узнать, что происходило, можно не полагаясь на рассказ самого агента.
Дальше запускайте Claude Code как вам удобно, с запросами или без. Решение, которое имело значение, из агента ушло.
Sallyport живёт в строке меню и держит хранилище внутри своего процесса. Никакого демона и никакого аккаунта.
Онбординг создаёт хранилище и включает его гейт по Touch ID.
brew install --cask olegsotnikov/tap/sallyportClaude Code получает http.request, ssh.exec и любой внешний MCP-сервер, который вы пустили через Sallyport.
claude mcp add sallyport -- /Applications/Sallyport.app/Contents/MacOS/sp mcpПоложите ключ в хранилище, привяжите к его хосту и уберите из .env. Самые страшные пометьте как требующие подтверждения на каждый вызов.
stripe → api.stripe.com · подтверждение каждого вызоваМинуты две. Запросы, которые останутся, показывает Sallyport, и спрашивают они про действия на настоящей инфраструктуре, а не про то, какому инструменту можно запуститься.
Бесплатная загрузка. Apple Silicon, macOS 14 или новее. Аккаунт не нужен. Никогда.
brew install --cask olegsotnikov/tap/sallyportmacOS 14+ · Apple Silicon