400 z kontroli bezpieczeństwa to nie błąd
w twoim promptcie. To polityka robiąca swoją robotę. Twoim zadaniem jest znaleźć,
która polityka, a potem zdecydować, czy naprawić wywołanie, czy rozluźnić regułę.
1. Dlaczego moje żądanie llm zostało zablokowane? — zacznij od kodu błędu
Każda blokada bezpieczeństwa na hostowanej bramie zwraca HTTP 400 z czytelnym maszynowocode w ciele błędu w kształcie OpenAI. Ten kod to pierwsze
rozwidlenie na drodze — mówi ci, którą płaszczyznę kontrolną debugować i który
strumień otworzyć.
firewall_approval_pending
Wywołanie narzędzia jest wstrzymane do zatwierdzenia przez człowieka —
nie odrzucone. Rozstrzygnij je, nie debuguj. Zobacz
§4.
Wszystkie trzy kody są skip-retry: ponowne uruchomienie identycznego
wywołania kieruje do tej samej polityki i znów blokuje. Ponawianie to zmarnowane
opóźnienie — napraw wejście lub regułę zamiast tego. Pełna tabela kodów żyje w
Kodach błędów.
2. guardrail_blocked — znajdź regułę w Matches
guardrail_blocked oznacza, że polityka treści dołączona do twojego klucza (lub
domyślna twojej przestrzeni roboczej) uruchomiła akcję block wobec wejścia
żądania lub wyjścia modelu. Komunikat blokady nazywa guardrail i regułę, a
żądanie nie kosztuje cię kwoty — blokady wejścia odpalają przed metrowaniem;
blokady wyjścia zwracają wstępnie skonsumowaną kwotę.
Prześledź to:
Otwórz strumień Matches
W konsoli przejdź do zakładki Matches na stronie Guardrails
(
GET /api/guardrail/match, Member). Każda reguła, która odpala, ląduje tu —
jej RuleType, Action, Stage oraz łańcuch Detail w rodzaju
pii: email, phone lub matched 3 keyword(s).Przefiltruj do blokady
Przefiltruj po
action = block i czasie twojego żądania. Pasujący wiersz
mówi ci typ reguły (pii, regex, keyword, max_chars, llm_judge,
grounding, external) oraz czy odpaliła na etapie input czy output.Zobacz, co faktycznie dopasowała
Domyślnie strumień rejestruje to, że reguła odpaliła i jej meta-łańcuch
Detail — nie dopasowany podłańcuch. Włącz Log raw content na tym
guardrailu (domyślnie wyłączone, postawa konserwatywna wobec prywatności),
aby uchwycić obrażający łańcuch do triażu. Przełącznik jest nieretroaktywny.Jeden konkretny przykład
Wysyłasz odpowiedź wsparcia, która zawiera SSN klienta. Twój guardrailpii-shield ma nadpisanie entity_actions, które blokuje na ssn:
400 guardrail_blocked. Strumień Matches pokazuje
RuleType: pii, Action: block, Stage: input, Detail: pii: ssn. Poprawka to
decyzja produktowa, nie zmiana kodu: rozluźnij nadpisanie do mask (model nigdy
nie widzi SSN, wywołanie przechodzi) lub utrzymaj blokadę i usuń SSN powyżej.
Zobacz Guardrails po pełną referencję typów reguł i
encji PII.
3. firewall_blocked — znajdź werdykt w Events
firewall_blocked oznacza, że polityka Firewall
odrzuciła wywołanie narzędzia. Na powierzchni inbound objawia się jako 400;
przez bramę MCP objawia się jako błąd narzędzia (firewall deny: <reason>),
aby model mógł zareagować zamiast się wysypać. metadata błędu niesie kod
powodu, czynniki ryzyka i wynik.
Prześledź to w strumieniu Events (GET /api/workspace/firewall/events,
Developer+) — surowy rekord stojący za każdą ewaluacją. Każde zdarzenie niesie
werdykt i powierzchnię, na której zostało zobaczone:
| Werdykt | Co oznacza dla twojej blokady |
|---|---|
deny | Reguła (lub default_verdict) zablokowała wywołanie. To jest twój firewall_blocked. |
audit | Dozwolone, ale zalogowane — w tym [shadow] „would deny”, jeśli polityka jest w trybie cienia. |
cap_cost | Zakumulowane wydatki uruchomienia przekroczyły limit w centach per reguła; rozwiązuje się w deny. |
Przefiltruj Events do odrzucenia
Przefiltruj po
verdict=deny, a potem po tool, run_id lub session_id,
aby wyizolować dokładne wywołanie. Zdarzenie nazywa dopasowaną regułę i
powierzchnię — inbound, response, mcp lub egress.Odczytaj powód na dopasowanej regule
Łańcuch powodu (np.
destructive shell command,
egress host not allowed) mówi ci, czy reguła dopasowała na nazwie
narzędzia, klauzuli args_match czy celu egress. Słownik
werdyktów i referencja glob i
JSONPath dekodują dopasowanie.4. firewall_approval_pending — jest wstrzymane, nie odrzucone
firewall_approval_pending to jedyne 400, którego nie powinieneś traktować
jako blokady. Werdykt pending_approval wstrzymał wywołanie narzędzia dla
człowieka; ciało błędu niesie id zatwierdzenia. Wywołanie nie zawiodło — ono
czeka.
- Recenzent je rozstrzyga — z konsoli (Developer+) lub przez twój własny
HMAC webhook callback (
POST /api/v1/firewall/approvals/:id/callback). - Twój agent odpytuje
GET /api/v1/firewall/approvals/:id(token bramy) po id z błędu. - Po zatwierdzeniu wyślij ponownie oryginalne wywołanie z jednorazowym
nagłówkiem
X-OrcaRouter-Firewall-Approval, a brama przepuści je ten jeden raz.
5. Nie blokada bezpieczeństwa? Najpierw wyklucz klucz
Nie każde400 to werdykt guardraila lub firewalla. Zanim zaczniesz nurkować w
strumieniach, wyklucz ograniczenia klucza — te odrzucają przed uruchomieniem
jakiejkolwiek polityki i nie niosą powyższych kodów bezpieczeństwa:
Model odrzucony przed wywołaniem nadrzędnym
Model odrzucony przed wywołaniem nadrzędnym
Lista dozwolonych
model_limits klucza nie obejmuje żądanego modelu. Żądania
o model spoza listy są odrzucane z góry. Dodaj model do klucza lub wywołaj
taki, który jest dozwolony.Odrzucone przy uwierzytelnieniu po IP
Odrzucone przy uwierzytelnieniu po IP
Klucz ma listę dozwolonych
allow_ips, a żądanie przyszło z adresu spoza
niej. Dodaj IP / CIDR wywołującego lub wołaj z dozwolonej sieci.Osiągnięty limit wydatków
Osiągnięty limit wydatków
Pułap
credit_limit_usd klucza jest wyczerpany (0 oznacza nielimitowany).
Podnieś limit lub przejdź na klucz z zapasem.403 na trasach /api/v1/firewall/*
403 na trasach /api/v1/firewall/*
Hooki bramy (
evaluate, dyspozycja MCP) wymagają klucza z
is_firewall_gateway=true. Zwykły klucz relay dostaje 403. Wybij klucz w
zakresie firewall-gateway dla tych tras.6. Dwuminutowy przepływ triażu
Blokada na tekście promptu lub odpowiedzi
Kod to
guardrail_blocked → otwórz Matches, przefiltruj
action=block, odczytaj Stage + Detail. Napraw treść lub regułę;
udowodnij to w zakładce Test guardraila.Blokada na wywołaniu narzędzia
Kod to
firewall_blocked → otwórz Events, przefiltruj
verdict=deny, odczytaj powierzchnię + powód. Napraw wywołanie lub regułę;
udowodnij to w zakładce Test firewalla.Wywołanie jest wstrzymane
Kod to
firewall_approval_pending → odpytaj id zatwierdzenia i wyślij
ponownie z nagłówkiem zatwierdzenia. Nic do debugowania.Żadne z powyższych
Brak kodu bezpieczeństwa → sprawdź klucz:
model_limits, allow_ips,
credit_limit_usd lub 403 za brakujący zakres bramy.7. Powiązane referencje
Kody błędów
Pełna tabela kodów — każda blokada, wstrzymanie i odrzucenie, które brama może
zwrócić.
Słownik werdyktów
Co oznacza każdy werdykt firewalla i kiedy rozwiązuje się w deny.
Glob i JSONPath
Zdekoduj
tool_name_glob i args_match, które dopasowały twoje wywołanie.Guardrails vs Firewall
Która płaszczyzna odpaliła — prześwietlanie tekstu czy zarządzanie akcjami.
