The goal is not zero access — an agent that cannot read anything is useless. The goal is bounded access: enough to do the work, constrained so that a mistake or an injected prompt cannot become an incident.
A read-only database user stops writes, but it does not stop an agent from reading every row in every table it can see, running a query that saturates your database, or holding a connection open. A read replica protects write traffic but not the data itself. Neither gives you per-agent scoping or a query-level audit trail.
Give each agent its own key and its own policy, point analytics agents at a replica, and review the audit log before loosening any scope. QueryShield applies every layer above by default, so “safe access” is the starting configuration rather than something you assemble yourself.
A secure SQL proxy for AI agents: natural language in, SELECT-only validated SQL out, per-agent row-level security, and an append-only audit log. Your agents never see connection strings.