Every authorize call resolves to exactly one verdict. The PDP’s live taxonomy
is four values:
mayContinue is a convenience the SDK derives: it is true for ALLOW and
WARN, false for BLOCK and ESCALATE.
Decision shape
Handling each verdict
On WARN you must use transformedContent if it is present. That is where
the PDP hands back, for example, a redacted version of the context with
non-essential identifiers removed. Ignoring it means delivering the unredacted
original, a policy violation you were just warned about.
Verdict → delivery mapping in the evidence feed
Each decision is logged with a delivery label so auditors can read outcomes at
a glance:
A note on client enums
The reference Kotlin client (AkharaPolicy.kt) additionally defines REWRITE
and PAUSE for forward-compatibility. The PDP’s shipped taxonomy is the four
verdicts above, treat WARN as the rewrite verdict. If you build a custom
client, map any unknown verdict to a fail-closed BLOCK rather than continuing.
See Fail-closed.
For how a verdict is produced (what the PEP sends and how the latch decides),
see Tool-call interception. For where
verdicts go afterward, see Audit and evidence.