Effective secrets management is often missing in a CI pipeline that builds a container image, reaches out to a database, a message queue, and an internal API, each time using the same hard‑coded password stored in the repository. The same credential is also shared with a scheduled batch job and a legacy service that never got a proper token rotation. When the contractor who originally wrote the job leaves the company, the secret remains in multiple places, and no one can tell which process actually used it yesterday.
That situation is the default for many application‑to‑application (A2A) integrations. Teams often bake static API keys, database passwords, or cloud tokens into source code, configuration files, or environment variables. The secret travels directly from the calling process to the target service, and there is no central point that can observe, approve, or redact the exchange. Auditors cannot answer who accessed what, and a compromised service instantly gains unrestricted access to downstream resources.
What A2A really needs is a non‑human identity that is scoped to the exact operation, plus a mechanism that hands out that identity only at the moment of use. Even with OIDC service accounts or short‑lived tokens, the request still goes straight to the target system. The connection bypasses any enforcement layer, so there is still no audit trail, no inline masking of sensitive fields, and no way to require a human approval for a risky command.
Why a gateway is the missing piece for secrets management
Enter a Layer 7 gateway that sits between the calling application and the target infrastructure. hoop.dev acts as an identity‑aware proxy. It holds the actual credentials for the downstream service, never exposing them to the caller. The caller presents an OIDC or SAML token that represents a machine identity. hoop.dev validates that token, checks the caller’s group membership, and then decides whether to allow the connection.
Because the gateway is the only place where traffic is inspected, it can enforce the full suite of secrets management controls:
- Just‑in‑time credential issuance: hoop.dev retrieves or generates a short‑lived secret only for the duration of the session, eliminating long‑standing static keys.
- Inline data masking: responses that contain sensitive fields, such as passwords or tokens, are redacted before they reach the caller.
- Command‑level approval: risky operations, like dropping a database or modifying IAM policies, are routed to a human approver before execution.
- Session recording and replay: every request and response is logged, providing a reliable audit log for compliance and forensic analysis.
All of these outcomes exist only because hoop.dev sits in the data path. If the gateway were removed, the same request would reach the target directly, and none of the above protections would apply.
Setup: defining the non‑human identity
The first step is to provision a service account or OIDC client that represents the application. This identity is given the minimal set of permissions required for its specific task – for example, read‑only access to a particular database schema. The identity is then registered with hoop.dev, which stores the downstream credentials in a secure vault. The application never sees the actual password; it only presents its signed token to the gateway.
