Enforcement Actions

The complete reference for verdicts and how to act on each one.

Verdicts

VerdictDefault bandIntent
ALLOW≥ 0.85Trusted — deliver as-is.
WARN0.60–0.85Deliver, but log/annotate for review.
REVIEW0.40–0.60Hold for human review or use a fallback.
BLOCK< 0.40Do not deliver.

Two additional states can appear in the SDK: PENDING (background evaluation not yet complete) and UNKNOWN (evaluation could not be completed — treat per your fail-open/closed choice).

Acting on a verdict

Python
r = client.evaluate_sync(prompt=p, response=draft)
if r.verdict == "BLOCK":
    final = SAFE_FALLBACK
elif r.verdict == "REVIEW":
    final = enqueue_for_human_review(draft)
else:  # ALLOW or WARN
    final = draft
    if r.verdict == "WARN":
        log_warning(r.request_id, r.all_flags)

Hard-block flags

These flags force BLOCK regardless of the aggregate score:

  • prompt_injection_detected
  • explicit_content_detected
  • content_unsafe (critical)
  • policy_violation_critical, policy_violation_high

Recommended patterns

For user-facing chat, evaluate inline only on the final answer and block on BLOCK; for everything else, evaluate in the background so latency is untouched and you still get the full audit trail.
Was this page helpful?