# Jak twoje AI uzywa klucza Stripe, nigdy go nie widzac

Source: https://lodos.md/pl/blog/ai-ktore-nie-czyta-twoich-sekretow
Published: 2026-06-08 · Author: Samet Samyeli · Language: pl · Reading time: 3 min

Wzorzec wstrzykiwania sekretow w czasie wykonania, dzieki ktoremu lodos obciaza klienta twoim kluczem Stripe, a klucz nigdy nie trafia do kontekstu modelu AI.

---

Oto niewygodny kompromis, na ktory godzi sie kazdy produkt typu "agent AI": zeby wykonac uzyteczna prace, agent potrzebuje twoich danych uwierzytelniajacych. Zeby obciazyc klienta, potrzebuje twojego klucza Stripe. Zeby wdrozyc, potrzebuje twojego tokena chmurowego. Zwykla odpowiedz to przekazanie tych sekretow modelowi i nadzieja, ze nic nie wycieknie.

My nie chcielismy liczyc na nadzieje. Dlatego lodos jest zbudowany tak, ze wyciek jest **strukturalnie niemozliwy**, a build sie nie powiedzie, jesli ktokolwiek kiedykolwiek to zlamie.

## Problem z przekazaniem modelowi sekretu

Gdy tylko sekret w postaci jawnej trafi do kontekstu modelu jezykowego, tracisz nad nim kontrole. Moze sie pojawic w transkrypcji, w wywolaniu narzedzia, w logu, w podsumowaniu, ktore model napisze pozniej, albo w odpowiedzi na sprytnie sformulowane pytanie uzupelniajace. Prompt injection, czyli zlosliwa instrukcja ukryta na stronie internetowej, w mailu albo w dokumencie, ktory agent czyta, zamienia to utajone ryzyko w aktywna sciezke eksfiltracji.

Uczciwy wniosek jest taki, ze **model w ogole nie powinien widziec sekretu.** Wszystko inne to lagodzenie skutkow wady projektowej.

## Odwolanie, wstrzykniecie, audyt

lodos obsluguje kazde dane uwierzytelniajace w trzech etapach.

### 1. Odwolanie

Twoje AI nigdy nie pracuje z wartoscia. Pracuje z symbolem zastepczym:

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

To odwolanie to wszystko, co model kiedykolwiek widzi: w czacie, w workflow, w zadaniu. Moze rozumowac o *uzyciu* klucza Stripe, nigdy go nie trzymajac.

### 2. Wstrzykniecie

Gdy zadanie naprawde potrzebuje danych uwierzytelniajacych, lodos odszyfrowuje je **lokalnie** i przekazuje do izolowanego podprocesu jako zmienna srodowiskowa, poza zasiegiem modelu, i znika w chwili, gdy zadanie sie konczy.

```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
```

Model widzi linie po lewej. Podproces dostaje wartosc po prawej. Te dwie rzeczy nigdy nie spotykaja sie w transkrypcji.

### 3. Audyt

Kazdy dostep dopisuje sie do lancucha HMAC odpornego na manipulacje. Log zapisuje *to, ze* sekret zostal uzyty, a nigdy *jaka wartosc*. Sciezki pol sa nieprzejrzyste, a kazda proba zmiany historii lamie lancuch.

## Dlaczego nie ufamy po prostu polityce

Latwo byloby napisac "AI jest skonfigurowane tak, by nie ujawniac sekretow" i przejsc dalej. Uwazamy, ze bez egzekwowania to nic nie warte, dlatego wbudowalismy te gwarancje w proces wydawniczy.

Skan niezmiennikow w czasie buildu uruchamia sie przy kazdym wydaniu i przerywa build, jesli ktorykolwiek z ponizszych warunkow zostanie naruszony:

- Nigdzie nie istnieje narzedzie, ktore zwraca wartosc sekretu w postaci jawnej.
- Nie ma surowego dostawcy API modelu, jest tylko wbudowany Claude Code z twoim wlasnym logowaniem.
- Nie ma `eval`, `Function`, `vm` ani `child_process` na zadnej sciezce renderowania.
- Nieznane narzedzia zawodza bezpiecznie (fail closed), nigdy nie sa po cichu dopuszczane.
- Agent dziala z jawnie zablokowanym `bash`.
- Zadne pojedyncze uprawnienie nie moze domknac "smiertelnej triady": dane prywatne plus tresc niezaufana plus eksfiltracja.
- Workflow sa wylacznie deklaratywne, nie ma sciezki kodu do wykonania.

Jesli przyszly commit doda narzedzie, ktore przekaze modelowi sekret, wydanie po prostu nie zostanie opublikowane.

## Czego odmowilismy i co dostarczylismy zamiast tego

Ten mur wymusil lepsze projekty, a nie mniej funkcji:

| Czego odmowilismy | Co dostarczylismy zamiast |
| --- | --- |
| Surowego API modelu wywolywanego bezposrednio przez AI | Wbudowany Claude Code z twoim wlasnym logowaniem |
| Pozwolenia AI na uruchamianie polecen hosta (bash) | Wstrzykiwanie do podprocesu w czasie wykonania, slepe na sekrety |
| `eval()` w workflow | Deklaratywny YAML, brak sciezki kodu do wykonania |
| Prezentacji generowanych obrazem (egress do chmury) | Prezentacje tekstowe offline, zero sieci |

Odmowa wyciekow nie odebrala mozliwosci. Ja ukierunkowala.

## Wniosek

Mozesz powierzyc agentowi AI prawdziwa prace wymagajaca danych uwierzytelniajacych, nie dajac mu tych danych. Sekret pozostaje zaszyfrowany na twoim komputerze, trafia do podprocesu tylko w chwili uzycia i nigdy nie przekracza granicy kontekstu modelu.

Na tym polega cala idea lodos: [twoje AI widzi twoja prace, a nie twoje sekrety](/blog/the-zero-knowledge-company-os). Przeczytaj pelna [architekture bezpieczenstwa](/security) albo [pobierz lodos](/download) i daj swojemu agentowi zadanie zamiast klucza.
