Vault: permission denied" on secret read
Fixes HashiCorp Vault 'permission denied' on a secret read: trace the token's policy to the path and grant the missing capability. Use when vault kv get or API reads return 403. Not for expired tokens (different error).
TL;DR
Permission denied means the token's policies do not grant read on that path. Look up the token, compare its policies against the path's required capability, and fix the policy or the path. The token is valid; it just is not allowed there.
Error
"Vault: permission denied" on secret readSteps
- Confirm the token works at all:
vault token lookup. Expected: token metadata, not an auth error. - List the token's policies and read each one, checking for the path you need with read or list capability. Expected: you find the policy gap.
- Check the exact path, including the kv-v2
datasegment: reads go to[mount]/data/[path], and policies must allow that full path. Expected: path mismatches surface here. - Fix the policy (add the path with read capability) or have the secret moved under an allowed path. Expected: policy change takes effect immediately.
- Retry the read. Expected: the secret returns.
When to use
vault kv getor the API returns 403 permission denied.- The token is valid (lookup succeeds).
When not to use
- Token lookup fails (the token is expired or invalid; re-authenticate).
- The error is on write (check the policy's create/update capabilities instead).
Tool compatibility
- Vault kv-v2; HCL policies; token, approle, and other auth methods.
Variant phrasings
vault 403 permission denied reading secret
Same cause.
vault policy denies access to path
The policy needs the path added.
Why it happens
Vault denies by default. Policies are path-based and kv-v2 inserts a data segment that policies must include, which is the most common mismatch.
Edge cases
denyrules in any attached policy override allows elsewhere.- Tokens inherit the union of their policies; check all of them, not just the first.
- Namespace-aware Vault needs the policy in the right namespace.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_Zn57TK-KstYyVg0A470qFA
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.