Skip to main content

Verdicts

Every governance evaluation returns one of three verdicts. Each verdict tells your application exactly what to do next.

The Three Verdicts

PROCEED

{ "verdict": "proceed" }

All 8 governance laws passed. The action is safe to execute immediately.

Your code should: Execute the action and record the result.

if result.passed:
execute_action()

ESCALATE

{ "verdict": "escalate" }

One or more laws returned a warning, but none failed outright. The action is not clearly dangerous, but it requires human judgment.

Common reasons for escalation:

  • Medium-risk action without prior approval
  • AI agent approaching the boundary of its autonomy
  • Action cost is close to the budget limit
  • Missing optional context that would improve evaluation

Your code should: Queue the action for human review. Do not execute automatically.

if result.needs_approval:
approval_id = queue_for_human_review(result)
# When approved, re-evaluate with has_approval=True

BLOCK

{ "verdict": "block" }

One or more laws failed. The action violates a governance constraint and must not be executed.

Common reasons for blocking:

  • High-risk irreversible action without human approval
  • Actor does not have authority for this action
  • Budget would be exceeded
  • Safety concern detected
  • Audit trail cannot be maintained

Your code should: Reject the action, log the reason, and alert the operator if appropriate.

if result.blocked:
log_blocked_action(result.explanation)
alert_operator(result)

Verdict Decision Logic

ConditionVerdict
All 8 laws return passproceed
Any law returns warn, none return failescalate
Any law returns failblock

Per-Law Results

Each law evaluation returns one of three results:

ResultMeaning
passLaw is fully satisfied
warnLaw is conditionally satisfied — human review recommended
failLaw is violated — action must not proceed

Inspecting Why

The evaluations array in the response shows exactly which laws contributed to the verdict:

result = client.governance.evaluate("data.delete", description="Delete user data")

# Find which laws caused the verdict
for evaluation in result.evaluations:
if evaluation.result.value != "pass":
print(f"{evaluation.law_name}: {evaluation.result.value}")
print(f" Reason: {evaluation.reason}")

Example output for a blocked action:

Safety Dominance: fail
Reason: High-risk irreversible action requires human approval
Bounded Autonomy: warn
Reason: AI agent trust score below threshold for data deletion

Handling Escalations

When an action is escalated, you can resolve it by re-evaluating with additional context:

# Original evaluation — escalated
result = client.governance.evaluate(
"payment.process",
description="Process $4,200 vendor payment",
context={"risk_level": "medium", "is_irreversible": True},
)
# result.verdict == "escalate"

# After human reviews and approves:
result = client.governance.evaluate(
"payment.process",
description="Process $4,200 vendor payment",
context={
"risk_level": "medium",
"is_irreversible": True,
"has_approval": True, # Human approved
},
)
# result.verdict == "proceed"

Best Practices

  1. Always handle all three verdicts — never assume an action will proceed
  2. Log blocked actions — they indicate potential security issues or misconfiguration
  3. Track escalation rate — a high escalation rate may indicate your agents need tighter scoping
  4. Provide rich context — more context leads to more accurate evaluations
  5. Use the explanation — show it to operators so they understand why an action was blocked or escalated