Runtime identity · Per-action authorization · for AI agents

Verify the agent behind every action.

Valid credentials do not prove which agent is actually acting. Auth51 derives identity from the running agent's observed system prompt, tools, and configuration, then binds each approved action to a per-action token enforced at the resource server.

12/12implemented scenarios blocked·+2.1msper token mint·1client import·OAuth 2.0 compatible
auth51.com/console/agents/registered
v0.1
AAuth51Console
Overview
Agents
Discovered Soon
Registered
Workflows
Inferred
Registered
Runtime Soon
Security
Threats
Policies Soon
Audit
Events Soon
Mints Soon
Infrastructure
Resources
Authorities
Settings
Identity Soon
Agents/Registeredidp.auth51.com

Agents · Registered

Patchet12 agents

live·updated 4s ago10s ▾
AllOrchestratorsWorkersScenarios
Agent IDRoleReasoningProvenanceRegistered
Supervisorlive
Orchestrator3Plan-and-executeProductionjust now
Planner
Tool-agent1ReAct loopProduction1m ago
Classifier
Tool-agent1Direct executionProduction1m ago
Patcher
Tool-agent1Direct executionProduction1m ago
T2MaliciousPlanner
WorkerDirect executionT2 · malicious1m ago
T7Planner
WorkerDirect executionT71m ago
Verifier
WorkerDirect executionProductionjust now
Auditor
WorkerDirect executionProductionjust now
T9TokenReplay
WorkerDirect executionT9just now
SBOMGenerator
WorkerDirect executionProductionjust now
VulnTriager
WorkerDirect executionProductionjust now
PRBuilder
WorkerDirect executionProductionjust now

Runtime identity enforcement

Agent identity is derived at runtime and authorization is enforced at the resource.

Auth51 does not trust an agent to declare its own identity. The Runtime derives a fingerprint from observed data, the Authority verifies the identity and applicable grant, and the Verifier enforces the per-action token at the resource boundary.

CONTROL PLANEDATA PLANERFC 8693OAuth 2.0register · mintverify · enforceintent tokenConsoleauth51.com/consoleWEBAuthorityReplicaSet · 3+ replicasCONTROL3/3 healthya51 CLIlocal binaryCLIRuntimein-process library on every agentDATAVerifiersidecar · DaemonSet · gatewayDATAAGENTIC APPLICATION

Enforcement path

Observe → authorize → enforce

ObserveRuntime fingerprints the executing agent
AuthorizeAuthority verifies identity and grant
BindPer-action token carries signed claims
EnforceVerifier checks claims at the resource boundary

Feature · Live Registry

Continuously verify registered agents.

The Auth51 Console provides a real-time view of agents registered with the Authority. It shows each agent's runtime fingerprint and classification in one place.

/console/agents/registeredlive
AgentRoleReasoningTools
SupervisorOrchestratorPlan-and-execute3
PlannerTool-agentReAct loop4
ClassifierTool-agentDirect execution3
PatcherTool-agentDirect execution2
T2MaliciousPlannerWorkerDirect execution1
  • Cryptographic fingerprinting
    At registration, Auth51 hashes the agent's prompt, tools, and configuration into a checksum. A changed checksum causes the next token mint to fail.
  • Five-dimensional classification
    Auth51 derives role, reasoning pattern, autonomy level, capability surface, and provenance from observable data instead of accepting self-declared classifications.
  • Live updates
    New registrations appear within seconds, versioning reveals drift, and revocations take effect immediately.

Feature · Discovery

Discover unregistered agents before they can act.

The Runtime monitors each host on which it is installed. An unfamiliar process that loads the shim appears in the Discovered queue before it can mint a token.

/console/agents/discovered3 unregistered
  • !
    PrCheckeron agents-prod-02
    checksum 9e1a7b8c4d2f… · detected 12s ago
  • !
    IssueRouter-v2on agents-prod-01
    checksum a4b5c6d7e8f9… · detected 2m ago
  • !
    CodeRevieweron agents-stage-01
    checksum f3e2d1c0b9a8… · detected 7m ago

Zero-trust by default

An unregistered agent has no identity in the Authority, so it cannot mint tokens or access protected resources. Another agent cannot impersonate an identity that has not been registered.

Compare the discovered fingerprint with the expected release artifact. Approve the registration when they match; otherwise, investigate the deployment before it can act.

Feature · Workflows

Inspect inferred, registered, and runtime workflows.

The Console derives orchestration from the tool graph, displays registered WorkflowDefinitions, and will compare runtime traces with those declarations.

/console/workflows/inferred
▾ Supervisor                       Orchestrator · Plan
  ├ ▸ Planner                      Tool-agent · ReAct
  ├ ▸ Classifier                   Tool-agent · Direct
  └ ▸ Patcher                      Tool-agent · Direct

▾ T7Supervisor                     Orchestrator · Plan      threat T7
  ├ ▸ T7Planner                    Tool-agent · Direct      threat T7
  └ ▸ T7Patcher                    Tool-agent · Direct      threat T7

Inferred from the tool graph

An agent whose tools include other agents is treated as a workflow root. Auth51 traces its children recursively, so the delegation structure becomes visible as soon as the agents register.

Use this view to confirm what was deployed, investigate why an agent has access, and identify scope creep.

Empirical evaluation

Auth51 blocked the attack in all 12 implemented scenarios.

Each scenario below runs against both an OAuth-only baseline and an Auth51-protected configuration. In these tests, the OAuth-only baseline blocked none; Auth51 blocked all 12.

OAuth
0/12
blocked
Auth51
12/12
blocked
Overhead
+2.1ms
per token mint
T1Agent Identity Spoofingcritical
Spoofing
OAuth
Auth51
A2
T2Token Replay Attackshigh
Tampering
OAuth
Auth51
A6
T3Shim Library Impersonationhigh
Spoofing
OAuth
Auth51
A1A2A5
T4Runtime Code Modificationcritical
Tampering
OAuth
Auth51
A1A12
T5Prompt Injection Attackscritical
Tampering
OAuth
Auth51
A12
T6Workflow Definition Tamperinghigh
Tampering
OAuth
Auth51
A8A11
T7Cross-Agent Privilege Escalationcritical
Elevation of Privilege
OAuth
Auth51
A3A7A8
T8Workflow Step Bypasshigh
Elevation of Privilege
OAuth
Auth51
A8A10
T9Scope Inflationhigh
Elevation of Privilege
OAuth
Auth51
A7A8
T10Intent Origin Forgeryhigh
Repudiation
OAuth
Auth51
A9A10
T11Delegation Chain Manipulationcritical
Tampering
OAuth
Auth51
A6A9
T12Agent Configuration Exposuremedium
Information Disclosure
OAuth
Auth51
A1A2

Identity Federation

Federate identity without exposing client secrets to the browser.

The Console uses short-lived JWTs to assert the signed-in user. Each Authority validates those assertions and issues its own user-bound tokens. The browser does not receive client secrets or refresh tokens. This exchange follows RFC 8693.

1. subject_token · signed JWT2. RFC 8693 token exchange3. access_token issued4. direct API call · Bearer …BrowserClerk sessionConsoleserver-sideAuthoritycustomer-ownedResourceOpenAI · GitHub · API
  • Use one console session across Authorities.
    Sign in once through Clerk or SSO and switch among development, staging, and production Authorities. Each Authority issues its own short-lived token.
  • Preserve user identity in audit records.
    Each action carries the user's identity rather than a shared service-account identity, so audit logs record who initiated it.
  • Use existing OAuth and JWT infrastructure.
    Auth51 uses RFC 8693 token exchange, RFC 9440 proof-of-possession, and the Agentic JWT IETF Internet-Draft. Existing JWT libraries can process the resulting tokens.

Get started

Integrate Auth51 with a single import.

Add the client library to the agent process and configure it with an Authority. Outbound calls then carry identity- and intent-bound tokens and appear in audit logs. The client integration requires no sidecar or changes to agent or tool logic.

Python
$ pip install auth51

# Once, at process startup.
import auth51

auth51.configure(
    app_id="acme",
    client_id="a51_live_...",       # from the console
    client_secret="...",            # shown once
    audiences={"api.acme.com"},     # hosts to govern
)

# Bind a run to your registered agent's identity.
# Inside the context, every outbound call mints a fresh
# intent token, carries the agent's checksum, and is
# DPoP-signed in-process. No auth code in your tools.
with auth51.agent("checkout-bot", checksum=cs,
                  scope="payment:execute",
                  audience="api.acme.com"):
    run_agent()
a51 CLI · coming soon
$ brew install auth51/tap/a51

$ a51 connect https://authority.auth51.com
✓ Connected to Authority at authority.auth51.com

$ a51 agents list patchet
Supervisor   Orchestrator   Plan-and-execute   ↳ 3
Planner      Tool-agent     ReAct loop         4 tools
Classifier   Tool-agent     Direct execution   3 tools
Patcher      Tool-agent     Direct execution   2 tools

$ a51 apply -f secure_deploy_v1.0.yaml
✓ workflow secure_deploy_v1.0 registered

$ a51 threats run T7
running T7 cross-agent privilege escalation…
  ✗ OAuth   succeeded  (token replayed across agents)
  ✓ Auth51  blocked    (A7 + A8 caught at IDP)

Evaluate Auth51 with a working agent.

Open the Console and register an agent to inspect identity-bound, auditable calls. The walkthrough demonstrates the same flow against live endpoints.