A scope matrix is a grid. Rows are the actors your agent can act as or on behalf of: a support agent, a billing specialist, an end customer, a background job. Columns are the resource and action families: read a ticket, refund a payment, send email, write to the CRM. Each cell carries a claim: allowed, denied, or allowed with approval. The matrix is a design document, and like every design document it is a set of assertions nobody has checked.
The reason this matters is that AI agents expand what a permission grant can reach. A traditional service account does the same thing on every run, while an agent's behavior shifts with each prompt, so one conversation can touch billing history, contract terms and a refund tool under whatever role is attached Reco's vendor questionnaire guidance. That is why a permission that looks narrow on paper can behave broadly at runtime, and why the matrix has to be tested against behavior rather than reviewed on a whiteboard.
There is also a base rate worth knowing. In an April 2026 Cloud Security Alliance survey, 53% of organizations reported their AI agents had exceeded intended permissions as reported by Delight.ai. If your matrix has 40 cells and you have never probed them, the prior should be that several are wrong.
The design principle underneath all of this is least privilege: every component should operate with the lowest access it needs for its task, so that a mistake or compromise stays inside a small area Auth0's treatment of OAuth and least privilege. A scope matrix is least privilege written down. Probes are how you find out whether the written version matches the enforced version.



