An offboarded contractor’s CI job still runs a nightly headless‑browser script against the customer portal, using a shared service‑account password that lives in a plain‑text vault. The script, which falls under the FFIEC audit scope, clicks through loan‑application pages, extracts data, and writes a CSV to an internal bucket. No engineer looks at the network traffic, no central log captures the exact clicks, and the password never changes.
In the same organization, a product team builds a new feature that launches a headless‑browser test suite on every pull request. The suite authenticates with the same static credential and drives the same internal web app. Because the browser runs inside the CI runner, the organization has no visibility into which request originated from which commit, which developer approved the change, or whether the test accessed protected consumer data.
The FFIEC handbook mandates that any automated access to consumer‑financial systems be fully auditable. Auditors expect to see who initiated the request, the exact actions performed, and evidence that sensitive fields were protected. They also require that privileged credentials be used on a least‑privilege basis and that any deviation from normal workflow be approved before execution.
Meeting those expectations means more than just rotating passwords. The organization must capture a complete, tamper‑evident record of each browser session, mask personally identifiable information (PII) in responses, and enforce just‑in‑time (JIT) approval for commands that could alter data. Without a control point that sits between the headless browser and the target web service, the audit trail remains fragmented, and the FFIEC evidence gap persists.
hoop.dev provides that control point. It is a layer‑7 gateway that proxies every HTTP request from a headless browser to the internal application. Identity is verified through OIDC or SAML, so the browser never sees the underlying service credentials. The gateway inspects traffic, records each request and response, applies inline masking to PII, and can pause risky operations for human approval before they reach the target.
When a CI pipeline launches a headless‑browser test, the request first authenticates to hoop.dev using a short‑lived token derived from the developer’s identity. hoop.dev then forwards the request to the web app, but only after checking the policy attached to that identity. If the request attempts to read or write a protected field, hoop.dev masks the field in the response or blocks the command entirely. For actions that require higher authority, such as modifying a loan record, hoop.dev routes the request to an approval workflow, logs the decision, and only then forwards the command.
