Run an access review — certify or revoke
Snapshot your own entitlements into a recertification campaign, then decide each one — a revoke really removes the grant.
Hold at least one entitlement before you start — an FGA tuple, or an organization you own with a member in it. A campaign snapshots what you have RIGHT NOW, so starting one with nothing to review creates an empty campaign, and an empty campaign has nothing to certify or revoke.
- 1
Give yourself something to review first — write an FGA tuple, or create an organization and add a member — then start a campaign on the Access Reviews lab.
Real IGA periodically makes someone look at every entitlement they hold or control and re-attest it — starting one SNAPSHOTS your current FGA tuples and every active membership in orgs you own, right now, so the review stays stable even if a grant changes mid-campaign.
- 2
Certify one item and revoke another.
Certify is bookkeeping only — "still needed, checked." Revoke is not: it immediately re-reads the LIVE grant (never the frozen snapshot) and removes it for real — the same store call the FGA lab’s delete button and the Organizations lab’s remove-member button use.
- 3
Try revoking your org’s last active owner (if you own one with just yourself in it).
The revoke reuses orgs.ts’s own last-owner invariant — an access review can propose removing anyone, but it can never strand a tenant without an owner; that one item is refused with last_owner and stays pending.
- 4
Close the campaign and read the final tally.
Closing is the attestation: “as of this date, every entitlement was reviewed” — the pending/certified/revoked counts are exactly what an auditor asks a real access-review campaign to prove.
Learn the theory
🩻 X-ray — what actually happened
Your own insert-only audit trail — the real server events, sanitized (never a secret), each linked to the lesson that explains it.