

Trusted in production
The Problem
Most products start with a roles table and a pile of if statements. Then tenants show up. Then attributes. Then relationship graphs. Then agents acting on behalf of users.
Fine-grained authorization is infrastructure — RBAC, ABAC, and ReBAC with an audit trail — not a feature you rewrite every quarter.

Fine-grained authorization is a set of models, not a roles table. Start with RBAC, add attributes when context matters, model relationships when the graph matters. Humans, services, and agents hit the same policy engine.
Example policy
“Banker can Approve Loan”
RBAC · Policy UI
When an agent calls a tool, it is still a subject, an action, and a resource. MCP Gateway applies the same RBAC, ABAC, and ReBAC policies at the edge — it does not invent a second permission system.

The Platform
Policy UI + policy as code: the whole team can edit permissions; Git still owns the source of truth.
Local PDP: OPA or Cedar in your VPC, updated by OPAL, decisions next to the workload.
Any model: RBAC, ABAC, and ReBAC in one engine — not three products to stitch together.
Any subject: users, services, and agents evaluated with the same check API.
Permit.io is the control, data, and enforcement plane — not a dashboard in front of someone else's PDP. Author policy in the editor or Git, keep users, roles, and relationships in the graph, and enforce every check locally. Same stack for the software you already ship and the agents you add to it.
First-class agents
Put the MCP Gateway URL in front of an upstream server and enforce the same RBAC, ABAC, and ReBAC graph you already use in APIs and data. One policy plane — session, service, row.

Identify the agent, bind human delegation, and authorize each tool call against policy — not a standing API key.
Enforce the same fine-grained policy in APIs and services with a low-latency PDP next to the workload.
Push the decision down to queries, rows, and columns so an allowed tool call still cannot over-read.
The gateway applies the same fine-grained authorization as your APIs — RBAC, ABAC, and ReBAC on each tool call, not a second permission system.
Start building freeAgent identities
Agents are first-class subjects in the same policy model. You delegate a human's permissions, scope them with attributes and relationships, and re-check every action — including when prompt injection tries to change the job.
Bring your own IdP. Grant an agent a subset of a user's permissions — never a standing god key.
Map trust to real FGA: read-only exploration, a single tenant, a relationship on a record, a write that needs approval.
Interrogate the agent at the gateway. If the requested action drifts from the delegated intent, deny it.
Evaluate identity, attributes, relationships, and context at decision time — the same PDP path as any other request.

Developer stack
Authentication stays where it is. Permit.io is the missing layer: fine-grained authorization as a service — SDKs, CLI, Terraform, GitOps, and a PDP beside your code.
Distributed: Decisions happen in-VPC at the edge.
Fast: Sub-millisecond decision latency.
Flexible: RBAC, ABAC, and ReBAC out of the box.
Open: Built on OPA, Cedar, and OPAL.
Works with your identity provider, gateways, APIs, cloud, and policy engines. Managed or self-hosted. Hybrid by design — including when the caller is an agent.
Built for the people who ship
SDKs, APIs, Terraform, GitOps, and a local PDP. Policy as code you can review in a pull request — including when the subject is an agent.
One authorization plane across apps, APIs, data, and MCP. RBAC, ABAC, and ReBAC without stitching point products.
Least privilege, human delegation, decision traces, and a path to AI features that does not bypass the policy you already wrote.
A no-code policy editor, embedded Elements, and approval flows so support and customers can manage access without a deploy.
Guardian agents
Agents that watch authorization decisions and audit logs.
Spot anomalies static roles miss — including agent drift.
Propose tighter policies back into the same GitOps flow.

The full stack
Authorization is more than a yes/no. Permit.io is the control, data, and enforcement plane: you author policy in the editor or Git, users, roles, and relationships live in the graph, and a local PDP enforces every check — from the API call to the row, including the agent tool call in between.
One platform for application permissions and agent permissions. Same models. Same check. Same logs.


Around the decision
Elements, GitOps, and audit in one flow
Embed user management, approval flows, and audit logs in your product. Manage policy in Git. Propagate every decision to the logger you already use.

Enterprise-Ready by Design
From regulated workloads to high-scale product platforms, Permit.io is the authorization layer developers put in front of apps, APIs, and agents — without giving up speed, control, or where the PDP runs. Supporting hundreds of millions of identities at sub-50ms latency.

Get started
Fine-grained authorization for your application, your APIs, and your agents. RBAC, ABAC, and ReBAC — as a service.
Ship faster — without hiding access control in code.