# Where are my API keys and credentials stored? (/connect/vault)



## What is the Vault? [#what-is-the-vault]

The Vault is where you store credentials — tokens, passwords, keys — in your workspace. Secret values are encrypted and hidden by default, and you can grant teammates and AI teammates *access* to use a credential — under a trust policy you set and can revoke — without handing over ownership of it.

<LivePreview component="Vault" />

## Why the Vault Matters [#why-the-vault-matters]

### The Problem: Credentials Shared in the Open [#the-problem-credentials-shared-in-the-open]

AI teammates need real credentials — API keys, tokens, passwords — to do real work, but handing them out has no natural stopping point. Pre-sharing a secret to everyone who might possibly need it "just in case" means you can't tell who actually has access, can't revoke one person's use without touching everyone else's, and the secret itself sits exposed the whole time.

### The Solution: Owned, Encrypted, Grantable [#the-solution-owned-encrypted-grantable]

Every credential in the Vault has one owner. Secret values are encrypted and hidden by default — revealing one requires an explicit confirm, and the plaintext stays on screen only until you leave the detail view. Using a credential can be granted separately from owning it: shared directly under a trust policy — **trusted** for repeated use or **one-time** for a single release, with an optional expiry — or published as **requestable** so an AI teammate can discover and ask for exactly the credential it needs, without ever seeing its real name or secret value.

## How the Vault Works [#how-the-vault-works]

Open **Settings** and go to **Vault** under your workspace settings.

## The three tabs [#the-three-tabs]

| Tab                | What it shows                                          |
| ------------------ | ------------------------------------------------------ |
| **My credentials** | Credentials you own                                    |
| **Shared with me** | Credentials a teammate or AI agent has shared with you |
| **Shared by me**   | Outgoing access you've granted to others               |

## Adding a credential [#adding-a-credential]

Click **Add credential**, give it a name, and choose a type:

* **Token** — a single secret string (API key, access token)
* **Password** — a username or email paired with a password
* **Keypair** — a private key with an optional public key
* **Multi-field** — several named secret fields stored together

The secret value is encrypted on save and won't appear in lists or detail views by default. You can also share it as you create it, or leave it private.

## Working with a credential [#working-with-a-credential]

Open a credential to manage it from its detail view:

* **Reveal secret** — the value is locked (`••••••••`) until you confirm; it stays visible only until you leave the detail view
* **Copy** — copy the secret value to your clipboard
* **Edit** — update metadata (name, description, tags) only
* **Rotate** — replace the secret value while keeping the credential's identity and its sharing
* **Share** — grant a teammate or AI agent access
* **Delete** — remove the credential and revoke all shared access (this can't be undone)

<Callout type="warn">
  Revealing a secret puts the plaintext on screen until you leave the detail view. Don't reveal credentials on shared screens or in recordings.
</Callout>

## Real-World Use Cases [#real-world-use-cases]

Each of these is a real workflow the Vault supports, not a hypothetical:

* **Sharing a deploy key with a coding teammate** — grant trusted access to a credential like a GitHub deploy token so a teammate can use it directly, then revoke it from the credential's detail view once the project ends or the teammate's role changes.
* **Letting an AI teammate ask for what it needs** — publish a credential as requestable instead of pre-sharing it to everyone who might need it, so a teammate can discover the preview and request access only when the work actually calls for it.
* **Releasing a secret once, not permanently** — choose one-time access when a credential should be handed over for a single use and then consumed, rather than left standing.
* **Approving a request from your Inbox** — when a teammate requests a requestable credential, the request shows up as an approval card in the teammate's channel and routes through your Inbox, where you approve or deny it.

## Benefits [#benefits]

| Benefit                       | Description                                                                                                |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Owner-controlled              | Every credential has exactly one owner; sharing grants access, it never transfers ownership                |
| Encrypted by default          | Secret values are encrypted and hidden until you explicitly reveal them                                    |
| Revocable anytime             | Revoke access from **Shared by me** or the credential's own detail view, at any time                       |
| Policy-bound sharing          | Choose trusted (repeated use) or one-time (single release) access, with an optional expiry                 |
| Discoverable without exposure | Requestable previews let AI teammates find and ask for a credential without seeing its real name or secret |

## Tips for Managing Credentials [#tips-for-managing-credentials]

| Tip                                                    | Description                                                                                                      |
| ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| Give credentials a specific name                       | Use a name teammates can recognize what it's for before you share or publish it                                  |
| Write a real reason when sharing                       | The reason becomes part of the audit trail and helps future reviewers understand why access exists               |
| Revoke access once it's no longer needed               | Do it when a project ends, a teammate's role changes, or the credential rotates                                  |
| Use requestable credentials for anything unpredictable | Publish a safe preview instead of guessing in advance who will need direct access                                |
| Don't reveal secrets on shared screens                 | The plaintext stays visible until you leave the detail view, so reveal only when no one else can see your screen |

## Common Questions [#common-questions]

**Does sharing a credential give away ownership?**
No. Sharing only grants access to use the credential under the policy you set. It does not transfer ownership, and a human grantee can't edit, rotate, re-share, or delete the credential.

**What's the difference between trusted and one-time access?**
Trusted access allows repeated use; one-time access releases the secret once and then it's consumed. You choose the policy yourself when sharing directly, or the teammate's request specifies which one it's asking for when the credential is requestable.

**Can an AI teammate see the real credential name before I approve its request?**
No. A requestable credential only publishes a preview name and description; the real name, metadata, and secret value stay private until you approve the request.

**How do I stop someone's access?**
Open **Shared by me**, or the sharing section of the credential's detail view, and click **Revoke access**.

**What happens if I delete a credential?**
Deleting a credential removes it and revokes all shared access. This can't be undone.

<Cards>
  <Card title="Share credentials" href="/connect/vault/share-credentials-with-teammates" description="Grant trusted or one-time access, with expiry and revocation." />

  <Card title="Requestable credentials" href="/connect/vault/requestable" description="Let AI teammates discover and request access safely." />
</Cards>
