Autonomous work with your credentials. Your agent never holds them.
Agents sign in, call APIs, open SSH sessions and sign releases with what is in your vault. You approve once on your phone. They get results; the secrets stay sealed.
Seven steps. The secret never travels to the agent at any of them.
Agent1ConnectsDiscovers the endpoint (RFC 9728) and signs in with OAuth 2.1 and PKCE.
You2Allow it onceOne consent screen names the agent and the Vault endpoint.
Identity Studio3Bound tokenAudience is the Vault endpoint only (RFC 8707). 30-minute access token.
Agent4Requests accessOne item, the operations and the hosts. Pending at most 15 min.
Phone5You tap the numberYour phone shows the agent, the item and why.
Vault6Performs itSigns in, calls the API or signs in AWS KMS, under the live grant.
Agent7Result onlyRedacted output, a signature or “signed_in”. Never the secret.
The same path for every agent. A grant can last from 15 minutes to 30 days; a signing grant 24 hours at most.
The tools
Eight tools. None returns a secret.
Metadata tools answer titles and states. The tools that use a secret answer only the result of using it.
Vault MCP tools and what each returns
Tool
Where
What it does
What the agent gets back
list_credentials
Endpoint
Finds your items by title and site
Titles, types and sites. Never a username or a value.
describe_credential
Endpoint
Reads one item's metadata
Type, sites, operations granted and whether each use needs a tap; a signing key's algorithms and public key.
request_credential_access
Endpoint
Asks you for a grant
An approval id and the number you will tap.
check_credential_access
Endpoint
Checks the request and the grant
Whether you approved, and until when.
use_credential_http
Endpoint
An HTTPS call with the stored secret added inside the vault
Status, headers and body, with the secret redacted.
sign_digest
Endpoint
Signs a digest with your key in AWS KMS
The signature. Never the key.
sign_in_browser
Bridge
Signs the agent's browser into a site
“signed_in”, or “filled” when the outcome is not confirmed.
run_with_secret
Bridge
Runs one local command with one secret in one variable
Exit code and output, the secret replaced by [REDACTED].
How we secure it
Every mechanism, exactly.
What stands between an autonomous agent and your secrets, in the order a request meets it.
An OAuth-protected resource
The endpoint is an OAuth 2.1 resource server. It publishes RFC 9728 metadata, and a request without the right token gets a 401 that points to it. It accepts only an access token whose audience is the Vault endpoint (RFC 8707), on a live sign-in. No other token is accepted or passed through.
Agents see titles, types, sites, the operations granted and whether a use needs a tap. Never a password, a username, a key or a card. Cards and identities are hidden from agents entirely.
no tool returns a value
Use without reveal
use_credential_http works on API secrets. HTTPS only, to a host and port the item allows, which a grant can only narrow. DNS is resolved once and every address must be public; TLS is checked; no proxy, no redirect, no retry. The secret is scrubbed from the reply raw, URL-encoded, base64, JSON- or HTML-escaped, hex and UTF-16; Set-Cookie is dropped.
GET HEAD POST PUT PATCH DELETErequest ≤ 64 KiBresponse ≤ 256 KiB10 s timeout
Signing in hardware
sign_digest signs in AWS KMS with a key that cannot be exported. By default every signature asks for a tap. Every signature is recorded with its full digest and label, so a key's card shows what it signed.
500 per key per day30 per minute per key and agent4 digests per callno SHA-1, no raw
Grants with time limits
A grant covers one item, one agent, named operations and hosts. You approve it with a number-matched tap, or in the console after a fresh step-up. A request lapses after 15 minutes; an agent may have five pending.
15 min1 h (default)8 h1 day7 days30 dayssigning ≤ 24 h
Your own items only
The person is the token's subject and the agent is its OAuth client. Another person's item reads exactly like an id that names nothing.
Live activity and Stop all
One feed shows each use with its agent, item, operation and host. Disconnect one agent, or press Stop all to end every agent's access and sign out connected browsers. Neither needs a step-up.
newest 50 · last 30 days
Revocation that sticks
Revoking ends the consent, every refresh grant, every credential grant and the session behind it (RFC 7009). Refresh tokens rotate on every use; a reused one revokes the whole chain.
RFC 7009rotating refresh tokens
A complete audit trail
Every use, refusal, signature and grant writes an audit row before anything is returned. It names the host, never a value or a path.
Your plan sets how many agents each person can connect. If a plan changes, your earliest-connected agents keep working.
Browser sign-in
Let your agent sign in for you, without it ever seeing the password.
Your agent drives a browser. The bridge on your machine puts the password into the one field that needs it, submits, and tells the agent it worked.
Agent1Calls sign_in_browserNames the item and the page's URL.
Bridge2Sends the tab's real URLThe vault checks the grant is for that host.
Phone3Tap, if the item asksItems set to ask every time wait for your number.
Vault4Releases to the bridgeServer to server, held in memory for this one fill.
Bridge5Types into one fieldOne Input.insertText into the verified, focused field.
Bridge6Submits at onceClears the fields if anything fails. The model sees “signed_in”.
No value in any page script
Page scripts only find, tag, focus, empty and click. None of them carries a value, so nothing on the page can read one from a script.
One keystroke stream, into the right field
The value travels once, in DevTools Input.insertText, into the focused field, after the bridge has checked it is the right one: a password goes into a password field only, on the host the release was made for.
Submit at once, clear on failure
The bridge presses the page's own submit control straight away. If anything fails after typing, or the field is still there, it empties the password and code fields.
Loopback-only DevTools
The DevTools endpoint is configured, never guessed, and must be 127.0.0.1, localhost or ::1, for every tab's socket too. It works with a Chrome your agent already drives over the DevTools protocol, the channel Playwright uses.
--remote-debugging-port127.0.0.1 only
Released per host
Each release is checked against the tab's real URL, https only, and against the hosts in your grant.
Memory only
A value is held for one fill or one run, then every reference is dropped. Never a file, a cache, a log line, an error or a tool answer.
run_with_secret, contained
The command runs directly, never through a shell. The secret sits in one environment variable; names that change how programs load, such as PATH, LD_* and NODE_OPTIONS, are refused. Output is redacted with the vault's own redactor.
shell=False[REDACTED]
SSH without a key file
vaarta-credential-bridge ssh gives one command a private ssh-agent socket that signs only SSH login requests, with your KMS key. The host is declared and checked three ways; your phone shows it before you tap.
ssh deploy@build-01.example.com
Persistent, and still yours
One client per machine, registered with Identity Studio (RFC 7591), listed in your vault and disconnectable there.
A bound access token held in memory only. A refresh token in the OS keychain, rotated on every refresh.
One grant approval, then uninterrupted work. Items set to ask every time still wait for your tap.
Disconnect it, let a grant end or press Stop all: the next refresh is refused and the bridge deletes what it kept.
What the bridge cannot stop, stated plainly
An agent that reads the page between the fill and the submit could read the field. The bridge submits at once and clears on failure, but a model driving the same browser through other tools can look.
A command that writes the secret somewhere other than its output does so as its own act. Only what comes back on stdout and stderr is redacted.
“Dropped” means no reference is kept and the memory is reclaimed, not zeroed.
Examples
Two jobs, start to finish.
Ship a release signed by a key in AWS KMS
The agent asks for a 24-hour sign grant, you tap once, and every artefact it builds today is signed. The file is hashed on your machine and never sent.