Identity Studio is the authorization server for your AI agents. They discover what they may reach, a person consents once, and every call carries a token bound to one resource. Agents use API keys, logins and signing keys from Vaarta Vault without ever seeing them.
Agents get real access to real systems. You keep the keys, the say, and the record.
Your agent calls the API, signs the digest or signs in the browser. It never receives the key, password or one-time code.
use_credential_http · sign_digest · the local credential bridge
Mark an item "ask every use" and each call needs a tap on the matching number on your phone.
Single-use approval bound to a hash of the exact request
An agent's token names one resource as its audience. Every other API refuses it, and it is never passed on.
RFC 8707 resource indicators · no token passthrough
Consent is withdrawn, refresh chains revoked, and live tokens refused at the very next call.
Stop and Stop-all in the vault · RFC 7009 revocation
The protections below are in the code today. The last three are in early access.
Authorization code with PKCE S256, forced for every self-registered client. Refresh tokens rotate; a reused one revokes the whole chain.
RFC 6749RFC 7636OAuth 2.1A 401 carries WWW-Authenticate with resource_metadata, and the metadata names the authorization server and scopes.
RFC 9728RFC 6750MCP 2025-06-18The token's audience is the credential resource, so ordinary app routes refuse it. Outbound calls carry only the item's secret, never the agent's token.
RFC 8707A grant is one person, one agent, one item, the operations and hosts allowed, and an expiry: up to 30 days, 24 hours for signing. Approving needs a fresh step-up.
Each request checks that the person's session is still live. Sign out, get locked or suspended, and the agent stops at its next call.
Items marked "ask every use" need a tap on Vaarta Authenticator. Each approval is spent once and bound to a hash of the method, URL, headers and body.
Secrets are injected as a header, basic auth or query, over https only, to hosts on both the item's and the grant's allow-lists, with DNS pinned and redirects refused. Echoes are redacted.
sign_digest sends a digest; KMS signs with ECDSA P-256 or P-384, or RSA PSS or PKCS#1 with SHA-256 or SHA-512. Never SHA-1, never a raw message.
AWS KMSStop one agent or all of them; RFC 7009 revocation withdraws consent and revokes refresh chains. No step-up is needed to end access.
RFC 7009Self-registered clients are public PKCE clients with loopback or app-scheme redirects, purged after 7 days if nobody consents. Introspection gives no oracle.
RFC 7591RFC 7662The last 30 days of what each agent did: item, operation, host and outcome, refreshed every 15 seconds. Never a value.
Every grant, use, release, signature and refusal is a hash-chained audit row, written before the value is answered. Counters are keyed by agent, never by person.
Service APIs use client credentials with scopes your API defines: 30-minute tokens, 60 a minute per client.
client_credentialsA plan sets how many agents a person may connect.
Browser sign-in and run-with-secret reserved for the person's own local agent.
Access rules applied when an agent refreshes its token.
The Vaarta credential bridge is a local MCP server on the person's own machine, launched over stdio by their coding agent. It drives Chrome through DevTools, the same channel Playwright uses, and keeps every value out of the model's reach.
Input.insertText, straight into the focused field, after checking it is the right field (a password only into type=password) on the host the release was made for.A model that also reads the page between the fill and the submit could see the field. That is why the submit is immediate and a failure empties the field. A command that writes a secret somewhere other than its output does so on its own; only what comes back on stdout and stderr is redacted.
Connect your first agent, grant it one item for one hour, and watch every call in the activity view.