The credential is not the action.
Keycard moved the access decision off the session and onto the credential, which is a real advance over an OAuth handshake that grants a scope and then goes quiet. It is worth being precise about what that buys, because it buys a great deal — and about the one step it stops short of.
What the product actually is
Worth stating plainly, because the category name attracts products that are much less than this one. Keycard is a control plane that issues credentials to agents, and every issuance is a policy decision.
- Principals, not service accountsusers, applications and agents are all first-class principals inside a zone — a self-contained trust domain that authenticates them and authorises access to the resources within it. An agent can be given its own identity, or act on behalf of a user who delegated to it.
- Cedar, default-denypolicies are written in a declarative authorisation language that describes who can do what under which conditions, with no loops and no side effects. Every authorisation request needs an explicit permit for the user, the application and the resource. Group membership resolves during evaluation rather than from a cached claim.
- Short-lived, task-scoped credentialsthe output of a permit is not a session but a credential bound to the task at hand, least-privilege and short-lived. Static secrets come out of the picture — there are guides for running applications and deploying services without them at all.
- A wide integration surfaceSDKs, a CLI that governs coding agents by virtualising their environment and MCP configuration, OAuth for custom MCP servers, Terraform, and guides reaching GitHub, Google, Slack, Snowflake and cloud providers. This is a product developers can actually adopt on a Tuesday.
Where Keycard is strongest
One of the sixteen rows below goes to Keycard and five more are level — the most level rows we publish against any competitor. They follow from a real difference in where each product places itself: theirs is at the point access is granted, ours is at the point the action is taken.
- Ecosystem breadththis row goes to them and it is earned. SDKs, a Terraform provider and a catalogue of integration guides covering coding agents, custom MCP servers, cloud platforms and third-party APIs — a developer can wire an agent to a governed credential without talking to anyone. We are a focused platform rather than a marketplace presence, and that row is a 2 for us on every comparison we publish.
- Policy scope, levelCedar is a serious choice. Rules can be written about the user, the application acting, the resource being reached, the delegation in play and — on the enterprise tier — the device. Constrained by design so a policy can be reasoned about rather than merely executed. That row is even, and we would rather print it than pad the table by leaving it out.
- Delegation and MCP, levelan agent can act on behalf of a user who delegated to it, including one who is not present, and tool calls through MCP are governed per call rather than per connection. Both of those are rows we win against most of the field. Here they are ties, and the reason is that Keycard is built on the same premise we are: an agent is a principal, and what it does on someone's behalf is a question with an answer.
- Deployment and time to value, leveldedicated, bring-your-own-cloud and on-premise deployment with customer-managed keys and private networking, which matters for residency; and a free tier plus a CLI quickstart, so the first governed agent is minutes of work rather than a procurement cycle. Both even.
A permit is a decision about access
The sequence is worth walking through slowly, because the difference lives inside it and it is easy to skate over. An agent needs to reach a system. It asks the control plane. Policy evaluates the user, the application and the resource, and permits. A short-lived credential is issued, scoped to that task. The agent then uses the credential against the system.
That last step is the one worth sitting with. It happens after the decision, and it is performed by the agent. The verdict was rendered against a description of what was being asked for; the thing that actually reaches the system is whatever the agent does while holding the credential. For agents integrated through MCP the two collapse close together, which is why tool governance ties — a credential per tool call is very nearly a verdict per action, and the table scores it that way.
Elsewhere they separate. A credential scoped to a database or a cloud API is spent on statements and calls the control plane never sees, and the difference between reading one customer record and reading the table is not a difference the issuing decision was asked about. Nothing has failed here — the credential is doing exactly what least privilege intends. But the question an auditor asks is about the write that landed, and that question is answered by the resource's own logs rather than by a verdict.
Agen renders the verdict on the action itself, in under 30ms, with five verdict types rather than permit and deny: allow, step-up authentication, human approval, masking, and deny. Masking is the one that shows the difference most cleanly, because it is a verdict that can only be reached with the payload in view. It is a 1 on the other column not as a shortfall but as a consequence: a product that hands over credentials is never holding the data.
Policy is written about principals that enrolled
The second consequence is a coverage one, and it is the sharper of the two. A Cedar policy names a user, an application and a resource. All three have to exist inside a zone for a rule to be written about them, which means an agent has to be integrated — by SDK, by the CLI wrapping its environment, or by an MCP server configured against the control plane — before it is governed at all.
For agents a platform team is building deliberately, that is a reasonable ask and a well-supported path. The difficulty is the population that motivates most agent governance purchases in the first place: the agents nobody filed. A script with a personal access token in an environment variable. A vendor tool with an API key pasted into a settings page. An assistant a business team connected to a system of record without asking. None of them asks for a credential, so no policy runs, no decision is recorded, and nothing appears in the inventory.
Agen discovers agents across five surfaces without anything being installed and without an agent enrolling itself — including agents built on someone else's stack and agents carrying no identity object of ours at all. Discovery is not a separate exercise from governance here; it is the reason governance has something to be about. That is what the two lowest rows in the coverage group are measuring, and it is one property, not two.
Who is accountable, and when it is decided
Attribution is genuinely good on the delegated path. Composite identity binds the user, the device, the agent and the task together, so a request carries who initiated it and on what machine, and every authorisation decision produces a log that can be streamed to a SIEM. For a coding agent a developer is driving, that is a clear chain and the table credits it.
The gap opens where an agent is given its own identity and acts with no user in the request — a documented and deliberately supported mode, and the one that autonomous work uses. Then the principal is a workload attested by its infrastructure. That is a fine answer to what is calling, and it is not an answer to who answers for it. The record shows a permitted application; it does not name a person.
Agen holds the accountable human as a durable property of the agent rather than of a request. Every agent has a named owner, and every individual action resolves back to that owner whether or not anyone was present when it ran. That object has to exist before the action, not be reconstructed from a log afterwards, which is why the attribution rows sit where they do.
What the meter counts
The commercial model is published and unusually clear. Users, agents and applications are unlimited on every plan; a transaction is recorded each time the platform issues a credential, validates an access request, exchanges a credential or handles a step-up approval. There is a free tier, a team plan at a fixed monthly price with a bundled allowance, and metered overage beyond it.
Unlimited agents is a real advantage over per-seat licensing, and the row is scored a 4 rather than a 2 for exactly that reason. The caveat is what the meter tracks. Cost follows how often agents ask for access, which is a function of how the agent was written — a chatty loop and a careful one governing the same system cost differently. It also means the governance bill and the governance question point at different objects: you are billed for exchanges and asked about agents.
Agen is priced per governed agent with no prerequisite tier. Our own platform-cost row is a 4 rather than a 5 and stays there: for a buyer already paying for an incumbent, we are net-new spend, and that caveat is what makes the 4 credible.
What is not published
Six of the forty-two rows we score were dropped rather than published. Decision latency is the notable one for a product sitting in the credential path: no vendor page publishes a figure, so the row does not score in either direction. Preservation of the authority chain across multiple agent-to-agent hops was dropped too — delegation is documented and scores a 5, but multi-hop chaining appears only in secondary summaries, and a row we would have to source that way is a row we do not print.
Two rows were dropped on fairness rather than evidence. Connector breadth would have set our curated count of governed connectors against a model that is deliberately bring-your-own — any OAuth or OIDC provider can be added — and the two numbers do not measure the same thing. New-integration turnaround was dropped for the mirror-image reason: nothing is published to compare our own commitment against.
One is ours, and one is a tie. Our audit-first rollout row is held pending internal confirmation and is not published on any comparison until it is. Platform cost comes out even at 4 and was left out only to hold the table at sixteen rows; the argument it carries is in the pricing section above, where it can be made properly.