# Как твой ИИ использует ключ Stripe, ни разу его не увидев

Source: https://lodos.md/ru/blog/ai-that-cant-read-your-secrets-ru
Published: 2026-06-08 · Author: Samet Samyeli · Language: ru · Reading time: 3 min

Паттерн runtime-инъекции секретов, который позволяет lodos списать деньги с клиента твоим ключом Stripe так, что ключ ни разу не попадает в контекст ИИ-модели.

---

Вот неприятный компромисс, на который идёт каждый продукт с «ИИ-агентом»: чтобы делать полезную работу, агенту нужны твои учётные данные. Чтобы списать деньги с клиента, ему нужен твой ключ Stripe. Чтобы выкатить деплой, ему нужен твой облачный токен. Обычный ответ на это: отдать эти секреты модели и надеяться, что ничего не утечёт.

Мы не хотели надеяться. Поэтому lodos устроен так, что утечка **структурно невозможна**, и сборка просто падает, если кто-то когда-нибудь это нарушит.

## В чём проблема, когда модели дают секрет

Как только секрет в открытом виде попадает в контекст языковой модели, ты теряешь над ним контроль. Он может всплыть в стенограмме, в вызове инструмента, в логе, в кратком пересказе, который модель напишет позже, или в ответе на хитро сформулированный уточняющий вопрос. Prompt-инъекция, то есть вредоносная инструкция, спрятанная в веб-странице, письме или документе, который читает агент, превращает этот скрытый риск в активный канал утечки.

Честный вывод такой: **модель вообще не должна видеть секрет.** Всё остальное это лишь латание дыры поверх изъяна в проекте.

## Ссылка, инъекция, аудит

lodos прогоняет каждый набор учётных данных через три стадии.

### 1. Ссылка

Твой ИИ никогда не работает со значением. Он работает с подстановкой:

```
{{secrets.stripe.sk_live}}
```

Эта ссылка это всё, что вообще видит модель: в чате, в workflow, в задаче. Она может рассуждать о том, как *использовать* ключ Stripe, ни разу его не держа.

### 2. Инъекция

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

```bash
# The agent asked to run this; lodos resolved the reference and
# injected the real value into the subprocess environment only.
STRIPE_API_KEY={{secrets.stripe.sk_live}} ./charge-customer.sh
```

Модель видит строку слева. Подпроцесс получает значение справа. Эти двое никогда не встречаются внутри стенограммы.

### 3. Аудит

Каждый доступ дописывается в защищённую от подделки цепочку HMAC. Лог фиксирует, *что* секрет был использован, но никогда *какое значение*. Пути к полям непрозрачны, и любая попытка изменить историю рвёт цепочку.

## Почему мы не просто доверяем политике

Было бы легко написать «ИИ настроен не раскрывать секреты» и на этом успокоиться. Мы считаем, что без принудительного контроля это ничего не стоит, поэтому встроили гарантию прямо в процесс релиза.

При каждом релизе запускается проверка инвариантов на этапе сборки, и сборка падает, если хоть что-то из этого когда-либо нарушено:

- Нигде нет инструмента, который возвращал бы значение секрета в открытом виде.
- Нет сырого провайдера model-API, только встроенный Claude Code с твоим собственным логином.
- Нет `eval`, `Function`, `vm` или `child_process` ни на одном пути рендеринга.
- Неизвестные инструменты завершаются с отказом по умолчанию, их никогда молча не разрешают.
- Агент работает с явно запрещённым `bash`.
- Ни один одиночный грант не может собрать «смертельную тройку»: приватные данные + недоверенный контент + утечка.
- Workflow только декларативные, нет пути исполнения кода.

Если будущий коммит добавит инструмент, который передаёт модели секрет, релиз просто не выйдет.

## От чего мы отказались и что выпустили взамен

Стена заставила нас делать лучшие проекты, а не меньше функций:

| От чего отказались | Что выпустили взамен |
| --- | --- |
| Сырой model-API, который ИИ вызывает напрямую | Встроенный Claude Code с твоим собственным логином |
| Разрешать ИИ запускать команды на хосте (bash) | Runtime-инъекция в подпроцесс, слепая к секретам |
| `eval()` в workflow | Декларативный YAML, без пути исполнения кода |
| Презентации, сгенерированные через картинки (облачный egress) | Офлайновые текстовые презентации, ноль сети |

Отказ от утечек не убрал возможности. Он их сфокусировал.

## Итог

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

В этом и состоит вся идея lodos: [твой ИИ видит твою работу, а не твои секреты](/blog/the-zero-knowledge-company-os). Прочитай полную [архитектуру безопасности](/security) или [скачай lodos](/download) и дай своему агенту задачу вместо ключа.
