Gateway

Reason codes

Reference for the reason codes attached to gateway decisions.

Reason codes explain gateway decisions and operational outcomes. They can appear on a trace summary, guard or action card, or span. Trace-level codes roll up into the Overview “Top reason codes” list. This is a reference for the ones you’ll commonly see.

About reason codes#

A single decision can carry several codes. They’re stable string identifiers, so you can alert or filter on them. The input and tool classifiers are enabled by default, so their codes are the ones a new project sees first.

Input guard#

Reason codeMeaning
INPUT_GUARD_UNSAFEInput scored at or above the unsafe threshold.
INPUT_GUARD_FLAGGEDInput scored in the flagged band.
INPUT_GUARD_FLAGGED_NO_SCOREThe input was labeled suspicious without a numeric score, so it was flagged rather than treated as safe.
INPUT_GUARD_FLAGGED_UNKNOWN_LABELAn unrecognized label scored at or above the unsafe threshold but was downgraded to flagged; unknown labels cannot trigger an unsafe block.
INPUT_GUARD_ERRORThe input classifier errored; resolved by the fail-open setting.
CUSTOM_BLOCKLIST_MATCHA configured literal term matched the latest user request. Enforce blocks before the provider call; Observe records the simulated block.

Tool guard#

Reason codeMeaning
TOOL_GUARD_UNSAFEA tool call scored at or above the unsafe threshold.
TOOL_GUARD_FLAGGEDA tool call scored in the flagged band.
TOOL_GUARD_ERRORThe tool classifier errored; resolved by the fail-open setting.

Output guard#

Reason codeMeaning
OUTPUT_GUARD_UNSAFEOutput scored at or above the unsafe threshold.
OUTPUT_GUARD_FLAGGEDOutput scored in the flagged band.
OUTPUT_GUARD_UNSAFE_NO_SCORELabeled unsafe without a numeric score.
OUTPUT_GUARD_FLAGGED_NO_SCORELabeled flagged without a numeric score.
OUTPUT_GUARD_FLAGGED_UNKNOWN_LABELAn unrecognized label scored at or above the unsafe threshold but was downgraded to flagged; unknown labels cannot trigger an unsafe block.
OUTPUT_GUARD_ERRORThe output classifier errored; resolved by the fail-open setting.

Decision fallbacks#

The decision normally retains reason codes returned by each guard. The codes below are fallbacks used only when the relevant guard supplied no reason code.

Reason codeMeaning
POLICY_BLOCK_UNSAFEFallback when a classifier returned unsafe and supplied no reason code.
GUARD_ERROR_FAIL_OPEN_ALLOWFallback when a classifier errored, the aggregate decision had no reason code, and fail-open allowed it.
GUARD_ERROR_FAIL_CLOSED_BLOCKFallback when a classifier errored, the aggregate decision had no reason code, and fail-open was off.

Request errors#

Reason codeMeaning
PROVIDER_AUTH_REQUIREDNo upstream provider key was supplied in Authorization.
PROVIDER_UNSUPPORTEDx-triage-provider is not a supported value.
UPSTREAM_CONFIG_REQUIREDA non-default provider hint requires a matching stored project upstream.
UPSTREAM_PROVIDER_MISMATCHx-triage-provider did not match the project's configured upstream.
UPSTREAM_CONFIG_INVALIDThe project's stored upstream configuration is invalid (HTTP 422).
ANTHROPIC_SERVER_TOOL_UNSUPPORTEDEnforce rejected an Anthropic provider-side tool before the upstream call because it cannot be intercepted post-response.
MODEL_REQUIREDThe request did not specify a model.
STREAMING_DISABLED_POLICYStreaming requested but disabled for the project (HTTP 501).

Context & tool handling#

Reason codeMeaning
CONTEXT_SPLICE_REMEDIATED_INPUTThe latest input was safely rewritten or replaced, so the effective pre-provider verdict was remediated.
CONTEXT_SPLICE_UNLOCALIZED_INPUT_QUARANTINEDThe unsafe latest turn had no usable safe span and was quarantined as a whole.
CONTEXT_SPLICE_NONACTIONABLE_INPUT_QUARANTINEDLocalized removal left no meaningful task, so the latest turn was quarantined as a whole.
CONTEXT_SPLICE_CONTINUATION_BRIDGEA safe continuation turn replaced quarantined input because prior workflow context was available.
CONTEXT_SPLICE_NO_WORKFLOW_CONTEXTWhole-turn continuation was not eligible because no prior Chat or Responses workflow context was present; Enforce blocks before the provider call.
CONTEXT_SPLICE_BLOCKLIST_TERMINALA custom-blocklist match remained authoritative and was not eligible for splicing.
CONTEXT_SPLICE_DISABLED_POLICYContext splicing was disabled when unsafe input was evaluated, so no steering mutation was attempted.
CONTEXT_SPLICE_UNSALVAGEABLE_INPUTNo safe localized remediation or eligible whole-turn continuation was available; blocked in Enforce.
CONTEXT_SPLICE_TOOL_RESULT_WITHHELDA Chat tool message matched a deterministic instruction-hijacking pattern and was withheld by context splicing.
TOOL_RESULT_QUARANTINE_UNSAFEAn inbound tool result was classified unsafe.
TOOL_RESULT_QUARANTINE_FLAGGEDAn inbound tool result was classified as flagged.
TOOL_RESULT_QUARANTINE_WITHHELDUnsafe tool-result content, or flagged content when configured, was replaced before the model saw it (Enforce).
TOOL_RESULT_QUARANTINE_FAIL_CLOSED_BLOCKA tool result could not be verified and the project fails closed.
TOOL_RESULT_QUARANTINE_REVIEW_LIMIT_EXCEEDEDMore tool results were present than the configured review window; Enforce fails closed instead of forwarding an unreviewed older result.
TOOL_POLICY_ARGUMENTS_SANITIZEDDisallowed or sensitive tool arguments were removed or redacted before delivery (Enforce).
TOOL_POLICY_SANITIZE_MUTATION_FAILEDA requested tool-argument rewrite could not be applied to its exact response target, so delivery was blocked (Enforce).
TOOL_INTERCEPTION_STRIPPEDTool calls denied by classifier or retry-without-tool policy were removed; any safe remainder was returned (Enforce).
TOOL_INTERCEPTION_RETRYThe request was retried after a tool-interception decision.

Transport & streaming#

These annotate provider transport and downstream delivery failures. The stream-specific codes are most visible in Observe mode, where content passes through and guards run after delivery.

Reason codeMeaning
UPSTREAM_STREAM_INCOMPLETEThe provider stream ended without a terminal done marker.
UPSTREAM_TRANSPORT_ERRORThe upstream provider request or stream failed at the transport layer.
EDGE_RESPONSE_DEADLINE_EXCEEDEDThe gateway cancelled in-flight work and returned HTTP 504 because it could not start a response within the edge-safe deadline.
DOWNSTREAM_SEND_ERRORThe gateway could not deliver a response or stream frame to the downstream client.
POST_RESPONSE_GUARD_ERRORA guard failed while classifying already-delivered streamed content.

CoT integrity#

INT-CoT returns at most a flagged advisory result and never blocks on its own. A material, rising result can escalate an already-flagged tool or output result; that action-layer decision then follows normal retry and block policy.

Reason codeMeaning
COT_INTEGRITY_DIVERGENCEReasoning-divergence score reached the selected static threshold.
COT_INTEGRITY_RISINGDivergence risk was still climbing across chunks when flagged.
COT_INTEGRITY_WEAK_DIVERGENCEScore in the soft band below the threshold.
COT_INTEGRITY_DISABLED_POLICYINT-CoT is disabled for the project.
COT_INTEGRITY_NO_REASONINGNo reasoning trace or summary was available to score.
COT_INTEGRITY_URL_NOT_CONFIGUREDThe CoT service was not discoverable. The request still proceeds.
COT_INTEGRITY_ERRORThe CoT service failed; the gateway skipped this layer fail-open.
COT_INTEGRITY_CONJUNCTION_ESCALATEDMaterial, rising divergence escalated an already-flagged tool or output result to unsafe.