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.
- 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-Tokenheader. Your agent never sees the raw upstream credential. diagrid.identityhelper library. A thin, drop-in library for vanilla frameworks. It readsX-Diagrid-User-Token, gives your handler a verified user object, and enforces the identity policy you configure. See OAuth with the helper library.- 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
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.