Enforcer
Cerbos is a good product and has the shortest quickstart in this category: three commands, no account. Most people looking for an alternative are hitting one of two specific limits, so this starts there rather than with a feature grid.
If neither of those is your problem, staying put is usually the right answer.
| Option | Model | Strength | Trade-off |
|---|---|---|---|
| OpenFGA | Relationship, Zanzibar | Strong list filtering | You maintain a copy of your data, written twice |
| SpiceDB / AuthZed | Relationship, Zanzibar | Mature, good tooling | Same dual-write problem; their own CTO names it |
| Open Policy Agent | Policy, Rego | One engine for infra and app | Rego is the most complained-about language here |
| Permit.io | Policy plus MCP gateway | UI for non-engineers | Still a decision layer, still syncs |
| WorkOS FGA | Relationship plus roles | Comes with sign-in | Resources registered in their system |
| Enforcer | Policy over a resolved caller | Nothing to sync; identity included | No list filtering, same gap as Cerbos |
Cerbos is stateless, so you pass the context in on every request. Enforcer signed the user in, so the policy is handed the resolved caller with role, tenant and group memberships already attached. Neither of us makes you maintain a shadow database, which is the real dividing line in this category.
Being straight about it: we share Cerbos's list-filtering gap. If that is why you are here, a relationship engine is your answer, not us.