Business

How to Scope an Agent's Data Access to a Policy Tier

Antonio Evans7 min read

A clear, step-by-step diagram showing four columns for data classification tiers: Public, Internal, Confidential, Restricted.
Key points

Key points

  1. 1Define four policy tiers (Public, Internal, Confidential, Restricted) from your existing data classification, then assign every agent exactly one tier.
  2. 2For each tier, write down the allowed tools, the allowed scopes (read, write, delete, export, external send), and the data classes each tool may touch.
  3. 3Enforce the mapping at runtime at the tool-call boundary, not in the prompt, because instructions in a prompt are advisory while a policy engine check is not.
  4. 4Keep one auditable permission table per tier and re-certify it on a schedule, so drift shows up as a diff rather than as an incident.

Translate classification into agent permissions

Most enterprises already have a data classification scheme: Public, Internal, Confidential, Restricted, or something close to it. Very few of those schemes say anything about what an autonomous agent may do. A classification policy answers "how sensitive is this record?" An agent permission policy must also answer "which tool may read it, under whose identity, and may the result leave the boundary?" Policy guidance on AI use consistently treats data protection, approved and prohibited use, and access controls as separate provisions that must each be spelled out, which is exactly why the mapping step gets skipped the Brightmine AI policy guidance. The mapping is the work.

The practical move is to treat a policy tier as an entitlement bundle. An agent is not "trusted" or "untrusted" in general; it holds a tier, and the tier expands into a concrete set of tool namespaces, HTTP scopes, database verbs, and data classes. Two agents with the same tier should be interchangeable from the data layer's point of view, even if they run different prompts.

A second principle follows from the first: permissions attach to the agent's own identity, not to the developer who built it or the user who triggered it. Security teams writing agent access control guidance are direct about this, arguing that production agents need their own identities, least privilege, scoped permissions, and an audit trail of every tool call rather than a shared service account the GreenNode access control guide. That single decision makes everything downstream cleaner, because the tier can be encoded as an attribute on an identity you control.

One warning before you start. Role-based access control strains when pointed at agents, because an agent's role can change mid-task: a request that begins as read-only can drift into generation or writes. Teams then either flood their logs with role changes or grant one oversized role that covers every possible combination the Auth0 analysis of access control for agents. That is the failure mode a tier system is built to prevent, provided the tier is fixed at session start.

Define the tiers so they produce different permissions

A tier is only useful if it changes behavior. If your Confidential and Restricted tiers end up allowing the same tools with the same scopes, you have two labels and one policy. Force each tier to differ on at least three of these axes: read scope, write scope, external egress, and human approval.

AxisPublicInternalConfidentialRestricted
Retrieval sourcesOpen web, marketing siteWiki, internal docs, published policiesContracts, ticket bodies, financial reports, customer recordsPII, SSNs and dates of birth, credentials, health or payment data
Allowed tool verbsRead onlyRead, draft, create tasksRead, draft, write with approvalRead of redacted views only, no writes
Database accessNone or read-only viewsRead-only views, no raw tablesRead of masked columns, write behind approvalNo direct query; retrieval through a mediated index
External send or uploadAllowedAllowed to approved domainsBlocked to personal accounts, allowed to approved vendorsBlocked entirely
Model providerAny approved providerApproved provider with no-training termsEnterprise endpoint with retention controlsSame-region or self-hosted endpoint only
Human approvalNoneNoneRequired for writes and bulk exportsRequired for every access, time-boxed
LoggingStandardStandardFull prompt and tool-call logsFull logs plus data-class tags on every record

Two rows deserve emphasis. The external send row is where most real damage happens, because copying information into a public tool breaks the boundary regardless of which tier the source data sat in. Policy templates for generative AI call this out repeatedly: state clearly that all company information is confidential regardless of format, and that copying, pasting, dictating, or uploading all count as violations the CRI employee AI use guidance. An agent makes the same mistake without anyone pressing a key, so the egress column has to be enforced by code.

The database row is where the most under-specified decisions live. "Read access to the customer table" is not a tier; it is an unbounded grant. Restricted-tier agents should read through a mediated index or a view with masking applied at query time, so the raw column never enters the model's context. This is the difference between a policy that survives an audit and one that survives only until the first prompt injection.

Assign each agent exactly one tier

The temptation is to let an agent inherit the tier of whoever is chatting with it. Resist that for anything above Internal. An agent that inherits user tier at runtime has an effective tier equal to the most privileged person who ever types into it, and you will not be able to describe its permissions in a review. Context-aware enforcement that evaluates user role, data sensitivity, and intent alongside static rules is valuable, but it works best as a second layer on top of a fixed base tier, not as a replacement the Lasso guide to AI policy enforcement.

A workable assignment rule:

  1. Start from the highest data class the agent must read to do its job at all. That sets the base tier.
  2. If the agent writes, create tasks, or sends externally, confirm the write targets are at or below the base tier. Cross-tier writes require their own approval step.
  3. If the agent must read Restricted data, split it into a read-only agent plus a human reviewer, rather than granting write scope to a Restricted agent.
  4. Record the tier, the justification, and an owner in the same register you use for human role entitlements.

That register matters more than it sounds. Access reviews for agents fail the same way access reviews for people fail: nobody owns the entry, so nobody removes it. Playbooks that work for revenue systems apply here too, including inventorying where agents read or write today, whitelisting objects, fields, and verbs, and running scheduled recertification so dormant or excessive access gets removed the Pedowitz Group agent access playbook.

Enforce the mapping at the tool boundary

A tier that lives only in a system prompt is a suggestion. The model can be talked out of it, and retrieved content can carry instructions that redirect it. Enforcement belongs in the wrapper every tool call passes through, where the decision is deterministic and logged.

A minimal enforcement shape:

TIERS = {
  "public":    {"verbs": {"read"}, "egress": {"web"}, "approval": False},
  "internal":  {"verbs": {"read", "draft", "create_task"}, "egress": {"web", "approved_saas"}, "approval": False},
  "confidential": {"verbs": {"read", "draft", "write"}, "egress": {"approved_saas"}, "approval": True},
  "restricted": {"verbs": {"read_masked"}, "egress": set(), "approval": True},
}

def authorize(agent, tool, verb, data_class, destination):
    tier = TIERS[agent.tier]
    if verb not in tier["verbs"]:
        return deny("verb_not_in_tier")
    if rank(data_class) > rank(agent.tier):
        return deny("data_class_above_tier")
    if destination not in tier["egress"]:
        return deny("egress_blocked")
    if tier["approval"] and not agent.has_approval(scope=tool):
        return escalate("human_approval_required")
    return allow(record_decision=True)

Three properties make this worth writing. First, the check runs before the tool executes, so a blocked call never reaches the data. Second, denials are recorded with a reason code, which turns "why did the agent do that?" into a query. Third, the data class check is independent of the tool, which closes the chaining gap: a read scope in one system plus a write scope in another can produce a serious outcome even when each grant looked harmless alone the Pluto Security explanation of agent access control.

Runtime enforcement is also where regulators and auditors increasingly look. The expectation is shifting from documented safeguards at design time to evidence that controls are actively enforced during operation, including post-deployment monitoring and human oversight the Lasso guide to AI policy enforcement. A decision log with policy, verdict, and enforcement action per tool call is the artifact that demonstrates it.

Audit the tier, and plan for the day it fails

Logging every decision is necessary but not sufficient. You also need to know what normal looks like for each tier, because an agent that starts reading outside its expected data classes is a signal whether or not a rule fired. Runtime monitoring for agent access usually tracks agent identity, session, delegated user context, tools invoked with arguments, data categories touched, and approval events the Pluto Security explanation of agent access control.

When a tier boundary is crossed, the response differs from a classic breach. An incident playbook for agent compromise treats unauthorized agent action as its own scenario, with indicators such as database queries or writes not in the agent spec and access to systems outside the permission boundary, and the containment step is to halt running processes and revoke permissions the Aona AI incident response playbook. Prepare that step in advance, because the fastest containment is a single flag on the agent identity.

The stakes are not hypothetical. A regional bank disclosed an incident stemming from an employee's use of an unauthorized AI application to process non-public customer information, with exposed data including names, Social Security numbers, and dates of birth, and it treated the matter as material under securities disclosure rules even though there was no operational disruption the Wilson Sonsini analysis of the disclosure. The lesson for agent scoping is that exposure alone can be material. A tier system that keeps Restricted data out of any agent without an approval gate is the cheapest version of that control you will ever buy.

A short pre-launch checklist for the tier, all answerable from the register and the decision logs:

  • Every agent has a tier, an owner, and a one-line justification.
  • No agent's egress set includes a destination outside the approved list.
  • Restricted-tier agents hold no write verbs at all.
  • Every Confidential write and every Restricted read produces an approval event.
  • A single flag can disable the agent and revoke its credentials within minutes.
  • The last recertification removed at least one stale grant.

If your team is standing up agents against several providers and wants one place to meter and separate traffic per tier, a unified endpoint layer helps; Quanta Inference (https://quantaintelligence.ai/inference) exposes text, image, video, audio, and embedding models through one OpenAI-compatible key, which makes per-tier routing and spend attribution a configuration detail rather than a separate integration per vendor.

FAQ

FAQ

Should an agent inherit the data tier of the user who invokes it?

Only up to the Internal tier, and only with logging. Above that, fix the agent's tier at session start and require an approval event when the request needs data from a higher class. Inheriting user tier at runtime makes the agent's effective permissions equal to the most privileged person who ever uses it, which you cannot describe in a review.

What is the difference between a data classification tier and a policy tier?

A data classification tier describes a record's sensitivity. A policy tier is an entitlement bundle: the tools, verbs, data classes, and egress destinations an agent may use. They share names deliberately, but the policy tier is the object you enforce in code, and it must be stricter than the data it touches.

Where should enforcement live so a prompt injection cannot bypass it?

At the tool-call boundary, in a wrapper that checks verb, data class, and destination before executing, and logs a decision either way. Fine-grained access control at that layer can block any tool call not explicitly scoped to the agent, so even a successful injection cannot reach sensitive operations the Auth0 analysis. Prompt-level instructions are advisory and should never be the only control.

How do we stop tier drift after launch?

Recertify on a fixed schedule and treat the permission table as a diffable artifact. Review decision logs for allowed-but-risky actions, blocked actions, new workflows, and changing business rules, since context-aware policies decay without continuous tuning the Sweet Security guide to agent policy enforcement. Removing one stale grant per cycle is a reasonable minimum bar.

Does this only matter for agents that can write?

No. Chained low-risk grants produce high-risk outcomes, and a read-only agent with broad retrieval can still surface Restricted data into a response, a report, or a downstream workflow. The egress and data-class checks matter as much for read-only agents as the verb check matters for writers, and incident playbooks treat unauthorized action without a data breach as a distinct, reportable scenario the Aona playbook.

Sources

Sources

  1. 10 things to include in your AI policy | Brightmine
  2. Access Control for AI Agents: Managing Identity and ...
  3. Access Control in the Era of AI Agents
  4. Employee Use of AI: Why You Need a Policy and What to Include
  5. AI Policy Enforcement: Protect Data, Models & Systems
  6. How do you ensure agents have correct data access and ...
  7. What Is AI Agent Access Control? ...
  8. AI Incident Response Playbook (2026), Free Template
  9. "Shadow AI" Triggers First SEC Form 8-K for Unauthorized ...
  10. AI Agent Policy Enforcement: A Complete 2026 Guide
About the author

About the author

Antonio Evans
Antonio Evans

Antonio Evans is the founder of Quanta Intelligence and a fractional CTO who builds HIPAA-ready AI systems for health and life-science companies. Before that he was technical co-founder of FriendsEAT for twenty years, CEO of Socialdraft, and a data engineer at IBM. Antonio lives with his dog Santino in Lisbon, Portugal.

All articles