An AI coding agent opened a connection to your production database at 2am, ran a migration, and read three tables that hold customer records. Nobody was awake. When the SOC 2 auditor asks who accessed that data and under what authorization, "the agent did it" is not an answer they accept.
SOC 2 for AI coding agents comes down to one principle the controls all serve: every action against a real system must be attributable to a named identity, scoped to what that identity was allowed to do, and recorded where the actor cannot alter the record. An agent that writes and runs code does not change that principle. It raises the volume of activity that has to satisfy it.
What SOC 2 actually expects around access
The Trust Services Criteria do not name AI agents. They expect logical access controls (CC6) that restrict access to systems, authorize each principal, and produce evidence that the controls operated over the audit period. The relevant questions an auditor will put to you are concrete:
- Which identity initiated this database session, and how was it authenticated?
- Was its access scoped to the minimum needed, or did it hold standing privileges?
- Where is the command-level record, and could the actor have edited it?
- Were sensitive fields exposed in the output, or redacted before they left the system?
Answer those four for a human engineer and you have most of a SOC 2 access story. The agent breaks it because the agent runs continuously, holds whatever credential you handed it, and logs to its own context, which it controls. SOC 2 enforcement of the access principle has to move off the agent and onto the boundary the agent crosses.
Where the boundary belongs
The architectural requirement is simple to state and easy to get wrong. The control that authorizes and records the agent's access to infrastructure must live outside the agent process. If the agent can reconfigure the policy or rewrite the log, the evidence is worthless, because the actor under audit also controls the audit. The record has to accumulate somewhere the agent cannot reach.
This is the model hoop.dev's access gateway is built around. The coding agent does not connect to your database directly. It connects through an identity-aware proxy that authenticates the request against your identity provider, applies just-in-time scope instead of a standing credential, records the session at the command level outside the agent, and masks sensitive fields in the returned data before they reach the agent. To be precise about what that boundary does and does not touch: it governs the infrastructure connection the agent opens, not the model. hoop.dev does not read the agent's prompt or its generated output. It governs the queries and commands the agent runs against your systems.
