Vault binding requires the Ultraviolet tier and the
HashiCorp Vault Database secrets engine. See
Tier comparison for what each tier unlocks.
Why it matters
Without Vault binding, your application holds a long-lived database password. Every leaked password = forever-valid access. With Vault binding, the password’s lifetime is the intent token’s lifetime — typically 5 minutes — and is scoped to the columns the purpose declared.1. Enable the database engine in Vault
2. Create a role per purpose
Each purpose Inviolet manages gets a Vault role. The role’s SQL grants match the purpose’selements allowlist.
3. Wire Inviolet → Vault
App dashboard → Settings → Credential Brokers → Add Vault. Provide:- Vault address (e.g.,
https://vault.example.com:8200) - AppRole role_id + secret_id
- Path prefix (
database/creds/inviolet-*)
4. Bind to a purpose
For each purpose, Settings → Purposes → pick → Credentials → Bind to Vault role. Pick the matching Vault role.5. Verify
Trigger a tool call that matches the purpose. The decision-feed entry will now include acredential.vault_lease_id field. Run
vault read database/creds/... to confirm it’s a fresh short-lived
credential, not the long-lived one your app used to hold.
Read next
- Intent tokens — the lifetime contract Vault credentials inherit
- Six enforcement layers — where Vault binding fits in the stack