If you used
protect() / with_permit() / withPermit() on the previous page, the SDK already issued this verify call for you and bound it into the audit chain. Read this page when you hold a raw permit token — for example, a permit minted in one service and forwarded to another, or when you want to confirm a permit is still current immediately before a state-changing call.- Rejects tokens that were revoked (for example, policy changed between
/v1-evaluateand execution). - Rejects expired tokens (default TTL: 1 hour).
- Verifies the Ed25519 signature.
- Binds this permit to its execution in the audit chain.
The request
The response
The canonical verification envelope:boolean
required
true if the permit is current, signature-valid, and not revoked.string
required
Always
"permit" on this surface.string
On
false, an operator-readable explanation (e.g. “Permit expired”,
“Permit was explicitly revoked”). null on success.string
required
ISO 8601 server clock at verification.
object
required
Type-specific evidence:
{ permit_id, status, actor_id, action_id, expires_at, payload_hash, decision_id }.When to call verify explicitly
The canonical execution-boundary surface —protect() / with_permit() / withPermit() — already issues this verify call internally and binds it into the audit chain. Reach for the explicit verify call in these cases:
- Permit crossed a process boundary. Service A called
protect()and forwarded thepermit_idto service B; B wants to re-confirm the permit is still current before acting on it. - Long-running flow. Time has elapsed between the policy decision and the state-changing call, and policy or actor state may have moved (e.g. operator revocation, TTL drift). Verify just before execute.
- You held the permit token after
evaluate()rather thanprotect(). The rawevaluate()primitive does not verify — callers using it must verify before executing.
Why a separate verify call? Separating evaluate from verify lets you short-circuit on policy changes that happen between “I got permission” and “I’m doing the thing” — e.g. an operator revoking the permit, or the permit’s TTL elapsing.