# Hanzo Authz — Hanzo AI

> Fine-grained authorization engine. Zanzibar-style relationship graph for production scale.

# Hanzo Authz

Hanzo Authz reads a token and answers whether the caller may do the thing. It verifies the JWT that IAM signed, then asks one question: does a grant this caller holds cover this path, and does its role admit this verb. It is a library, not a service — no store, no configuration, no network call on any path — so every Hanzo service asks that question the same way and gets the same answer.

[Get started](https://docs.hanzo.ai/docs/authz)[View on GitHub](https://github.com/hanzoai/authz)

### Where a thing is, and who may touch it

A location is a path — acme, acme/prod, acme/prod/web, and the app or site under that. Access is a grant at a prefix of one. Keeping them apart is the whole design: containment names a resource, it does not hand every ancestor&#x27;s members the child.

### Nothing on the decision path does I/O

No store, no config, no init, no network call. Authz is a leaf package a service imports, so the check is a function call and a request that reaches your handler has already been decided.

### One rule covers every arrangement

Can is true when some grant the caller holds prefixes the target and its role admits the verb. An org-wide member holds a grant at the org; a workspace member holds one a level down; an invite-only project is a grant with no ancestor above it. There is no second mechanism.

### Delegation is a narrower grant

Handing an agent or a short-lived credential part of your authority means writing a grant deeper in the path than your own, with an expiry if you want one. Nothing can be delegated that the delegator does not already hold.

### The decision travels, the grant set stays

The edge resolves the requested scope once and writes the resolved path and role into the token, so the token stays the same size no matter how many grants a person has, and no service behind the edge asks IAM anything.

### Only what IAM signs

Verification accepts the algorithms IAM&#x27;s signer actually produces — RSA, EC, and ML-DSA-65 for a post-quantum certificate. HMAC and alg none are rejected. Key material is an argument, so the leaf never fetches a JWKS and a caller that supplies no keys verifies nothing.

## Get started with Authz

[Read the docs](https://docs.hanzo.ai/docs/authz)[View on GitHub](https://github.com/hanzoai/authz)

## Open source

License: Apache-2.0[hanzoai/authz](https://github.com/hanzoai/authz)

## Get Authz

Fine-grained authorization

[Deploy to Cloud](https://console.hanzo.ai/deploy)[Self-host](https://docs.hanzo.ai/docs/authz)
