> ## Documentation Index
> Fetch the complete documentation index at: https://docs.avibe.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Vaults

> Give Agents controlled access to secrets while keeping secret values out of Avibe's own Vault responses.

**Vaults** let an Agent use a credential without Avibe exposing its value through Vault responses. Agents refer to secrets by name, tag, or Skill tag; Avibe handles storage, policy, approval, and delivery at the boundary where the credential is actually needed.

## The core rule

Avibe's Vault APIs return names, value-free metadata, approval states, or public signatures — not secret values. This keeps the value out of chat and model context as long as the command receiving it does not print or otherwise disclose it.

`vibe vault run` cannot sanitize a child process's stdout or stderr. If that process prints its environment or includes a credential in diagnostic output, the output can return to the Agent and enter model context. Only run commands you trust not to expose secret-bearing output.

For a static secret, Avibe can inject the value into a child process or attach it to an authenticated HTTP request. For a signing key, the private key stays in custody and only a public signature comes back.

## Standard and Protected preview

| Protection    | Status             | What happens on use                                                                                                                 |
| ------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Standard**  | Shipped            | The Agent can use the secret according to its policy; an entry can still be configured to ask first.                                |
| **Protected** | Pre-launch preview | The intended flow asks you to approve the exact operation and unlock it with your passkey. Do not store real credentials in it yet. |

Protected Vaults are designed for end-to-end encrypted custody, but the current build does not yet enforce the immutable sandbox integrity gate required for real users. The UI demonstrates the passkey flow; Protected must not hold production credentials, wallets, or other real secrets until that gate is enabled.

## Static secrets and keypairs

* **Static secret** — an API key, token, password, or connection string. Use it with `vibe vault run` for process-local environment injection or `vibe vault fetch` for authenticated HTTP egress.
* **Keypair** — a deployment signing key. Its private key is not exportable and cannot be used with `run` or `fetch`; use `vibe vault sign` to sign a 32-byte digest. Protected keypair custody has the same pre-launch restriction above.

## When an Agent needs a missing secret

1. The Agent creates a request with the secret name, reason, and non-secret metadata.
2. The request appears in **Vaults** in the Workbench.
3. You review the request, choose Standard, and enter the value in the browser. Protected is preview-only in the current build.
4. Avibe resumes the requesting Agent Session after the secret is ready.

This keeps the credential value out of the request and setup conversation even when the Agent is the one that discovers the requirement.

## Common commands

```bash theme={null}
vibe vault list
vibe vault request OPENAI_API_KEY --reason "Need OpenAI API access"
vibe vault run --env OPENAI_API_KEY -- python sync.py
vibe vault fetch --auth GITHUB_PAT --url https://api.github.com/user
vibe vault sign WALLET_KEY --digest 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
```

Use `vibe vault find` and `vibe vault tags` when the Agent should select by metadata instead of an exact name.

See [Commands](/reference/commands) for the CLI map.
