Signature
Description
Returns whether account is authorized under policyId. Never reverts.
The evaluation logic depends on the policy type:
For composite policies (UNION and INTERSECT), evaluation is live — each call reads the current membership of every evaluated child. Short-circuiting applies: UNION stops at the first authorizing child, and INTERSECT stops at the first non-authorizing child. Child order can therefore affect gas cost but never the authorization result.
Unknown or never-created policy IDs collapse to empty-member-set semantics:
ALLOWLIST → false
BLOCKLIST → true
UNION with no children → false
INTERSECT with no children → true
A never-created INTERSECT ID returns true for every account, behaving like ALWAYS_ALLOW. Callers that store policy IDs MUST call policyExists(policyId) before storing them.
Parameters
Returns
Access control
Read-only. No caller restrictions.
Policy interaction
This is part of the singleton PolicyRegistry surface used by B20 policy scopes. A composite policy ID is passed to a B20 policy slot exactly like a simple policy ID; B20 stores policy IDs as an opaque uint64 and calls isAuthorized generically.
Example