Systems and records
AI agent governance: access scopes, approvals and audit logs
By SourceX Editorial · Reviewed by Noah Loul ·
Short answer
AI agent governance is the set of owners, rules and controls that decide which company systems an AI agent can reach, with what scopes, which actions need human approval, what is logged and for how long, and what is never in scope. Settle it per system before connecting: least-privilege scopes enforced by the system, approval for irreversible or external actions, identifier-level logs, and a written exclusion list.
Key takeaways
- Govern an agent's access per system, in writing, before the first connection, using one control sheet with scope, approval trigger, log fields, retention and exclusions.
- Enforce scopes in the downstream system and the agent runtime, not in the prompt; tool self-descriptions are hints, not controls.
- Require human approval for money, external messages, deletions, access changes and data leaving the company, and keep the trigger list short enough that approvers still read it.
- Log identifiers, approvals and results rather than full record contents, and check platform default retention against what your audits and contracts need.
- Give every agent a named sponsor, review its access quarterly, and retire it like a departing employee.
- Agent access is not a data license: a connection does not by itself grant a vendor training rights.
What is AI agent governance?#
AI agent governance is the set of owners, rules and technical controls that decide which company systems an AI agent may reach, under which identity and scopes, which of its actions need a person to approve them, what gets logged, how long those logs are kept, and what is never in scope. It applies whether the agent is a vendor copilot, an internal build or an assistant connected through MCP.
It is narrower than AI governance as a whole. The NIST AI Risk Management Framework treats Govern as a cross-cutting function covering policies, roles, inventories and third-party risk for every AI system. Agent governance is the part of that program that turns policy into permissions: the scopes on a token, the deny rules in an agent runtime, the approval step in front of a refund.
It is also different from data governance for a licensing decision, which decides who approves releasing a copy of records to an outside developer, and from governance tooling, which records where data lives and moves. Those questions are covered in separate guides linked at the end. This page is about the live access an agent has to your systems of record.
Why does an agent need different controls from a person or an app?#
An agent needs its own controls because it decides at run time which tools to call, and that decision can be steered by the content it reads. OWASP's guidance for LLM applications calls the resulting risk Excessive Agency and traces it to three root causes: excessive functionality, excessive permissions and excessive autonomy.
A person with CRM access will not obey an instruction hidden in a support ticket. An agent might, which is why OWASP's Top 10 for Agentic Applications, published in December 2025, lists agent goal hijack, tool misuse, and identity and privilege abuse as separate risks. A conventional integration also behaves predictably: it calls the same endpoints every night. An agent with the same credentials can combine them in ways nobody tested.
Two design rules follow. First, enforce authorization in the downstream system, not in the prompt; OWASP calls this complete mediation. Second, act in the context of the user the agent works for, with the minimum privileges needed, rather than through one shared high-privilege account. On the token side, the MCP specification requires servers to accept only tokens issued for them and forbids passing a client's token through to upstream APIs.
- 01Your work records
- 02Personal details removed
- 03You approve the release
- 04Licensed to AI developers
The agent access control sheet: one row per system#
The access control sheet is one table, filled per system, that records the agent's default scope, what triggers a human approval, what the log captures and for how long, and what is excluded. Fill it before the first connection and attach it to the approval for that agent. The rows below are a starting template for common business systems; replace the examples with your own objects and fields.
| System (examples) | Default agent scope | Approval trigger | Log fields and retention | Excluded from scope |
|---|---|---|---|---|
| CRM (Salesforce, HubSpot) | Read accounts, contacts, opportunities and activities the acting user can see; write only tasks and notes | Any stage, amount or owner change; any bulk update; any email sent to a customer | Agent ID, acting user, record IDs read or changed, before and after values on writes; keep for your incident review window | Exported contact lists, marketing consent fields edited by the agent, partner-owned records |
| Service desk (Zendesk, Jira Service Management) | Read tickets and macros; draft replies and internal notes | Sending a public reply, issuing a refund or credit, closing a ticket in bulk | Ticket IDs, draft ID, approver, sent or rejected, macro used | Attachments with ID documents or card images, tickets under legal hold |
| ERP and finance (NetSuite, QuickBooks) | Read-only reports and transactions for named subsidiaries | Any payment, journal entry, vendor bank detail change or credit memo, always | Transaction IDs, amounts, approver ID and time, result; keep with financial audit evidence | Payroll, bank credentials, tax filings, other subsidiaries |
| Email and chat (Outlook, Gmail, Slack) | Read the acting user's mailbox or named channels; create drafts | Every outbound message, forward or new channel invite | Message IDs, recipients, draft or sent, approver; no message bodies by default | Executive, legal and HR mailboxes; private channels not named in the approval |
| File stores (SharePoint, Google Drive) | Read named folders with existing sharing permissions | Creating external share links, moving or deleting files | File IDs and paths, action, link type created | Board, M&A, legal privileged and HR folders |
| HR and payroll (Workday, ADP) | None by default; metadata only if a use case is approved | Any access at all, approved per use case | Every query, with justification reference | Compensation, health, background check and performance records |
| Code and engineering (GitHub, Jira) | Read repositories and issues in named projects; open pull requests | Merging, changing branch protection, editing secrets or CI settings | Repository, branch, PR ID, files changed, approver | Secrets, production deploy keys, customer data fixtures |
| Field service (ServiceTitan) | Read jobs, schedules and equipment history for named locations | Dispatch changes, price changes, customer notifications | Job IDs, change made, approver, time | Customer payment details, technician personal data beyond name |
How should you set an agent's scopes?#
Set scopes by starting from nothing and adding the narrowest access each task needs, which is the NIST definition of least privilege applied to a process acting on a user's behalf. In practice that means five tiers, assigned per system and written into the control sheet.
Grant the tier through the system's own permission model, such as a dedicated integration user, a permission set or an OAuth scope, not through instructions to the agent. Under the MCP authorization model, a client should request only the scopes it needs, and a server can answer a call that needs more with an insufficient_scope error, so extra access is asked for at the moment it is needed rather than granted up front.
Then narrow again inside the agent runtime. Agent frameworks let you deny tools outright. In the Claude Agent SDK, a matching deny rule blocks a tool even in its most permissive mode, and a dontAsk mode turns every unplanned request into a denial, which suits a headless agent with a fixed tool list. Do not rely on a tool's self-description: the MCP specification treats annotations such as readOnlyHint as untrusted hints unless the server itself is trusted.
- Tier 0, metadata only: object names, field lists, record counts and date ranges, no record contents. Use it for discovery and scoping.
- Tier 1, read records: contents of named objects the acting user can already see.
- Tier 2, draft: the agent writes to a draft, staging table or suggestion that a person publishes.
- Tier 3, write with approval: the agent changes a system of record only after a named approver says yes.
- Tier 4, never: listed in the exclusion column, enforced by a deny rule and by the system's own permissions.
Which agent actions should need human approval?#
Require approval for actions that are hard to reverse, that leave the company, or that change who can access what. The MCP specification says there should always be a human able to deny tool invocations and that clients should prompt for confirmation on sensitive operations; OWASP recommends human approval of high-impact actions, implemented in the downstream system or the tool itself.
Agent frameworks now make this a declared property of a tool. The OpenAI Agents SDK lets a tool set needs_approval, pauses the run until a person approves or rejects the call, and falls back to manual approval when a rule cannot safely read the arguments. That fail-closed behavior is the right default to ask any vendor about.
Keep the trigger list short. If every read needs a click, approvers stop reading. Approve categories of action, record each decision, and review the approval log monthly for anything approved too quickly or too often.
- Money: payments, refunds, credits, price changes, vendor bank details.
- External communication: emails, chat replies, social posts, notifications to customers or suppliers.
- Deletion and bulk change: deletes, merges, mass updates above a set record count.
- Access change: sharing links, role or permission edits, new connections, new scopes requested at run time.
- Data leaving: exports, file downloads to a new location, any copy to a system outside the approved list.
- First use: the first call to any tool the agent has not used under this approval.
What should an agent audit log record, and how long should you keep it?#
An agent audit log should let you reconstruct who acted, for whom, through which tool, on which records, with whose approval, and with what result, without storing a second copy of the records themselves. The MCP specification asks clients to log tool usage for audit; OWASP adds that logging limits damage even though it does not prevent it.
Watch the default payload. OpenAI's Agents SDK tracing is on by default and records the inputs and outputs of model calls and function calls unless trace_include_sensitive_data is turned off. That is useful while testing and risky in production, because the trace store becomes a new archive of customer and employee data with its own access and retention questions.
Set retention per log type, and check the platform default before you assume one. In Microsoft Purview, for example, Audit (Standard) records are kept for 180 days by default, Premium records for Exchange, SharePoint, OneDrive and Microsoft Entra ID one year for suitably licensed users, and records of non-user entities such as service principals a fixed one year. If your incident review, financial audit or contract terms need longer, configure it. Counsel should confirm periods set by law or contract.
- Agent identity and version, plus the human sponsor.
- Acting user or service context, and the scopes on the token used.
- Tool or MCP server called, and the action.
- Record identifiers read or changed, not full record bodies.
- Parameters, redacted or hashed where they contain personal data.
- Approval ID, approver and decision time for gated actions.
- Result: success, error, denied by policy, rejected by approver.
- Session or trace ID linking every step of one task.
What should stay out of an agent's reach?#
Some records should stay out of an agent's reach regardless of how useful they would be, either because the risk of a wrong action is too high or because your obligations to others do not allow it. Put them in the exclusion column, enforce them with deny rules and system permissions, and review the list whenever a new system is connected.
Exclusions protect against two different failures. One is the agent doing something harmful with access it should not have. The other is the agent's vendor receiving data your contracts or privacy notices do not permit you to share with that vendor. Access permissions answer the first; your contracts, notices and counsel answer the second.
- Credentials, API keys, secrets and bank login details anywhere they are stored.
- Payment card data and full bank account numbers.
- Health, disability, background check and other sensitive employee records.
- Compensation and payroll detail.
- Legally privileged files, litigation folders and anything under a legal hold, for writes at minimum.
- Board, M&A and investor materials.
- Customer data whose contract forbids processing by new subprocessors or AI vendors.
- Systems belonging to clients, partners or acquired entities not covered by the approval.
Who owns agent governance, and how often is access reviewed?#
Give every agent a named human sponsor who is accountable for its purpose, its access and its retirement, separate from the engineer who configures it. Microsoft Entra ID Governance, whose agent governance features Microsoft labels as preview, builds this into agent identities: sponsors are accountable for lifecycle decisions and access reviews, access package assignments can expire unless the sponsor extends them, and sponsorship passes to the sponsor's manager when the sponsor leaves.
The NIST AI RMF asks for the same structure in tool-neutral terms: an inventory of AI systems (GOVERN 1.6), defined human roles for overseeing them (GOVERN 3.2), and policies for third-party AI risk (GOVERN 6.1). For agents, the inventory row is the control sheet.
Review access on a fixed cycle, quarterly for most agents and at every change of vendor, model, MCP server or use case. Remove scopes nobody used in the period. Retire an agent the way you would offboard an employee: revoke tokens, delete its integration user, and keep its logs for the retention period.
| Role | Owns | Signs off on | Review cadence |
|---|---|---|---|
| Agent sponsor (business owner) | Purpose, use case and continued need | Initial approval, extensions, retirement | Quarterly access review |
| System owner (CRM, ERP, service desk) | Scopes and exclusions for that system | Each row of the control sheet for the system | At every scope change |
| Security or IT | Identity, tokens, deny rules, log pipeline | Connection of new MCP servers and vendors | Monthly log and approval spot check |
| Privacy or legal counsel | Exclusions driven by law, notices and contracts | Vendor terms and log retention periods | At vendor change or new data category |
| Named approvers | Gated actions in daily work | Individual approvals | Monthly review of approval patterns |
How does agent access relate to licensing your data?#
Giving an agent access to your systems is not the same as licensing your data. An agent reads records live, for your own work, under your permissions. Licensing delivers a defined, prepared copy to an outside developer under a contract that limits its use. A connection or OAuth approval does not by itself grant a vendor rights to train on what the agent reads; whether a vendor may retain or reuse that data depends on its terms, which counsel should review.
The governance work overlaps in useful ways. The control sheet is also an inventory of which systems hold which records, and clean audit logs show what has already been shared and with whom. Both help when a licensing question comes up later.
SourceX is the enterprise data transaction layer for AI: it runs rights review, contracting, data preparation, delivery and payment for businesses licensing operational data to AI developers. The company approves exactly what is released, once per deal, and sees what would leave before anything is shared. That is a separate decision from any agent connection, made through a contract rather than a token.
Frequently asked questions
What is the difference between AI governance and AI agent governance?
AI governance covers every AI system a company uses or builds: policies, roles, risk assessment and third-party oversight. AI agent governance is the operational part for agents that act in your systems, and it sets their identities, scopes, approval steps, logs and exclusions. A company can have an AI policy and still have no control over what a connected agent can change in its CRM.
Should an AI agent use its own identity or the user's?
Use the identity of the user the agent works for when it acts on that user's behalf, with the narrowest scopes needed, so it can never see more than that person can. Give an autonomous background agent its own dedicated identity with its own permissions and a human sponsor. Avoid one shared high-privilege service account for all agent work, because it defeats both least privilege and the audit trail.
Does connecting an agent through MCP make it secure by default?
No. Authorization is optional in the MCP specification, and when it is used it relies on OAuth scopes and audience-bound tokens that you still have to configure narrowly. The specification recommends a human able to deny tool calls and audit logging of tool use, but the client and server you choose decide whether those happen. Treat each MCP server as a new integration that needs a row in your control sheet.
How long should AI agent audit logs be kept?
Long enough to cover your incident investigation window, financial audit evidence and any period set by contract or law, and no longer than needed, because the logs themselves can hold personal data. Check your platform's default first: some audit services keep standard records for 180 days unless you configure longer. Counsel should confirm any period set by regulation.
Do agent approvals slow everything down?
They do if every read needs a click. Gate categories of action that are hard to reverse or leave the company, such as payments, outbound messages, deletions, access changes and exports, and let reads within approved scopes run. Review approval patterns monthly so routine approvals can become narrower standing rules.
Sources
- The NIST AI Risk Management Framework treats Govern as a cross-cutting function and includes subcategories for inventorying AI systems (GOVERN 1.6), defining human roles for oversight of AI systems (GOVERN 3.2) and managing third-party AI risks (GOVERN 6.1). Source
- OWASP LLM06:2025 Excessive Agency names excessive functionality, permissions and autonomy as root causes and recommends minimal extensions and permissions, running in the user's context, human approval of high-impact actions, authorization enforced in downstream systems, and logging. Source
- OWASP published the Top 10 for Agentic Applications in December 2025; its risks include agent goal hijack (ASI01), tool misuse (ASI02) and identity and privilege abuse (ASI03). Source
- In the MCP 2026-07-28 specification, authorization is optional; when used, MCP servers act as OAuth 2.1 resource servers, clients should request only the scopes they need, servers can signal missing scope with insufficient_scope, and tokens must be audience-bound to the server. Source
- MCP servers must reject tokens not issued for them and must not pass a client's token through to upstream APIs. Source
- The MCP tools specification says there should always be a human in the loop able to deny tool invocations, that clients should confirm sensitive operations and log tool usage for audit, and that tool annotations such as readOnlyHint are untrusted hints unless the server is trusted. Source
- NIST defines least privilege as restricting the access of users, or processes acting on their behalf, to the minimum necessary to accomplish assigned tasks. Source
- The Claude Agent SDK evaluates hooks, deny rules, ask rules, the permission mode, allow rules and then a runtime callback; a matching deny rule blocks a tool even in bypassPermissions mode, and dontAsk mode turns every prompt into a denial. Source
- The OpenAI Agents SDK lets a tool declare needs_approval, pauses the run until a person approves or rejects the call, and requires manual approval when an approval rule cannot safely inspect the arguments. Source
- OpenAI Agents SDK tracing is on by default and, by default, records the inputs and outputs of model generations and function calls unless trace_include_sensitive_data is set to false. Source
- Microsoft Entra ID Governance (agent governance is labelled preview) assigns each agent identity a human sponsor accountable for its purpose, lifecycle and access reviews; access package assignments can expire, and sponsorship moves to the sponsor's manager when the sponsor leaves. Source
- Microsoft Purview keeps Audit (Standard) records for 180 days by default; its default Audit (Premium) policy keeps Exchange, SharePoint, OneDrive and Microsoft Entra ID records for one year for suitably licensed users (180 days otherwise); records of non-user entities such as service principals are kept for a fixed one year. Source
Related resources
- InsightInsolvency professionals' guide to AI-era data assets
- InsightLender consent before licensing company data: what credit agreements say
- InsightConversation intelligence vendors: can you train on or license customer calls?
- SolutionOperational data: the step-by-step record of how work gets done
- IndustryBPO & contact centers data
- IndustryRecruiting & staffing data
See if your company qualifies
A short company assessment. No data uploads are needed.