Przejdź do głównej treści
Gdy agent wywołuje narzędzie, argumenty, które przekazuje, są tak samo ryzykowne jak prompt, który je wyprodukował — klucz sk-… wrzucony do pola command, numer SSN klienta wklejony do body, wewnętrzny token w nagłówku żądania. Werdykt sanitize firewalla wychwytuje ten materiał w argumentach wywołania narzędzia, zastępuje go typowanym tokenem redakcji i przesyła oczyszczone wywołanie — więc akcja wciąż się uruchamia, ale sekret nigdy nie opuszcza bramy.
„Sanityzuj wyjście narzędzia” oznacza argumenty wywołania, nie wynik narzędzia. Ludzie szukają sanitize tool output, oczekując, że firewall wyczyści to, co narzędzie zwraca. Werdykt sanitize nie dotyka wyników narzędzia — redaguje argumenty, które twój agent wysyła do wywołania narzędzia. Jeśli potrzebujesz prześwietlić tekst, który narzędzie lub model zwraca, to zadanie etapu wyjścia Guardrails, nie reguły sanitize firewalla.
To jeden werdykt w języku dopasowania firewalla. Dla pełnego zestawu zobacz Werdykty i referencję reguł; ta strona to skupiony przewodnik po pisaniu i rozumowaniu o sanitize.

1. Co robi sanitize — i czego nigdy nie dotyka

Reguła z verdict: sanitize uruchamia silnik redakcji nad argumentami wywołania narzędzia, zanim wywołanie zostanie dyspozytowane. Każde dopasowanie jest zastępowane kanonicznym tokenem, a wywołanie przebiega z oczyszczonymi argumentami — narzędzie wciąż się wykonuje, po prostu bez surowego sekretu w środku.

Redaguje

Argumenty JSON tool_call wyemitowanego przez model lub tools/call MCP — command, body, headers, dowolne pole stringowe, gdzie sekret lub PII wylądowały.

Nigdy nie redaguje

Treści, którą narzędzie zwraca, promptu, tekstu odpowiedzi modelu. Sanitize to redaktor tylko-argumentów. Prześwietlanie tekstu to sprawa Guardrail.
Redaktor zastępuje każde dopasowanie typowanym tokenem: dopasowanie presetu staje się [redacted:<preset>] (np. [redacted:openai_key]), a dopasowanie wzorca niestandardowego staje się [redacted:custom]. Kształt argumentu jest zachowany — zmienia się tylko wrażliwy podłańcuch — więc narzędzie, które oczekuje poprawnego JSON, wciąż otrzymuje poprawny JSON.

2. Wbudowane presety detektorów

Reguła sanitize nazywa jeden lub więcej presetów (dobrze znane kształty sekretów/PII) lub niestandardowe wzorce regex. Wbudowane presety:
PresetWychwytuje
aws_access_keyid klucza dostępu AWS (AKIA… / ASIA… + 16 znaków)
aws_secret_key40-znakowy sekret AWS (świadomy granic)
openai_keysk- + ≥32 znaki
anthropic_keysk-ant- + ≥40 znaków
bearer_tokenBearer + token ≥16 znaków (słowo kluczowe zachowane)
emailAdres e-mail
ssn_usUS SSN w formie 3-2-4
credit_cardCiąg 13–19 cyfr, który przechodzi sprawdzenie Luhna
Reguła sanitize musi deklarować co najmniej jeden preset lub wzorzec niestandardowy — pusty sanityzator jest odrzucany przy zapisie reguły. Dopasowanie credit_card jest dodatkowo sprawdzane Luhnem, więc liczba o tej samej długości, która nie jest poprawną kartą, jest pozostawiona nietknięta, zamiast nadmiernie zredagowana.

3. Jeden konkretny przykład

Napisz to w edytorze reguł konsoli. Przykład redaguje klucz OpenAI i dowolny e-mail z argumentów dowolnego wywołania narzędzia http.*, które twój agent emituje, potem przesyła oczyszczone wywołanie:
{
  "label": "strip secrets from http tool args",
  "stage": "response",
  "tool_name_glob": "http.*",
  "verdict": "sanitize",
  "sanitize_json": "{\"presets\":[\"openai_key\",\"email\"],\"custom\":[]}"
}
Jeśli model emituje wywołanie jak:
{ "name": "http.post", "arguments": { "url": "…", "body": "key=sk-AAAA…BBBB user=jo@acme.com" } }
brama przesyła je z ciałem przepisanym na key=[redacted:openai_key] user=[redacted:email] — żądanie wciąż się uruchamia, sekret i adres nigdy nie opuszczają bramy.
Przypnij regułę do etapu response (tool_calls wyemitowane przez model) lub zostaw etap pusty, aby pokryć też powierzchnię mcp. To powierzchnie, które niosą argumenty czasu wywołania, czyli to, co sanitize redaguje.

4. Na powierzchni inbound sanitize eskaluje do deny

Powierzchnia inbound ewaluuje narzędzia, które agent ogłasza w żądaniu — definicje narzędzi, które nie niosą jeszcze żadnych argumentów czasu wywołania. Nie ma tam czego redagować, więc werdykt sanitize na powierzchni inbound eskaluje do deny (fail-closed): żądanie jest blokowane z firewall_blocked, zamiast przesłane bez redakcji.
Nie pisz reguły sanitize, oczekując, że wyczyści ona ogłoszenie narzędzia inbound — ona je zablokuje. Jeśli chcesz, by definicja narzędzia zniknęła z żądania, użyj wyraźnego deny. Zarezerwuj sanitize na powierzchnie response i mcp, gdzie istnieją prawdziwe argumenty.

5. Sanitize a inne sposoby obsługi sekretu

Trzy warstwy mogą zadziałać na sekret, który agent zaraz wycieknie — wybierz po co i gdzie:
Usuwa sekret z argumentów wywołania narzędzia i wciąż uruchamia wywołanie. Użyj go, gdy akcja jest legalna, ale agent umieścił coś wrażliwego w polu. Tylko warstwa argumentów.
Zatrzymuje wywołanie całkowicie. Użyj go, gdy sama akcja jest niebezpieczna, nie tylko argument. To też jest to, czym staje się sanitize na powierzchni inbound. Zobacz blokowanie narzędzi.
Guardrails Secrets Blocker i PII prześwietlają tekst żądania lub odpowiedzi (w tym, na etapie wyjścia, treść wygenerowaną przez model). To warstwa dla „tego, co narzędzie lub model zwraca” — rzeczy, której sanitize nie robi.
Przetestuj, zanim wyegzekwujesz. Sanitize przepisuje argumenty wywołania na żywo na powierzchniach response i mcp. Napisz swoje reguły sanitize najpierw w trybie cienia i obserwuj strumień zdarzeń, aby potwierdzić, że dopasowują to, czego oczekujesz, zanim którykolwiek argument zostanie faktycznie przepisany.

6. Gdzie sanitize pojawia się w twoim śladzie

Jak każdy werdykt, ewaluacja sanitize jest rejestrowana jako zdarzenie firewalla — filtrowalne po werdykcie, powierzchni, narzędziu i uruchomieniu w logu zdarzeń i zwijane w analityce. W trybie cienia werdykt sanitize (jak każdy egzekwujący werdykt) jest degradowany do audit, a powód jest poprzedzony przedrostkiem [shadow] would …, więc możesz zmierzyć wpływ, zanim którykolwiek argument zostanie faktycznie przepisany.

Dokąd dalej

Wszystkie werdykty

allow, audit, deny, sanitize, pending_approval, cap_cost.

Waliduj argumenty

Dopasuj wywołanie po tym, co jest w jego argumentach — gramatyka klauzul JSONPath.

Blokuj narzędzia

Gdy problemem jest sama akcja, odmów całego wywołania.

Firewall + Guardrails

Prześwietl tekst, który narzędzie lub model zwraca — warstwę, której sanitize nie pokrywa.
Dla zagrożeń, które sanitize pomaga powstrzymać, zobacz eksfiltrację danych i niebezpieczne wywołania narzędzi. Dla pełnej gramatyki reguł stojącej za werdyktem zobacz referencję reguł firewalla.