πŸ“Œ Author's note: This site synthesises the author's own understanding from publicly available Microsoft documentation, official Microsoft Security blog posts, RSAC 2026 announcements, and insights from Microsoft Security professionals and MVPs. It is independent and not affiliated with or endorsed by Microsoft. Microsoft updates products and documentation frequently β€” always verify current status directly with Microsoft before making architecture or purchasing decisions.
UPDATED Β· FIELD RESEARCH Β· MARCH 2026

The Identity Problem:
Classic vs Modern, OBO & Maker Credentials

The identity layer for AI agents is more fragmented and risky than Microsoft's marketing suggests. Three overlapping problems β€” Classic vs Modern agents, OBO token delegation, and Copilot Studio maker credentials β€” each undermine the agent security story independently. All three coexist in most enterprise deployments today.

⚠ MOST COPILOT STUDIO AGENTS ARE CLASSIC β€” NO ENTRA PROTECTION
⚠ MAKER CREDENTIALS WORSE THAN OBO IN COPILOT STUDIO
⚠ AGENT ID: PREVIEW Β· FRONTIER ONLY β€” UNCHANGED AT RSAC 2026
πŸ“š Field Research & Further Reading

The following resources were key sources for this section β€” combining Microsoft's official documentation with practitioner field research:

DEFENDER FOR CLOUD APPS Β· COPILOT STUDIO SECURITY
Works for Classic & Modern Agents
β†— Real-time protection during agent runtime β†— AI Agent Inventory β†— Block Images and URLs (external threat detection)
ENTRA AGENT ID Β· FIELD RESEARCH (MODERN AGENTS ONLY)
Works for Modern Agents only
β†— Entra Agent Identity demystified (basics) β†— Entra Agent ID security controls β†— Copilot Studio agent security β€” lessons from the field β†— Entra Agent ID portal explained
Classic vs Modern Agents

The Classic Agent Problem β€” The Gap Nobody Talks About

Before Entra Agent ID was introduced, Copilot Studio agents were registered as standard Service Principals (Enterprise Applications) in Entra β€” what are now called Classic Agents. Most organisations with existing Copilot Studio deployments have Classic Agents. This is the most underappreciated structural gap in Microsoft's agent security story.

⚠ Classic Agents Cannot Be Protected by Entra Security Products

Classic Agents are completely outside the Entra Agent ID security perimeter. They receive no ID Protection for Agents, no Conditional Access for Agents, no Agent lifecycle governance. The Entra security products that Microsoft markets for agent protection only work with Modern Agents. Microsoft has acknowledged a migration tool is planned β€” it does not exist yet. The only current workaround is to recreate agents from scratch as Modern Agents, which is impractical at scale.

DimensionClassic AgentModern Agent
Entra registration typeService Principal (Enterprise App)Agent Identity (Agent Blueprint)
ID Protection for Agents❌ Not supportedβœ“ Supported (preview)
Conditional Access for Agents❌ Not supportedβœ“ Supported (preview)
Agent lifecycle governance❌ Not supportedβœ“ Sponsor model available
Owner modelPower Virtual Agent Service + creator as Owner β€” this introduces credential abuse risk (owner can add client secrets)Sponsor model β€” creator in Notes field, not Owner role
Name sync with Copilot StudioName stays as original Agent # β€” not updated on renameSame bug β€” name not synced on rename
Migration pathRecreate from scratch OR await Microsoft migration toolN/A β€” is the target state
Where most production agents are todayMost existing Copilot Studio agentsOnly newly created agents with setting enabled
⚠ The Owner vs Sponsor Distinction Matters

For Classic Agents, the user who created the agent is added as an Owner of the Enterprise Application. An Owner can add client secrets, bypassing Conditional Access and MFA, abuse federated credentials for cross-tenant access, and is a high-privilege technical role. For Modern Agents, the creator should be listed as a Sponsor in the Notes field β€” a business accountability role without these technical powers. Using the Owner option on Classic Agents introduces real credential abuse risk. Field research by Derk van der Woude confirms this is the default behaviour in production environments.

Maker Credentials

Maker Credentials β€” The Copilot Studio–Specific Risk

Beyond OBO, Copilot Studio introduces a structurally distinct and in many ways more dangerous authentication pattern: maker credentials. When a Copilot Studio agent is connected to tools (SharePoint, Outlook, Teams, etc.), it authenticates to those services as the person who built the agent β€” not the person using it.

OBO Flow
Standard agents: Agent inherits token from the invoking user. If User A asks the agent to send an email, the email is sent with User A's permissions. Audit log shows User A.
Maker Creds
Copilot Studio agents: Agent authenticates as the maker β€” the person who built it. If User A (developer, admin) built the agent and User B (intern) interacts with it, the agent acts with User A's admin permissions. Audit log may show the service, not User A.
⚠ Blast Radius
Combined with org-wide sharing (one toggle): A developer with admin rights builds an agent, enables org-wide sharing, and sets no authentication. Every employee in the organisation can now interact with the agent using the developer's admin-level permissions. This is the single most dangerous default configuration pattern in Copilot Studio deployments.

Comparing the Three Authentication Patterns

PatternWho Is AuthenticatedAudit TrailBlast RadiusMitigation
OBO (standard)Invoking userShows user UPN (not agent)User's own permissionsUser PAM hygiene
Maker credentials (Copilot Studio)Agent builderMay show service, not makerMaker's full permissions Γ— all users of agentEnforce end-user auth; restrict sharing scope
No authenticationAnyone in TeamsNoneMaker's permissions Γ— entire org, no login requiredPower Platform admin enforcement; KQL detection
OBO Token Flow

OAuth 2.0 On-Behalf-Of β€” The Standard Agent Pattern

For agents outside Copilot Studio (Azure AI Foundry, custom agents), OBO remains the primary token mechanism. The agent receives a token derived from the invoking user's access token β€” it acts on behalf of the user, not as an independent identity.

Step 1
User authenticates. Entra ID issues access token AT₁ scoped to the user's permissions.
Step 2
Agent host presents AT₁ with an OBO grant. Entra issues ATβ‚‚ for the downstream resource β€” still representing the user's identity.
Step 3
Agent uses ATβ‚‚ to access resources. The resource sees the original user's identity β€” not the agent's identity.
Step 4 (A2A)
Multi-agent chains multiply delegation hops: AT₁ β†’ ATβ‚‚ β†’ AT₃. Every downstream service sees a derivative of the original user identity. Each hop risks scope escalation.
⚠ Result
Audit logs attribute actions to the user, not the agent. Agent scope cannot be narrowed below the user's own permissions. If the user is overprivileged, so is every agent they invoke.
The Name Sync Bug

Agent Name Sync β€” An Operational Gap

Both Classic and Modern agents share a documented bug: when an agent is renamed in Copilot Studio after initial creation, the name stored in Entra Agent ID is not updated. The Entra portal continues to show the original name assigned at creation β€” typically Agent # (a number).

⚠ Impact on Security Operations

Entra security products β€” ID Protection for Agents, Conditional Access, and the Agent ID portal β€” all reference the original names. In any enterprise with more than a handful of agents, this makes per-agent policy management in Entra nearly unworkable. You cannot create a meaningful Conditional Access policy for Agent #47. Microsoft has confirmed this inconsistency and states work is in progress β€” no fix timeline confirmed. Field workaround: use the Agent ID object-ID (not name) as the primary key for agent identification, cross-referenced via script against the Power Platform Admin Environment URL.

Entra Agent ID

Entra Agent ID β€” Status & What It Delivers for Modern Agents

⚠ Still Preview β€” Not Announced as GA at RSAC 2026 β€” Modern Agents Only

Entra Agent ID remains in limited preview for frontier/large enterprise programs. Even when it reaches GA, it will only apply to Modern Agents β€” Classic Agents (the majority of existing Copilot Studio deployments) require migration first.

Purpose-scoped Agent Identity
Each Modern Agent registered as a distinct non-human principal β€” separate from the user who created or invoked it. Enables per-agent audit trails and policy scoping. Does not apply to Classic Agents.
Modern Agents only Β· Not yet GA
β†— Learn More
Agent Identity Blueprint
Parent template for creating Agent Identities (1:N). Acts as a governance container for IT management. Blueprint-level permissions are inherited by all Agent Identities. Max 250 Agent Identities per Blueprint.
Modern Agents only Β· Not yet GA
β†— Learn More
Sponsor Requirement
Every Modern Agent should have a named Sponsor (business accountability role) and Owner (IT management role). These are distinct from the Owner role on Classic Agents β€” the Sponsor has no ability to add credentials or bypass CA.
Not yet GA⚠ Classic agents use Owner = risk
β†— Learn More
Per-agent Conditional Access
Once a Modern Agent has its own identity, CA policies can target it specifically. In practice, the name sync bug means policy management requires using object-IDs not names. The CA Optimization Agent adds recommendations but true per-agent scoping still requires Agent ID GA + Modern Agent migration.
Dependent on Agent ID GA + Modern migration
β†— Learn More
Security Product Coverage

What Security Products Apply to Classic vs Modern Agents

This is the single most important table for architects deploying Copilot Studio agents. The gap between Classic and Modern is not marginal β€” it determines whether any Entra security product applies at all.

Security ProductClassic AgentsModern AgentsNotes
Defender for Cloud Apps β€” AI Agent Inventoryβœ“ Supportedβœ“ SupportedWorks for both. Requires Defender + Power Platform admin collaboration.
Defender for Cloud Apps β€” Real-time Protectionβœ“ Supportedβœ“ SupportedWorks for both. Inspects tool invocations before execution.
Block Images and URLsβœ“ Supportedβœ“ SupportedWorks for both. External threat detection must be configured in Copilot Studio.
AIAgentsInfo KQL (Advanced Hunting)βœ“ Supportedβœ“ SupportedWorks for both once AI Agent Inventory is enabled.
Entra Agent ID β€” Identity Registration❌ Not supportedβœ“ Supported (preview)Classic agents registered as Service Principals, not Agent Identities.
ID Protection for Agents❌ Not supportedβœ“ Supported (preview)Requires Entra Agent ID. Classic agents have no risk signal in ID Protection.
Conditional Access for Agents❌ Not supportedβœ“ Supported (preview)Requires Entra Agent ID. Name sync bug makes policy management difficult at scale.
Access Reviews for Agents❌ Not supportedβœ“ Supported (preview)Requires Entra Agent ID.
Lifecycle Workflows (sponsor model)❌ Not supportedβœ“ Supported (preview)Classic agents use Owner role (risky). Modern agents use Sponsor model.
Agent Blueprint & Permissions governance❌ Not supportedβœ“ Supported (preview)Blueprint-level Graph API permission governance only available for Modern agents.
⚠ Bottom Line for Architects

Defender for Cloud Apps security controls (RT protection, AI Agent Inventory, Block Images/URLs) provide a meaningful security baseline for all agents β€” Classic and Modern. Entra Agent ID security products (ID Protection, Conditional Access, Access Reviews, Lifecycle Workflows) only apply to Modern Agents. Most existing Copilot Studio production deployments are Classic. Migrating to Modern Agents is the prerequisite for the full Entra security stack β€” but the migration tool doesn't exist yet.

The Five Authentication Patterns

How Copilot Studio Agents Actually Authenticate

Field research by Derk van der Woude (March 2026) identifies four distinct authentication configurations for Copilot Studio agents β€” each with a very different risk profile. Knowing which pattern your agents use is the first step to securing them.

PatternHow it authenticatesRiskDetectable via KQL
β‘  End User Credentials (OBO)
Auth with Microsoft β†’ End user credentials
User authenticates once; agent exchanges token OBO the user. Everything runs in the user's own permission context. Sign-in logs available in Entra for the user. βœ“ Low risk UserAuthenticationType == "Integrated"
β‘‘ Maker-Provided Credentials
Auth with Microsoft β†’ Maker-provided credentials
Agent authenticates at design time using the maker's identity, then reuses that connection for every user at runtime. Silent authentication β€” stored credentials. No per-user sign-in logs for the agent. ⚠️ High risk
Data oversharing, silent auth
AgentToolsDetails.mode == "Maker"
See KQL below
β‘’ App Registration β€” Delegated Permissions
Authenticate manually β†’ Entra ID V2 (delegated)
Uses an Entra App Registration but still acts OBO the signed-in user. Effective permissions = intersection of user rights AND app granted scopes. Sign-in logs available in Entra Agent ID portal. βœ“ Low risk
Verify scopes are minimal
HTTP Request to Graph + delegated token
β‘£ App Registration β€” Application Permissions
Authenticate manually β†’ Entra ID V2 (application)
Agent authenticates as the application itself β€” no user context, no OBO. Access determined by application permissions (e.g. Mail.Read.All, User.Read.All). Can access data across the entire tenant. Requires admin consent. ⚠️ Very high risk
Tenant-wide access, admin consent
HTTP Request to Graph + client credentials flow
β‘€ Agent's User Account
Agent provisioned with a full human user account
Agent is assigned a real user account with persistent identity β€” mailbox, calendar, Teams membership, SharePoint access, ability to join meetings and send communications. Agent acts as a human user, not on behalf of one. Can participate in Teams channels, access documents, attend meetings under false pretences if compromised. ⚠️ Very high risk
Full human identity β€” hardest to detect as non-human
Entra Identity Governance lifecycle management; Access Reviews; assign a human sponsor accountable for the agent account
⚠️ Critical Correction β€” Conditional Access for Agents does NOT apply to Copilot Studio

CA for Agents and ID Protection for Agents are triggered only during modern Agent ID authentication (OAuth 2.0) β€” used by Security Copilot and AI Foundry agents. Copilot Studio agents authenticate via OBO (pattern β‘ ), maker credentials (pattern β‘‘), or service principal (patterns β‘’ and β‘£) β€” none of which trigger CA for Agents. For Copilot Studio, apply Conditional Access policies targeting the invoking user or the workload identity (service principal) instead. Use ID Protection for Workload Identities as the equivalent control for App Registration patterns.

Advanced Detection KQL

Detecting Maker Credentials with Precision

The following KQL (field-validated by Derk van der Woude) detects maker credentials at the connector level β€” checking both AgentToolsDetails and AgentTopicsDetails for where maker mode is actually configured. This is more precise than checking only the agent-level auth type.

let base = AIAgentsInfo
| summarize arg_max(Timestamp, *) by AIAgentId
| where AgentStatus == "Published";
let directActions = base
| mv-expand detail = AgentToolsDetails
| where detail.action.connectionProperties.mode == "Maker"
| extend ActionType = "FromTools", Action = detail.action
| project-reorder AgentCreationTime, AIAgentId, AIAgentName,
    UserAuthenticationType, CreatorAccountUpn;
let topicActions = base
| mv-expand topic = AgentTopicsDetails
| extend topicActionsArray = topic.beginDialog.actions
| mv-expand Action = topicActionsArray
| where Action.connectionProperties.mode == "Maker"
| extend ActionType = "FromTopic"
| project-reorder AgentCreationTime, AIAgentId, AIAgentName,
    AgentStatus, CreatorAccountUpn, OwnerAccountUpns, Action;
directActions
| union topicActions
| sort by AIAgentId, Timestamp desc

Detecting App Registration Agents Calling Microsoft Graph

Finds agents using HTTP Request actions to graph.microsoft.com or management.azure.com β€” indicating App Registration authentication (pattern β‘’ or β‘£). Delegated = low risk. Application permissions = very high risk.

AIAgentsInfo
| summarize arg_max(Timestamp, *) by AIAgentId
| where AgentStatus != "Deleted"
| mvexpand Topic = AgentTopicsDetails
| where Topic has "HttpRequestAction"
| extend TopicActions = Topic.beginDialog.actions
| mvexpand action = TopicActions
| where action['$kind'] == "HttpRequestAction"
| extend Url = tostring(action.url.literalValue)
| extend ParsedUrl = parse_url(Url)
| extend Host = tostring(ParsedUrl["Host"])
| where Host has_any("graph.microsoft.com", "management.azure.com")
| project-reorder AgentCreationTime, AIAgentId, AIAgentName,
    ParsedUrl, Url, Host, AgentStatus,
    CreatorAccountUpn, OwnerAccountUpns

Source: Derk van der Woude β€” Your Copilot Studio agent is acting as someone, do you know who? (March 2026)

Agent Sprawl & Lifecycle Risk

The Agent Sprawl Problem

Microsoft formally defines agent sprawl as the uncontrolled expansion of agents across an organisation without adequate visibility, management, or lifecycle controls. It emerges when business units create agents without formal IT oversight (shadow AI), when agents created for temporary purposes remain in production indefinitely, and when agent permissions exceed actual requirements and are never reviewed.

⚠️ Agent Sprawl Consequences

Increased security risk from over-privileged agents with unclear ownership. Compliance challenges when auditors expect governance over AI systems. Incident response difficulty when organisations can't quickly identify or isolate compromised agents. The Agent's User Account pattern (β‘€) is especially prone to sprawl β€” user accounts created for agents are indistinguishable from human accounts in most tooling.

Agent-to-Agent (A2A) Protocol

Beyond MCP β€” The A2A Standard

Microsoft's Entra Agent ID platform now supports agent-to-agent (A2A) discovery and authorisation alongside MCP. A2A is an emerging standard protocol for authenticated communication between agents β€” enabling orchestration agents to delegate tasks to sub-agents with proper identity verification. Without A2A controls, an adversary can inject a malicious agent into an orchestration chain or intercept inter-agent communications.

RiskDescriptionControl
Agent-to-agent propagationCompromised orchestration agent delegates to sub-agents, spreading compromise across the agent chainEntra Agent ID A2A authentication; audit trails of inter-agent interactions
Malicious agent injectionAdversary introduces a rogue agent into an orchestration workflow that impersonates a legitimate sub-agentA2A identity verification; Entra Agent ID β€” agent-to-agent discovery based on verified identities
Unauthenticated delegationOrchestrator delegates tasks to agents without verifying their identity β€” attacker intercepts or substitutesRequire authenticated A2A channels; log all inter-agent calls in Entra audit logs

Source: Microsoft Entra security for AI overview (April 2026)

What to Do Today

Practical Controls β€” Ranked by Availability

ControlWhat It DoesStatusLimitation
Enforce end-user authentication per agentRequire users to authenticate with their own credentials β€” prevents maker credential blast radiusAvailable now (Power Platform admin)Must be set per agent; not default
Restrict org-wide sharingUse Managed Environments to set numerical sharing limits or restrict to security groupsAvailable now (Managed Environments)Requires Power Platform admin
Detect no-auth agents via KQLAIAgentsInfo | where UserAuthenticationType == "None"Available (requires AI Agent Inventory enabled)AI Agent Inventory requires Defender + Power Platform admin collaboration
Detect ownerless agents via KQLAIAgentsInfo | where isempty(OwnerAccountUpns)Available (requires AI Agent Inventory enabled)Same setup requirement
Migrate Classic β†’ Modern AgentsEnables Entra security product coverage; requires recreating agents from scratchManual only β€” migration tool not yet availableImpractical at scale; migration tool planned
User PAM hygieneLeast-privileged makers β†’ least-privileged agent credentialsAvailable via PAM toolingIndirect; does not change the structural authentication problem
Entra Workload IdentityApp-level service principal scoping for non-Copilot-Studio agentsGANot purpose-scoped per agent-instance
Defender for Cloud Apps real-time protectionBlocks tool invocations during suspicious prompt activity (XPIA, UPIA) for Copilot Studio agentsPreview Β· requires both Defender + Power Platform admin setupComplex 3-step setup; if no decision in 1 second, tool executes anyway