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

# Store secrets with Vault

> Store API keys, passwords, and credentials securely with Vault in Agent Builder. Reference secrets in blueprints and Python code.

Agent Builder provides **Vault**, which is a secure way to store and use secrets in your agents. Use Vault to store sensitive information like API keys, passwords, and other credentials.

You can reference secrets in any block in your blueprint and [within Python code](/agent-builder/python-secrets).

<img src="https://mintcdn.com/writer/Ph7gAl4exSh0IC1l/images/agent-builder/vault-overview.png?fit=max&auto=format&n=Ph7gAl4exSh0IC1l&q=85&s=33a4c1f34a0ea1cde51abe05f46f875b" alt="Vault overview" width="3456" height="1802" data-path="images/agent-builder/vault-overview.png" />

## Create a secret

Secrets are strings stored as key-value pairs. To create a secret, go to the **Vault** tab in the Agent Builder UI and click **+Add a pair**.

The example below creates a secret with the name `WRITER_API_KEY`. When you type the value, it's masked in the UI.

Click **Save** to store the secret.

<img src="https://mintcdn.com/writer/Ph7gAl4exSh0IC1l/images/agent-builder/vault-add-secret.png?fit=max&auto=format&n=Ph7gAl4exSh0IC1l&q=85&s=1537e604f2e50506eacb0c1dc1aa3bcb" alt="" width="964" height="618" data-path="images/agent-builder/vault-add-secret.png" />

You can also delete and update secrets from the **Vault** tab.

## Use a secret

To use a secret, reference it in a block in your blueprint with the prefix `@{vault}`. For example, to use the `WRITER_API_KEY` secret, you would use it as `@{vault.WRITER_API_KEY}`.

The example below shows adding an authorization header to an HTTP request block using the `WRITER_API_KEY` secret.

<img src="https://mintcdn.com/writer/Ph7gAl4exSh0IC1l/images/agent-builder/vault-use-secret.png?fit=max&auto=format&n=Ph7gAl4exSh0IC1l&q=85&s=51c8036c149045216e9117c6de71a143" alt="" width="2738" height="1290" data-path="images/agent-builder/vault-use-secret.png" />

When you reference a secret, it's automatically masked in the UI.

<img src="https://mintcdn.com/writer/pM8WhgC5nDcujQ4i/images/agent-builder/http-request-with-secret.png?fit=max&auto=format&n=pM8WhgC5nDcujQ4i&q=85&s=69db2753aaee6aad3cab3964cb020cb6" alt="" width="1562" height="850" data-path="images/agent-builder/http-request-with-secret.png" />

## Use a secret in Python code

You can access secrets in Python code blocks within blueprints using the `vault` object. `vault` is a dictionary that contains all the secrets in your blueprint.

<Warning>
  Vault secrets are only available in **blueprint code blocks** and **event handlers**. They are not available in `main.py` or other Python modules at the global scope. This is by design for security reasons. If you need to access secrets in `main.py`, use environment variables like `os.getenv('WRITER_API_KEY')` instead.
</Warning>

For example, to access a secret called `API_KEY` and use it in an HTTP request, you would use the following code:

```python theme={null}
headers = {
    "Authorization": f"Bearer {vault['API_KEY']}"
}
```

Learn more about [accessing secrets in Python code](/agent-builder/python-secrets).

## Next steps

Now that you've learned how to store and use secrets in Vault, learn how to [make authenticated API calls using HTTP request blocks](/blueprints/httprequest) with your stored credentials.

**More resources**

* [Access secrets in Python code](/agent-builder/python-secrets) - Learn how to use vault secrets in event handlers and Python code blocks
* [Python code blocks](/blueprints/pythoncode) - Add custom Python logic to your blueprints
* [Local development](/agent-builder/local-development) - Set up local development with environment variables

<feedback />
