Back to Blog
Published:
Last Updated:
Recently Updated
Copilot BoundaryChapter 2

Can an AI agent in Dynamics 365 give itself more permissions?

8 min read
1,903 words
high priority
Mudassir Marwat

Mudassir Marwat

Founder & CEO, Cognilium AI

TL;DR

No — not through the administration forms. The Dynamics 365 ERP MCP server (generally available 27 January 2026) excludes the security, user, Microsoft Entra application and feature-management forms by name. The role you assign is still yours to scope.

Can an AI agent in Dynamics 365 give itself more permissions?

No — not through the administration forms, and not to anything its security role does not already reach. The reason that answer is worth reading is that it comes as a list of form names you can check, rather than an assurance you have to trust.

It is the question that decides whether an agentic ERP (enterprise resource planning — the system that runs finance, supply chain and operations) deployment clears security review, and the CISO (chief information security officer) asking it deserves a concrete answer rather than a posture.

The short version, then the mechanism

The Dynamics 365 ERP MCP server — MCP is the Model Context Protocol, the open standard that lets an AI agent discover and call functions exposed by another system — reached general availability on 27 January 2026 [GA].

It excludes the system-administration forms an agent would have to reach to widen its own access. It has no route through those forms to add itself to a security role, edit the security configuration, create or alter users, register a Microsoft Entra ID application (Entra ID is Microsoft's cloud identity directory), or switch features on.

That is a design decision with a published artefact behind it, which is a far better security answer than a statement of intent.

How scoping works before we get to the exclusions

The server re-derives the agent's context on every tool call. Microsoft's wording: the server "dynamically updates the context it provides to the agent with each tool call based on the agent's security permissions and application configuration, extensions, and personalization".

  • form_find_menu_item — Returns only menu items the role can access
  • The form view model returned — Contains only the data, fields and actions the role can access
  • data_find_entity_type — Returns only entities the role can access
  • api_find_actions — Returns only APIs the role can access
  • Any explicit call to an out-of-role object — Rejected by the system

Read the last row carefully, because it closes the obvious hole. An agent that somehow learns the name of an object it cannot see does not gain anything by naming it. Discovery is filtered and direct access is refused.

Microsoft's stated reason for narrow roles is worth quoting to a sceptical architect, because it is a security argument and a performance argument in the same breath:

Limiting the menu items, entities, and APIs by using roles is important for limiting the scope of the agent. It also improves agent orchestration by limiting the context the agent needs to orchestrate over to find the right form, data, or actions.

A narrower role gives the model a smaller candidate space. Smaller space, better tool selection, fewer calls, lower bill. Security, accuracy and cost move in the same direction, which almost never happens and is the single most useful thing to say in a design meeting.

The forms that are excluded by design

This is the answer you hand to a security architect. Microsoft's own framing is that the server "doesn't provide access to some forms related to system admin tasks, like feature management, user management, and managing security" — and then publishes the list.

  • Security configuration — Form name: SysSecConfiguration · Category: Security
  • User role assignment — Form name: SysSecUserAddRoles · Category: Security
  • Separation of duties config — Form name: SysSecSegrationOfDuties · Category: Security
  • Temporary roles — Form name: UserSecGovTemporaryRole, UserSecGovTemporaryRoleAddRoles, UserSecGovTemporaryRoleAssignOrg, UserSecGovTemporaryRoleUser · Category: Security
  • Privileged access control — Form name: UserSecGovPrivilegedUserManagement, UserSec · Category: Security
  • Users — Form name: SysUserInfoPage · Category: User setup
  • User groups — Form name: SysUserGroupInfo · Category: User setup
  • Microsoft Entra ID applications — Form name: SysAADClientTable · Category: Integrations
  • Feature Management — Form name: FeatureManagementWorkspace · Category: Features

What this list covers, and what it does not. These are forms — the pages a user works in. The server also exposes data tools (record create, read, update and delete through data entities) and action tools (X++ classes a developer has published; X++ is the programming language of finance and operations apps). The exclusion list does not touch either family.

Those two families are governed by the role, not by the list. Microsoft is explicit that the server arrives whole: "When you add the MCP server to your agent, you give the agent access to all the tools available on the server. This access includes data and business logic that matches the agent's security role and environment context."

Each exclusion closes a specific route. Without SysSecUserAddRoles and SysSecConfiguration, an agent has no form on which to grant itself a role or edit what a role means. Without SysUserInfoPage, it has none on which to create a second identity to act through.

Without SysAADClientTable, it cannot register a new application there to reach the ERP from somewhere less supervised. Without FeatureManagementWorkspace, it has no form on which to switch on the capability it was denied.

Separation of duties deserves its own line. Excluding that form closes the route an agent would use to quietly dismantle the control that stops one identity holding two conflicting privileges — which is the control your auditor actually cares about.

The part these exclusions do not cover, and it is the bigger risk

The exclusions stop escalation. They do nothing about over-permission.

If you assign an agent identity a broad role on day one, every capability inside that role is legitimately available to it, and no exclusion list will help. The agent does not need to escalate because it was born with too much. That is not a platform gap; it is the design decision the platform hands to you.

So the security question is never "can it escalate?" — that answer is published. The question is: what is the name of the role you gave it, and can you read what that role contains in one sitting?

Microsoft's illustration of the role filter uses a Purchasing Agent security role: an agent assigned to it "only has access to the objects assigned to the duties and privileges for that security role". That is Microsoft stating a mechanism. The preference is ours: build the role for the agent, never hand it one that was built for a person.

We build optimization apps that sit beside Dynamics rather than inside it, and the security role is the first artefact we design — the role is the app's API surface, and scoping it takes someone who reads finance and operations (F&O) security and model behaviour equally well. Dynamics stays the system of record; the app optimizes one decision — the safety-stock level, the pick path, the price — and reaches nothing else.

The second control, and it is one grid

Alongside the role sits the Allowed MCP clients form in your finance and operations environment. It is the allow-list of the Microsoft Entra application (client) IDs permitted to call the server at all.

Microsoft publishes the default client list on that page. Adding another platform means registering its application in Microsoft Entra ID and adding its client ID here with the Allowed property set to true — a step it is easy to complete three-quarters of and believe you are done.

One grid, and it is where client-side governance for agentic ERP access is configured. A security review that does not start by reading it is starting somewhere less useful.

One honest gap. Microsoft's launch blog claims each function "inherits ERP's existing controls for permissions, auditing, and security". That is a vendor blog, not the documentation, and the documentation does not carry it.

What we have not found on any Microsoft page is whether individual MCP tool calls land in the F&O database log as distinct, attributable entries — separately from the agent activity trace in Immersive Home [GA] (generally available 13 March 2026), whose View activity button Microsoft describes as opening "a holistic tracing list of all agent activities".

If your control depends on per-call audit evidence, treat that as an open question to test in a sandbox rather than an assurance to rely on. We would rather flag it than let you assume it.

The counter-argument

"A list of blocked forms is a denylist. Denylists are the weakest form of control, because the list is only as good as the imagination of whoever wrote it."

That is a fair objection and it would be decisive if the exclusion list were the only control. It is not. The primary control is the allow-list built into the role filter: the agent sees only what the role permits, and Microsoft states that the system rejects explicit calls to anything else.

The excluded forms are a second layer, closing the specific paths that would let an identity change its own allow-list.

Layered that way round, the denylist criticism loses most of its force. It would regain it if Microsoft shipped a new administration surface and forgot to exclude it — which is exactly why the role, not the exclusion list, should be the control you actually depend on.

What to do this week

  1. Open the Allowed MCP clients page in your finance and operations environment and read every row. If you cannot say why each entry is there, that is your finding.
  2. For every agent identity you have, write down the security role it holds and open that role. If reading it takes more than a few minutes, it is too broad to reason about.
  3. Ask whoever owns your audit controls whether they need per-call evidence of agent activity. If yes, test it in a sandbox before it becomes a commitment — see the open question above.

Where we would draw the line

We would not deploy an agent whose reachable surface cannot be named in a sentence. We would not reuse an existing human role because it happens to have the right access — human roles accumulate permissions for reasons nobody remembers, and inheriting that history is how an agent ends up with access no one intended.

And we would not present the excluded-forms list to a CISO as the security design. It is the answer to one question; the role is the answer to the rest.

About Cognilium Cognilium builds AI optimization apps for Microsoft Dynamics 365 — companion apps that optimize the pricing, inventory, warehouse and planning decisions your ERP manages but can't optimize. Dynamics is your system of record. Cognilium is your system of intelligence. https://cognilium.ai · https://www.linkedin.com/company/37180269/

If you are designing the security role for an ERP agent now, we will review it with you on a call — the reachable surface, the write path and the audit question. https://cognilium.ai

Sources

Sources

Share this article

The work behind this series

What Microsoft ships, what it does not, and the layer we build where a general assistant runs out.

Mudassir Marwat

Mudassir Marwat

Founder & CEO, Cognilium AI

Mudassir Marwat's argument is that ERP systems record decisions they never optimise.

Founder & CEO of Cognilium AI; 37 AI agents in production across four products; 4 production AI products built and operated; three clouds in production (AWSGCPAzure)
Agentic AIRAG → GraphRAG retrievalVoice AIMulti-Agent Orchestration
In short

Key takeaways

  • An agent cannot escalate its own privileges on the Dynamics 365 ERP MCP server, because the forms it would need are excluded by design and the exclusions are published by name.
  • Scope is re-derived on every tool call from the authenticated identity's security role, and Microsoft states that the system rejects explicit calls to objects the role cannot access.
  • The exclusion list prevents escalation. It does nothing about over-permission, which is the larger and more common risk, and that one is entirely your design decision.
  • A purpose-built role per agent beats a reused broad one on accuracy as well as on safety, because a smaller candidate space produces better tool selection.
  • The Allowed MCP clients form is where client-side governance for agentic ERP access is configured. It is one grid, and it is where a security review should start.
What goes wrong

Common mistakes to avoid

  • Answering "can it escalate?" and stopping there. The question that decides your exposure is what the role contains, not what the platform blocks.
  • Reusing a human security role for an agent identity because it already has the right access. It also has years of accumulated access nobody remembers granting.
  • Assuming per-call audit evidence exists because the security model is documented. Permissions are documented. Per-call audit attribution is not. Test it before you commit to it in a control narrative.
  • Treating the excluded-forms list as the security design rather than as one published answer inside it.

Terms in this article

Definitions in the Cognilium glossary.

Still have a question this did not answer?

The person who wrote this article answers these. Describe your setup and what you are stuck on — you will get a straight answer, including where we think the approach is wrong.

Related Articles

Continue exploring related topics and insights from our content library.

7 min
1
Mudassir Marwat
July 30, 2026

Why is my ERP agent answering with yesterday's numbers?

Because it is reading the analytics surface, where Business performance analytics pre-transforms currently run twice daily and the pipeline behind them takes hours more. The rule — if the answer changes within 12 hours, it does not belong on the analytics server, and 12 hours is the floor.

words
Read Article
8 min
2
Mudassir Marwat
July 30, 2026

Why did my ERP agent report success when the write actually failed?

Two documented failure modes make a Dynamics 365 ERP agent lie to you — a row cap on form state whose only mitigation is an instruction, and a fallback pattern where a failed write is reported using data the agent read instead. Both are in Microsoft's own starter instructions.

words
Read Article
12 min
3
Mudassir Marwat
July 30, 2026

What does a Dynamics 365 ERP agent actually cost to run?

Your ERP AI budget has three meters, not one — Copilot Credits, invoice capture transactions, and AI Builder credits whose seeded entitlement ends on 1 November 2026. What each one counts, what a credit costs, and where the caps are.

words
Read Article

Explore More Insights

Discover more expert articles on AI, engineering, and technology trends.

Personalized for You

Curated content recommendations based on your current reading and interests.

Trending
117%

In-app Copilot sidecar or a Copilot Studio MCP agent — which one, for what?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Two surfaces, two jobs — and one combination that is explicitly unsupported. Adding the ERP MCP server as a tool inside the in-app finance and operations sidecar is not supported today, which decides more architectures than it should.

Mudassir Marwat
9 min read
Copilot Boundary
Read Article
Trending
31%

Why do received goods sit uninvoiced, and what can an agent actually do about it?

High priority content
Similar reading time

Dynamics 365 already matches product receipts to invoices hourly or daily. The balance that will not clear is the residue the automation cannot resolve.

Ali Ahmed
7 min read
Procure-to-Pay Agent Operations
Read Article
Trending
117%

Do I need a Dynamics 365 licence for an AI agent's identity?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Currently not for the identity itself, when the agent is built in Copilot Studio or reaches the ERP through the Dynamics 365 ERP MCP server. A security role that grants nothing marks the identity as licence-exempt — and every human who chats with that agent still needs their own licence.

Mudassir Marwat
8 min read
Copilot Boundary
Read Article
Trending
117%

Why can't I see my ERP agent's permissions in Entra?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Microsoft's documentation says that today, custom connectors, MCP servers and REST API tools added to an agent do not add API permissions to the Entra Agent ID. Control of an MCP-based ERP agent lives in three places, and none of them is the Entra connector-permission view.

Mudassir Marwat
9 min read
Copilot Boundary
Read Article
Trending
117%

Why is my ERP agent answering with yesterday's numbers?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Because it is reading the analytics surface, where Business performance analytics pre-transforms currently run twice daily and the pipeline behind them takes hours more. The rule — if the answer changes within 12 hours, it does not belong on the analytics server, and 12 hours is the floor.

Mudassir Marwat
7 min read
Copilot Boundary
Read Article
Trending
117%

Are Dynamics 365 ERP form tools just RPA with a new name?

Same topic cluster: Copilot Boundary
Same author: Mudassir Marwat

Form tools in the Dynamics 365 ERP MCP server look like screen automation and are not. They drive the application through server APIs against its view model, with no browser, no screenshots and no pixel coordinates.

Mudassir Marwat
7 min read
Copilot Boundary
Read Article

Smart Recommendations

Our AI analyzes topic clusters, author expertise, and content relationships to surface the most relevant articles for you.

Topic Matching
Author Expertise
Content Quality
Personal Interests

Questions on this?

Talk to an engineer

Schedule a call