400 từ một kiểm soát bảo mật không phải là một
bug trong prompt của bạn. Đó là một chính sách đang làm việc của nó. Việc của
bạn là tìm ra chính sách nào, rồi quyết định sửa cuộc gọi hay nới quy tắc.
1. Tại sao request llm của tôi bị chặn? — bắt đầu với mã lỗi
Mọi lần chặn bảo mật trên gateway được host đều trả về HTTP 400 với mộtcode
máy đọc được trong error body kiểu OpenAI. Mã đó là ngã rẽ đầu tiên trên con
đường — nó cho bạn biết phải gỡ lỗi mặt phẳng kiểm soát nào và mở feed nào.
firewall_approval_pending
Một cuộc gọi tool được giữ chờ con người phê duyệt — không bị từ chối. Hãy
giải quyết nó, đừng gỡ lỗi. Xem §4.
Cả ba mã đều là skip-retry: chạy lại đúng cùng một cuộc gọi sẽ định tuyến
tới cùng một chính sách và chặn lại. Retry là latency lãng phí — hãy sửa input
hoặc quy tắc thay vào đó. Bảng mã đầy đủ nằm ở
Mã lỗi.
2. guardrail_blocked — tìm quy tắc trong Matches
guardrail_blocked nghĩa là một chính sách nội dung gắn với key của bạn (hoặc mặc
định của workspace) đã chạy một hành động block đối với input request hoặc
output của model. Message chặn nêu tên guardrail và quy tắc, và request đó
không tốn quota của bạn — chặn input kích hoạt trước khi đo lường; chặn output
hoàn lại quota đã tiêu trước.
Truy vết nó:
Mở feed Matches
Trong console, vào tab Matches trên trang Guardrails
(
GET /api/guardrail/match, Member). Mọi quy tắc kích hoạt đều rơi vào
đây — RuleType, Action, Stage của nó, và một chuỗi Detail như
pii: email, phone hoặc matched 3 keyword(s).Lọc theo lần block
Lọc theo
action = block và thời điểm của request. Hàng khớp cho bạn biết kiểu
quy tắc (pii, regex, keyword, max_chars, llm_judge, grounding,
external) và liệu nó kích hoạt ở giai đoạn input hay output.Xem nó thực sự đã khớp gì
Mặc định feed ghi lại rằng một quy tắc đã kích hoạt và meta-string
Detail
của nó — không phải chuỗi con đã khớp. Bật Log raw content trên
guardrail đó (mặc định tắt, tư thế bảo thủ về quyền riêng tư) để bắt được chuỗi
vi phạm phục vụ phân loại. Công tắc này không có hiệu lực hồi tố.Một ví dụ cụ thể
Bạn gửi một câu trả lời hỗ trợ có chứa SSN của khách hàng. Guardrailpii-shield
của bạn có một override entity_actions block trên ssn:
400 guardrail_blocked. Feed Matches hiển thị
RuleType: pii, Action: block, Stage: input, Detail: pii: ssn. Cách sửa
là một quyết định sản phẩm, không phải thay đổi code: nới override về mask
(model không bao giờ thấy SSN, cuộc gọi đi qua), hoặc giữ lần block và loại bỏ
SSN ở upstream. Xem Guardrails để biết tham chiếu đầy
đủ về kiểu quy tắc và thực thể PII.
3. firewall_blocked — tìm verdict trong Events
firewall_blocked nghĩa là một chính sách Firewall đã
từ chối một cuộc gọi tool. Trên bề mặt inbound nó lộ ra dưới dạng 400; qua
MCP gateway nó lộ ra dưới dạng một lỗi tool (firewall deny: <reason>)
để model có thể phản ứng thay vì sập. metadata của lỗi mang theo mã lý do, các
factor rủi ro, và điểm số.
Truy vết nó trong feed Events (GET /api/workspace/firewall/events,
Developer+) — bản ghi thô đằng sau mọi lần đánh giá. Mỗi event mang theo
một verdict và bề mặt mà nó được thấy:
| Verdict | Nó nghĩa gì cho lần chặn của bạn |
|---|---|
deny | Một quy tắc (hoặc default_verdict) đã chặn cuộc gọi. Đây là firewall_blocked của bạn. |
audit | Được phép nhưng ghi log — bao gồm một [shadow] “would deny” nếu chính sách ở chế độ shadow. |
cap_cost | Mức chi tiêu tích lũy của lần chạy vượt một cap theo từng quy tắc (cents); phân giải thành deny. |
Lọc Events tới lần từ chối
Lọc theo
verdict=deny, rồi theo tool, run_id, hoặc session_id để cô lập
đúng cuộc gọi. Event nêu tên quy tắc đã khớp và bề mặt — inbound,
response, mcp, hoặc egress.Đọc lý do trên quy tắc đã khớp
Chuỗi lý do (vd:
destructive shell command, egress host not allowed) cho
bạn biết liệu quy tắc khớp trên tên tool, một mệnh đề args_match, hay một
đích đến egress. Bảng thuật ngữ verdict
và tham chiếu glob & JSONPath giải mã
việc khớp.4. firewall_approval_pending — nó được giữ, không bị từ chối
firewall_approval_pending là 400 duy nhất bạn không nên xử lý như một lần
chặn. Một verdict pending_approval đã giữ cuộc gọi tool lại chờ con người; error
body mang theo một approval id. Cuộc gọi chưa thất bại — nó đang chờ.
- Một người duyệt giải quyết nó — từ console (Developer+) hoặc qua
HMAC webhook callback của riêng bạn (
POST /api/v1/firewall/approvals/:id/callback). - Agent của bạn poll
GET /api/v1/firewall/approvals/:id(gateway token) trên id từ lỗi. - Một khi được phê duyệt, gửi lại cuộc gọi gốc với header dùng một lần
X-OrcaRouter-Firewall-Approval, và gateway cho nó đi qua đúng lần đó.
5. Không phải lần chặn bảo mật? Loại trừ key trước đã
Không phải mọi400 đều là một verdict guardrail hay firewall. Trước khi bạn lao
vào đào feed, hãy loại trừ các ràng buộc của key — những thứ này từ chối
trước khi bất kỳ chính sách nào chạy và không mang các mã bảo mật ở trên:
Model bị từ chối trước cuộc gọi upstream
Model bị từ chối trước cuộc gọi upstream
Allow-list
model_limits của key không bao gồm model được yêu cầu. Request cho
một model ngoài danh sách bị từ chối ngay từ đầu. Thêm model vào key hoặc gọi
một model được phép.Bị từ chối ở khâu xác thực theo IP
Bị từ chối ở khâu xác thực theo IP
Key có một allow-list
allow_ips và request đến từ một địa chỉ ngoài danh sách
đó. Thêm IP / CIDR của bên gọi hoặc gọi từ một mạng được phép.Đã chạm trần chi tiêu
Đã chạm trần chi tiêu
Trần
credit_limit_usd của key đã cạn (0 nghĩa là không giới hạn). Nâng cap
hoặc xoay sang một key còn dư địa.403 trên các route /api/v1/firewall/*
403 trên các route /api/v1/firewall/*
Các hook gateway (
evaluate, MCP dispatch) yêu cầu một key có
is_firewall_gateway=true. Một relay key thường nhận 403. Hãy đúc một key
firewall-gateway-scoped cho các route đó.6. Luồng phân loại hai phút
Chặn trên văn bản prompt hoặc phản hồi
Mã là
guardrail_blocked → mở Matches, lọc action=block, đọc StageDetail. Sửa nội dung hoặc quy tắc; chứng minh nó ở tab Test của guardrail.
Chặn trên một cuộc gọi tool
Mã là
firewall_blocked → mở Events, lọc verdict=deny, đọc bề mặt +
lý do. Sửa cuộc gọi hoặc quy tắc; chứng minh nó ở tab Test của firewall.Cuộc gọi được giữ lại
Mã là
firewall_approval_pending → poll approval id và gửi lại với header
phê duyệt. Không có gì để gỡ lỗi.Không phải các trường hợp trên
Không có mã bảo mật → kiểm tra key:
model_limits, allow_ips,
credit_limit_usd, hoặc 403 cho một gateway scope còn thiếu.7. Tham chiếu liên quan
Mã lỗi
Bảng mã đầy đủ — mọi lần chặn, giữ, và từ chối mà gateway có thể trả về.
Bảng thuật ngữ verdict
Mỗi verdict của firewall nghĩa là gì và khi nào nó phân giải thành một deny.
Glob & JSONPath
Giải mã
tool_name_glob và args_match đã khớp cuộc gọi của bạn.Guardrails vs Firewall
Mặt phẳng nào đã kích hoạt — sàng lọc văn bản hay quản trị hành động.
