Секреты и трафик

Секреты и исходящий трафик — агенты не держат ваши доступы

Агент считается самым недоверенным компонентом на пути запроса. Секреты хранятся зашифрованными в границах организации; агенты дотягиваются до них только через ограниченные инструменты, а secure-curl подставляет плейсхолдеры на границе исходящего трафика — поэтому открытый текст не попадает в контекст агента.

Открытый текст не доходит до агента

secure-curl раскрывает плейсхолдеры {{alias}} на прокси исходящего трафика, вне адресного пространства агента. Доступ подставляется уже в сеть — он не оказывается ни в транскрипте, ни в коммите, ни в ответе модели.

Ограниченный доступ по минимуму прав

secret_list возвращает метаданные, но никогда значения. Секреты ограничиваются по агенту, по процессу, по рантайму и по команде — все четыре оси проверяются в диспетчере инструментов.

Аудит без открытого текста

Каждое обращение к секрету — строка аудита только на добавление: алиас и солёный хеш, но не значение, со сцеплением, выявляющим подделку. Утёкший журнал аудита не позволяет восстановить доступ.

Трафик под наблюдением в обе стороны

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

Модель угроз сформулирована прямо

Наш подход к безопасности начинается с неудобной посылки: LLM-агент — самый недоверенный компонент на пути запроса. Всё, что он может назвать открытым текстом, он может выдать в ответ модели, в аргумент вызова инструмента, в тело коммита или в URL картинки в Markdown. Поэтому мы проектируем с расчётом на утечку, а не в надежде, что её не будет.

Как секрет используется, не будучи раскрытым

Вместо того чтобы получить значение открытым текстом и вставить его в команду curl, агент пользуется secure-curl с плейсхолдерами:

1
2
forge-curl -X POST https://api.stripe.com/v1/charges \
  -H "Authorization: Bearer {{stripe_api_key}}" ...

Плейсхолдер {{stripe_api_key}} раскрывается на прокси исходящего трафика Forge — на границе, которой агент не управляет, — а не в процессе агента. Настоящий доступ подставляется в исходящий запрос и уходит дальше. Агент никогда не видит значения, поэтому значение не может оказаться ни в его контексте, ни в транскрипте, ни в синхронизированном снимке сессии .

Для обнаружения агенты вызывают secret_list, который возвращает только алиасы и метаданные — никогда значения.

Ограничено до минимума

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

Аудит без раскрытия

Каждое взаимодействие с секретом порождает строку аудита только на добавление: кто, когда, какой алиас, какой адресат — плюс солёный SHA значения, но не само значение. Цепочка выявляет подделку, а поскольку хеш посолён отдельным перцем организации, компрометации одного лишь журнала аудита недостаточно, чтобы восстановить доступ.

Та же позиция позволяет Simple Container держать зашифрованные в git секреты в безопасности от агентов, читающих ваш репозиторий, — фундамент, который нужен агентному конвейеру, прежде чем ему можно доверить отгрузку.

Готовы выпускать быстрее?

Forge проходит весь цикл сам — от размеченной задачи до пулл-реквеста, готового к ревью.