Skip to main content
Like AOF? Give us a star!
If you find AOF useful, please star us on GitHub. It helps us reach more developers and grow the community.

HashiCorp Vault Tools

AOF provides comprehensive integration with HashiCorp Vault for secrets management, encryption, and authentication.

Available Tools

ToolDescription
vault_kv_getRead secret from KV secrets engine
vault_kv_putWrite secret to KV secrets engine
vault_kv_listList secrets at a path
vault_kv_deleteDelete a secret
vault_token_lookupGet information about a token
vault_transit_encryptEncrypt data using Transit engine
vault_transit_decryptDecrypt data using Transit engine
vault_approle_loginAuthenticate using AppRole

Configuration

Set these environment variables:

export VAULT_ADDR="https://vault.example.com"
export VAULT_TOKEN="your-token"

Tool Reference

vault_kv_get

Read a secret from Vault's KV secrets engine.

Parameters:

ParameterTypeRequiredDescription
endpointstringYesVault server URL
pathstringYesSecret path (e.g., secret/data/myapp)
versionintegerNoSecret version (KV v2 only)
tokenstringYesVault authentication token
namespacestringNoVault namespace (Enterprise)

Example:

tools:
- vault_kv_get

# Agent prompt usage:
# "Read the database credentials from secret/data/myapp/db"

Response:

{
"success": true,
"data": {
"username": "admin",
"password": "..."
},
"metadata": {
"version": 3,
"created_time": "2024-01-15T10:00:00Z"
},
"path": "secret/data/myapp/db"
}

vault_kv_put

Write a secret to Vault's KV secrets engine.

Parameters:

ParameterTypeRequiredDescription
endpointstringYesVault server URL
pathstringYesSecret path
dataobjectYesSecret data as key-value pairs
casintegerNoCheck-and-set version for optimistic concurrency
tokenstringYesVault authentication token

Example:

# Write a secret with CAS for safe updates
# "Store API key in secret/data/myapp/api with cas=5"

vault_kv_list

List secret keys at a path.

Parameters:

ParameterTypeRequiredDescription
endpointstringYesVault server URL
pathstringYesPath to list (e.g., secret/metadata/myapp)
tokenstringYesVault authentication token

Response:

{
"success": true,
"keys": ["db", "api", "cache/"],
"path": "secret/metadata/myapp"
}

vault_transit_encrypt

Encrypt data using Vault's Transit secrets engine.

Parameters:

ParameterTypeRequiredDescription
endpointstringYesVault server URL
key_namestringYesName of the encryption key
plaintextstringYesData to encrypt
contextstringNoBase64-encoded context for key derivation
key_versionintegerNoSpecific key version to use
tokenstringYesVault authentication token
mountstringNoTransit mount path (default: transit)

Response:

{
"success": true,
"ciphertext": "vault:v1:AbC123...",
"key_version": 1
}

vault_transit_decrypt

Decrypt ciphertext using Vault's Transit secrets engine.

Parameters:

ParameterTypeRequiredDescription
endpointstringYesVault server URL
key_namestringYesName of the encryption key
ciphertextstringYesVault-encrypted ciphertext
contextstringNoBase64-encoded context for key derivation
tokenstringYesVault authentication token
mountstringNoTransit mount path (default: transit)

vault_approle_login

Authenticate to Vault using AppRole method.

Parameters:

ParameterTypeRequiredDescription
endpointstringYesVault server URL
role_idstringYesAppRole role ID
secret_idstringYesAppRole secret ID
mountstringNoAppRole mount path (default: approle)

Response:

{
"success": true,
"client_token": "s.abc123...",
"accessor": "...",
"policies": ["default", "myapp-policy"],
"lease_duration": 3600,
"renewable": true
}

Example Agent

apiVersion: aof.sh/v1alpha1
kind: Agent
metadata:
name: secrets-manager
spec:
model: google:gemini-2.5-flash
tools:
- vault_kv_get
- vault_kv_put
- vault_kv_list
- vault_transit_encrypt
- vault_transit_decrypt

environment:
VAULT_ADDR: "${VAULT_ADDR}"
VAULT_TOKEN: "${VAULT_TOKEN}"

system_prompt: |
You are a secrets management assistant.

- Read secrets when needed for configuration
- Encrypt sensitive data before storing
- Never expose secret values in your output
- Track secret versions for auditing

Best Practices

  1. Use AppRole for automation - Don't use root tokens in production
  2. Enable versioning - KV v2 provides version history
  3. Use Transit for encryption - Let Vault manage encryption keys
  4. Set appropriate TTLs - Use short-lived tokens when possible
  5. Audit access - Enable Vault audit logging