Release identity
SHA-256 of the pack file bytes: 0511110cc98221b703c6bbd0f6cc60198b3d0ffbe1e78e318ec6b4f9f6e90a04
Not in the distributable release manifest. The binary carries a digest-bound manifest of the distributable library; a pack whose bytes differ from its manifest entry — endpoint, tier, allowlist, or credential edited, with provider, version, and review block preserved — fails the digest check, loses distributability, and renders MODIFIED rather than as the shipped reviewed artifact. Review state and artifact status are different facts: the first is a documentation-review declaration, the second is the identity of the exact bytes.
Capabilities (7)
vault.kv.v2.secrets.list v1.0.0R0
- Action
- read
- Endpoint
LIST https://vault-cluster.invalid/v1/MOUNT/metadata/PATH- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
List key names under a path in the KV v2 engine. This is a collection read of key names only — secret values are not accessible through this endpoint. Vault's own documentation warns that no policy-based filtering is performed on keys and advises not to encode sensitive information in key names; a deployment whose key names are themselves sensitive must raise the tier or class by policy. The Vault HTTP API also accepts GET with ?list=true for this operation; this pack registers the LIST verb only. MOUNT and PATH are placeholders to bind before enabling.
vault.kv.v2.secret.read v1.0.0R0
- Action
- read
- Endpoint
GET https://vault-cluster.invalid/v1/MOUNT/data/PATH- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
Read a secret's current (or a caller-specified) version from the KV v2 engine. Registered at the R0 read floor — the library registers every capability exactly at its verb floor — but the response body IS plaintext secret material (passwords, private keys, API tokens), so the confidentiality impact of a single allowed call is the disclosure of a credential; that sensitivity is carried by this description and bounded by policy, which should scope this capability to named paths and actors. MOUNT and PATH are placeholders to bind before enabling; the optional ?version= query parameter selects an older version and is part of the caller's request, not this registration.
vault.kv.v2.secret.write v1.0.0R2
- Actions
- create, update
- Endpoint
POST https://vault-cluster.invalid/v1/MOUNT/data/PATH- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
Write a new version of a secret in the KV v2 engine. The engine is versioned: a POST creates a new version, but prior versions are retained only up to the mount's configured max_versions — beyond that the oldest versions are permanently dropped, and a mount configured with max_versions=1 retains nothing — so this registration makes no unconditional retention or reversibility claim and sits at the R2 create/update floor. Effect-level honesty: the request body carries an unrestricted caller-supplied data map — this registration cannot and does not restrict WHAT secret content is written, only where; the body also accepts an optional cas option, and if the mount sets cas_required a write without the current version number fails. MOUNT and PATH are placeholders to bind before enabling.
vault.kv.v2.secret.delete v1.0.0R3
- Action
- delete
- Endpoint
DELETE https://vault-cluster.invalid/v1/MOUNT/data/PATH- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
Soft-delete the latest version of a secret: the version stops being returned from reads. Vault documents that the underlying data is not removed and the delete can be undone via the undelete path — but the HTTP verb is DELETE, the effect on every consumer reading the secret is immediate, and undelete requires a separate privileged call, so this registration makes no reversibility claim and sits at the R3 floor: delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) and an irreversible action cannot be taken without a person. MOUNT and PATH are placeholders to bind before enabling.
vault.kv.v2.versions.destroy v1.0.0R3
- Action
- delete
- Endpoint
PUT https://vault-cluster.invalid/v1/MOUNT/destroy/PATH- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
Permanently remove the specified versions' data for a secret. Vault's own documentation describes this as permanently removing version data from the key-value store — there is no undelete for a destroyed version. Registered as delete at the R3 floor; the request body names the versions array, and this registration does not restrict which versions a caller may name. MOUNT and PATH are placeholders to bind before enabling.
vault.kv.v2.metadata.delete v1.0.0R3
- Action
- delete
- Endpoint
DELETE https://vault-cluster.invalid/v1/MOUNT/metadata/PATH- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
Delete a secret's metadata and ALL of its version data: Vault documents this as permanently deleting the key metadata and all version data — the whole key's history is removed. This is the most destructive KV operation this pack registers, at the R3 delete floor. MOUNT and PATH are placeholders to bind before enabling.
vault.leases.revoke v1.0.0R3
- Action
- delete
- Endpoint
POST https://vault-cluster.invalid/v1/sys/leases/revoke- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-vault-service-token- Data class
- internal
Revoke one lease. Per the retrieved leases reference the default behavior QUEUES the revocation: this call initiates revocation but is not, by itself, a guarantee of immediate completion at the backing system — the optional sync=true body parameter revokes the lease immediately and returns only once complete, and this registration does not restrict whether a caller sets it. Once revocation does complete, the dynamic credential or secret the lease tracks is revoked at the backing system and cannot be un-revoked — a revoked database credential stops working wherever it is held — so revocation is a delete-equivalent registered at the R3 floor. The request body names the lease_id; this registration does not restrict which lease a caller may name. The pack registers single-lease revocation only: the sudo-gated mass-revocation endpoints (/sys/leases/revoke-prefix and /sys/leases/revoke-force, the latter of which Vault's documentation describes as potentially very dangerous) are deliberately not registered.
Credential reference
The pack names a reference, never a secret. Installing a pack registers capabilities and makes them governable; registration is not connectivity. The credential is created at the provider and held in the client's own secret manager under the reference the pack names, and deployment testing is still required to show the credential path works and cannot be bypassed.
- Reference
secret-ref-vault-service-token- Custody
- customer_vault
- Injection
- header (X-Vault-Token)
A Vault service token for the customer's own cluster, held in the client's own secret manager. Token issuance is external: an out-of-band deployment process authenticates to a Vault auth method (for example an AppRole login) and stores the resulting service token (an 'hvs.'-prefixed string) under this reference; the pack creates no token and the injector performs no login — it injects the stored value verbatim in the X-Vault-Token header on every call. Vault also accepts the same token as 'Authorization: Bearer <token>'; this pack registers X-Vault-Token only, and a deployment must not store both forms under one reference. Every non-root token has a TTL: prefer renewable service tokens with a short TTL, with renewal owned by the external custody job — an expired token fails closed with a 403. Prefer service tokens over batch tokens, which Vault documents as not revocable. Never store a root token under this reference. Revocation behavior, corrected per the retrieved auth-disable reference: DISABLING an auth method mount (DELETE /sys/auth/:path, the API form of 'vault auth disable') immediately revokes ALL access tokens generated via that mount — Vault's own command documentation states they are immediately revoked and the call blocks until revocation completes. Deleting a ROLE within a mount is a different operation and does not revoke tokens already issued under it: those remain valid until their TTL expires, so TTLs must be short, and the per-token cut-offs are explicit revocation (auth/token/revoke) or revoking a parent token, which revokes its children and their leases. Least privilege: the token's ACL policy should grant exactly the registered operations on the bound mount and paths — read on the concrete MOUNT/data/PATH paths, list and read on MOUNT/metadata/PATH, update on MOUNT/data/PATH and MOUNT/destroy/PATH, delete on MOUNT/data/PATH and MOUNT/metadata/PATH as the enabled capabilities require (the registered soft-delete and metadata-delete operations are HTTP DELETEs and need the delete ACL capability), and update on sys/leases/revoke only if the lease capability is enabled — the revoke endpoint additionally requires sudo authorization on that path, so grant sudo ONLY on sys/leases/revoke when the lease capability is enabled, and nothing more: no other sudo capability, and no wildcard path access, so grant these on the concrete bound paths rather than MOUNT/data/*-style wildcards. No metadata-update permission is needed: this pack registers no metadata write, only metadata list/read and metadata delete. Executor hygiene: the token must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.
Resources
vault-cluster(api, internal):https://vault-cluster.invalid/v1
Pack notes and exclusions
The endpoint host 'vault-cluster.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the customer's own Vault cluster address before enabling, in every endpoint, in the resource locator and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step — the reserved host being allowlisted does not make an unsubstituted pack safe to enable. MOUNT and PATH in the endpoint paths are placeholders: MOUNT binds to the KV version 2 secrets engine mount path (for example 'secret') and PATH to the secret path; bind both before enabling. This pack registers only KV v2 engine paths — KV v1 mounts use different paths (no data/metadata segments) and are not registered. Tiering rationale: the KV v2 secret-value read sits at the R0 read floor like every read in the library — the confidentiality impact of its response (plaintext passwords, keys, tokens) is carried by the capability description and bounded by policy, not by an above-floor tier; metadata and key-name list reads disclose no values and also sit at the R0 floor. Versioned KV v2 writes are registered as create and update at the R2 floor: a POST creates a new version, and prior versions are retained only up to the mount's configured max_versions — retention-driven permanent removal of the oldest versions is possible, so the pack makes no blanket reversibility claim for writes. Soft deletes, version destroys, metadata deletes and lease revocations are registered at the R3 floor: delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) and Vault's own documentation describes destroy as permanently removing version data and the metadata delete as permanently deleting the key metadata and all version data. Soft delete of the latest version (DELETE on the data path) is technically undoable via the undelete path, but the HTTP verb deletes and the registration makes no reversibility claim. Lease revocation is registered as delete at the R3 floor: per the retrieved leases reference the default behavior QUEUES the revocation (immediate completion only with the optional sync=true body parameter), but once revocation completes the dynamic credential or secret the lease tracks is revoked at the backing system and cannot be un-revoked — treating it as delete follows the pack standard that revoke equivalents are irreversible. Documented exclusions: this pack does not register auth/token/create and auth method login endpoints (token issuance is an external custody process, not a governed capability — see the credential note), /sys/leases/revoke-prefix and /sys/leases/revoke-force (sudo-gated mass revocation the Vault documentation itself describes as potentially very dangerous), /sys/policy and /sys/mounts and /sys/auth administration (cluster configuration, not secret operations), seal/unseal and key-rotation operator endpoints, the transit secrets engine (encrypt/decrypt/sign operations are execute-effect capabilities needing their own review), and cubbyhole access. Vault considers PUT and POST synonyms on write paths; this pack registers the documented verb per operation (POST for writes, PUT for destroy) and does not register the alternates. Enterprise namespaces (the X-Vault-Namespace header) are not registered: bind the token's policy and the substituted paths to a single namespace at install.
Review record
Draft review record dated 2026-09-21 · Reviewer: aaes-eng (an opaque id that resolves internally to the responsible reviewer)
- https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2 (retrieved 2026-09-21)
- https://developer.hashicorp.com/vault/api-docs/system/leases (retrieved 2026-09-21)
- https://developer.hashicorp.com/vault/api-docs (retrieved 2026-09-21)
- https://developer.hashicorp.com/vault/docs/concepts/tokens (retrieved 2026-09-21)
- https://developer.hashicorp.com/vault/api-docs/system/auth (retrieved 2026-09-21)
- https://developer.hashicorp.com/vault/docs/commands/auth/disable (retrieved 2026-09-21)
- https://developer.hashicorp.com/vault/docs/concepts/lease (retrieved 2026-09-21)
A pack review is not a vendor or examiner attestation. A retrieval date says when a source page was read; it does not by itself establish what the page said then. No pack is vendor-endorsed, and none has been connectivity-tested against a live vendor tenant.
