Skip to main content

Enterprise identity for agents

Enterprise identity lets your agents run under the identity of the end user who invoked them, rather than a single shared service identity. Catalyst verifies who called the agent, hands your code a trusted user object, and propagates that identity to the downstream tools the agent calls — with no authentication code in the agent. For the underlying trust model, see Identities and Security.

This works with any Python agent framework you serve over ASGI — vanilla LangGraph, CrewAI, or Google ADK — because the identity plumbing lives in the Catalyst data plane and a thin ASGI middleware, not in a framework-specific runtime.

What it gives you​

  • Authenticated users. Know which real user is behind each agent invocation, and reject calls that carry no valid identity.
  • Audit trail. Every downstream tool call carries the originating user's identity, so an auditor can trace an action back to the person who triggered it.
  • Enforcement where it matters. Make an individual MCP server reject any tool call that carries no verified user, so a sensitive action cannot run unattributed.

Human-in-the-loop approval is not supported on this path — see the callout below.

How it works​

Three layers cooperate to carry a user identity from the caller all the way to a downstream tool. Two of them run inside the Catalyst data plane; the third is a small library you add to your agent.

How a user identity travels from caller to toolCatalyst data planeUserdiagrid CLI loginInbound authmiddlewareMCP proxyOBO mintingYour agent+ helper libraryDownstream MCP serverX-Diagrid-User-Tokenverified user tokenMCP call + user tokendelegated user JWT
How a user identity travels from caller to toolThe data plane verifies the caller on the way in and mints a delegated token on the way out. Your agent only passes the user token along.
  1. Inbound authentication. Catalyst intercepts the incoming request, verifies the upstream JWT the caller presented, and exchanges it for a Catalyst-issued user token. It forwards that token to your app in the X-Diagrid-User-Token header. Your agent never sees the raw upstream credential.
  2. diagrid.identity helper library. A thin, drop-in library for vanilla frameworks. It reads X-Diagrid-User-Token, gives your handler a verified user object, and enforces the identity policy you configure. See OAuth with the helper library.
  3. MCP proxy. When your agent calls an MCP tool on a server that requires a user identity, the Catalyst MCP proxy mints a delegated token carrying the user's identity and attaches it to the forwarded call. Your agent sends the caller's token using the identity-aware HTTP client; the proxy does the minting. A server with no such requirement receives no user identity — that requirement is what turns propagation on. See On behalf of.

Standards​

Enterprise identity is built on open standards, so it interoperates with your existing identity provider and tooling:

  • OAuth 2.0 and OpenID Connect (OIDC) — user authentication and token issuance.
  • RFC 8693 (token exchange) — the delegation grant that mints on-behalf-of tokens.
  • RFC 8707 (resource indicators) — audience-scoping so a token minted for one server cannot be replayed against another.

Human-in-the-loop is workflow-only​

HITL requires the workflow path

Human-in-the-loop approval is not available on the sync path described here. A synchronous HTTP request cannot hold the caller's connection open indefinitely while it waits for an external approval that may take minutes or hours.

HITL needs durable workflow semantics — the ability to pause, persist state, and resume when an external event arrives. That is only available when your agent runs under the workflow-centric path. See Workflow patterns for the external-events pattern that backs HITL today.

Next steps​