๐Ÿ“Œ 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.
PRACTICAL PLAYBOOKS ยท MARCH 2026

From architecture
to action

Step-by-step security checklists for the most common AI security tasks. Each playbook distils field experience into the minimum viable set of controls โ€” what to do, in what order, and what to watch for.

4 PLAYBOOKS
Based on field research
โš  Verify steps with Microsoft docs โ€” UIs change
PLAYBOOK 01
Audit Your Copilot Studio Estate
~30 min ยท Copilot Admin ยท No extra licensing
PLAYBOOK 02
Secure a New Copilot Studio Agent
~45 min ยท Power Platform Maker + Admin ยท Managed Environments required
PLAYBOOK 03
Set Up the Security Dashboard for AI
~2 hrs ยท Defender Admin + Power Platform Admin ยท Agent 365 or E7 required
PLAYBOOK 04
Respond to a Suspected Agent Compromise
~1 hr ยท Security Engineer ยท Sentinel + Defender required
PLAYBOOK 01
Audit Your Copilot Studio Estate in 30 Minutes
Find no-auth agents, overly shared agents, ownerless agents, and maker credential risks โ€” using only KQL in Microsoft Defender Advanced Hunting. No extra licensing required beyond Defender.
โœ“ Works for Classic & Modern Agents โœ“ No extra licensing โš  Requires AI Agent Inventory enabled
P
Enable AI Agent Inventory
In Microsoft Defender portal โ†’ Settings โ†’ Cloud Apps โ†’ Copilot Studio AI Agents โ†’ enable. Then in Power Platform Admin Center โ†’ Security โ†’ Threat Detection โ†’ enable Microsoft Defender โ€” Copilot Studio AI Agents. This is a dual-admin setup requiring both Defender admin and Power Platform admin.
โš  Takes up to 2 hours for initial data population in the AIAgentsInfo table.
1
Run this KQL in Defender Advanced Hunting
Finds published agents with no authentication configured โ€” anyone with the link can chat with them.
AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | where AgentStatus == "Published" | where UserAuthenticationType == "None" | project AIAgentName, CreatorAccountUpn, OwnerAccountUpns, AgentCreationTime, UserAuthenticationType
โš  Any result here is a critical finding. A no-auth published agent is accessible to anyone with the link โ€” including external users if the agent is published to a website.
Also run this change-detection query โ€” use as a Sentinel Analytics Rule to alert the moment any agent is switched to no-auth:
// Alert when UserAuthenticationType changes to "None" AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | where AgentStatus == "Published" | order by AIAgentName | extend PreviousAuthType = prev(UserAuthenticationType, 1) | where UserAuthenticationType == "None" and PreviousAuthType != "None" | project AIAgentName, PreviousAuthType, UserAuthenticationType, ReportId = tostring(AIAgentId), Timestamp
๐Ÿ’ก Save this as a Sentinel Analytics Rule to get an incident the moment a published agent is downgraded to no-auth โ€” even if the change was made by someone who isn't the agent owner.
2
Find agents with no accountable owner
Agents without an owner lack accountability โ€” no one is responsible for reviewing or decommissioning them.
AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | where AgentStatus == "Published" | where isempty(OwnerAccountUpns) | project AIAgentName, CreatorAccountUpn, AgentCreationTime, AgentStatus
3
Identify agents shared with the entire organisation
Org-wide sharing means every employee can interact with the agent. When combined with maker credentials this is critical โ€” the maker's privileges are extended to everyone.
AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | where AgentStatus == "Published" | where SharedWithOrganization == true | project AIAgentName, CreatorAccountUpn, OwnerAccountUpns, UserAuthenticationType
โš  Cross-reference this list with Step 4 (maker credentials). Any agent that is both org-wide shared AND uses maker credentials is your highest blast-radius risk.
4
Find agents using maker credentials (Classic agents with connected services)
Classic Copilot Studio agents authenticate connected services (SharePoint, Outlook etc) using the builder's credentials โ€” not the end user's. Review the creator of each published agent to assess blast radius.
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
๐Ÿ’ก This query checks both AgentToolsDetails and AgentTopicsDetails โ€” more precise than checking only UserAuthenticationType. Prioritise agents created by high-privilege users (Global Admins, SharePoint Admins).
4b
Detect agents using Entra App Registrations to call Microsoft Graph
Finds agents with HTTP Request actions calling graph.microsoft.com or management.azure.com. Delegated permissions = low risk. Application permissions (no user context, tenant-wide access, admin consent required) = very high risk. Check each result to determine which pattern is in use.
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
โš  Application permissions agents have no user context and can access data across the entire tenant. If you find any, verify admin consent was intentional and review the granted scopes immediately.
5
Cross-check inventory counts
Compare agent counts across three portals โ€” they will likely differ. Use the AIAgentsInfo table as your most reliable source.
// Total agents in AIAgentsInfo AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | summarize Total = count(), Published = countif(AgentStatus == "Published"), Classic = countif(AgentType == "Classic"), Modern = countif(AgentType == "Modern")
โš  Known issue: Agent 365 portal, Security Dashboard for AI, and Entra Agent ID portal show different counts. Microsoft has confirmed this is in progress. Trust the KQL table for detailed audit work.
AUDIT CHECKLIST
AI Agent Inventory enabled and data populatedBoth Defender admin and Power Platform admin steps completed
No-auth agents identified and remediatedEach should have Entra ID auth or be unpublished
Ownerless agents reviewed and assignedEvery published agent should have an accountable owner
Org-wide shared agents reviewedConfirm each has legitimate business justification
High-privilege maker credentials identifiedAgents built by admins with org-wide sharing = critical priority
Findings documented for remediation tracking
Change-detection KQL saved as Sentinel Analytics RuleAlerts on any agent being switched to no-auth, even by non-owners
๐Ÿ’ก Community Queries tip: In Defender Advanced Hunting โ†’ Community queries, there is a dedicated AI Agents section containing multiple queries created by the Microsoft Product Group. Check this section for the latest detection queries beyond what's listed here.
PLAYBOOK 02
Secure a New Copilot Studio Agent Before Publishing
Minimum security configuration for any new Copilot Studio agent โ€” before it goes live. Covers authentication, sharing controls, MCP tool risk, and what to tell the maker.
โš  Classic Agents: limited controls โœ“ Modern Agents: full Entra stack Managed Environments required
1
Enable Managed Environments in Power Platform
Power Platform Admin Center โ†’ Environments โ†’ select environment โ†’ Enable Managed Environments. This is the prerequisite for all governance controls including sharing limits and DLP policies.
2
Set sharing limits before agents are built
In Power Platform Admin Center โ†’ Managed Environments โ†’ Sharing limits โ†’ configure who makers can share agents with. Setting this before building prevents org-wide sharing by default.
๐Ÿ’ก Recommend: restrict to specific security groups by default. Require explicit approval for org-wide sharing.
3
Brief the maker on maker credentials risk
When a maker adds a connector (SharePoint, Outlook, Teams) to a Classic agent, that connector authenticates as the maker โ€” not the end user. Every user who interacts with the agent effectively acts with the maker's privileges. High-privilege makers (Global Admins, SharePoint Admins) should not build agents that access corporate data.
โš  This is a build-time decision that cannot be fully mitigated after deployment. The right person needs to build the agent.
4
Configure authentication โ€” never leave as "No authentication"
In Copilot Studio โ†’ Settings โ†’ Security โ†’ Authentication โ†’ select "Authenticate with Microsoft" for internal agents. Enable "Require users to sign in". Classic agents: this is the primary identity control available. Modern agents: this plus Entra Agent ID controls.
โš  Copilot Studio shows a warning at publish time if authentication is set to None โ€” but makers can bypass it. Administrators can enforce this at the environment level via data policies.
5
Review MCP tools carefully before adding
Every MCP tool added to a Classic agent uses maker credentials. Each tool expands the blast radius. For each tool ask: (a) does this tool need to authenticate as the maker? (b) could a malicious prompt abuse this tool to exfiltrate data? (c) is there a safer connector alternative?
๐Ÿ’ก Use built-in connectors instead of HTTP request nodes or direct MCP connections where possible โ€” connectors have OAuth governance via Defender for Cloud Apps.
6
Enable Block Images and URLs (external threat detection)
In Copilot Studio โ†’ Settings โ†’ Security โ†’ enable external threat detection and configure Microsoft Defender as the provider. This blocks image-based and URL-based prompt injection before the agent processes the content.
7
Scope sharing to the minimum required audience
In Copilot Studio โ†’ Share โ†’ add only the specific security groups who need access. Avoid "Everyone in [Org]" unless there is a documented business justification and security review.
8
Assign an owner and document the agent
Every published agent should have a named owner accountable for reviewing it quarterly. Document: what connectors it uses, what data it can access, who can interact with it, and who built it.
โœ“
If Modern Agent: configure Entra Agent ID controls
Enable Modern Agent mode in Power Platform Admin Center โ†’ Copilot โ†’ Settings โ†’ Copilot Studio. Once enabled, the agent gets an Entra Agent Identity and you can apply Conditional Access policies, Access Reviews, and ID Protection via Entra. Note: Entra Agent ID is still in preview as of March 2026.
PRE-PUBLISH CHECKLIST
Managed Environments enabledRequired for all governance controls
Authentication set to "Authenticate with Microsoft" + Require sign-inNever publish with No authentication
Maker is not a high-privilege account (Global Admin, SharePoint Admin etc)Maker credentials = agent credentials for Classic agents
All MCP tools and connectors reviewed and justified
Block Images and URLs enabled via Defender external threat detection
Sharing scoped to minimum required audience
Named owner assigned and agent documented
Agent visible in AI Agent Inventory after publishingVerify it appears in Defender Advanced Hunting AIAgentsInfo table
PLAYBOOK 03
Set Up the Security Dashboard for AI
Configure the unified AI security posture view in Microsoft Defender. Requires collaboration between Defender admin and Power Platform admin. Allow up to 2 hours for data population.
โš  Requires Agent 365 or M365 E7 โš  Dual-admin setup โœ“ Works for Classic & Modern Agents
1
Enable preview features in Defender XDR
Microsoft Defender portal โ†’ Settings โ†’ Microsoft Defender XDR โ†’ Preview features โ†’ turn on. The AI Agent Inventory and Security Dashboard for AI features require preview mode enabled.
2
Connect the Microsoft 365 app connector
Defender portal โ†’ Settings โ†’ Cloud Apps โ†’ Connected Apps โ†’ Microsoft 365 โ†’ connect. This is required for Copilot agent telemetry to flow into Defender.
3
Enable Copilot Studio AI Agents
Defender portal โ†’ Settings โ†’ Cloud Apps โ†’ Copilot Studio AI Agents โ†’ enable. Copy the URL shown โ€” you will need to share this with your Power Platform admin to complete the next step.
๐Ÿ’ก Save this URL carefully โ€” it encodes your tenant ID and is required for the Power Platform side of setup.
4
Enable external threat detection in Power Platform
Power Platform Admin Center โ†’ Security โ†’ Threat Detection โ†’ Additional threat detection โ†’ enable "Allow Copilot Studio to share data with a threat detection partner" โ†’ paste the URL from Step 3 โ†’ enter the Entra App ID.
โš  The App ID must match exactly. Mismatch causes a silent failure โ€” status will show "pending" indefinitely.
5
Verify connection status
Back in Defender portal โ†’ Settings โ†’ Cloud Apps โ†’ Copilot Studio AI Agents โ†’ check that the Power Platform action status shows "Connected". If it shows "Pending" after 30 minutes, re-check the App ID and URL entered in Step 4.
6
Confirm AIAgentsInfo table is populating
Run this query in Defender Advanced Hunting. If it returns rows, setup is complete. If it returns nothing after 2 hours, check the connection status in Step 5.
AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | summarize count() by AgentStatus
7
Open the Security Dashboard for AI
Defender portal โ†’ left nav โ†’ expand Microsoft Sentinel โ†’ AI โ†’ Security Dashboard for AI. You should see agent inventory, posture findings, and risk signals from Entra, Defender, and Purview.
โš  The dashboard shows different agent counts than Entra Agent ID portal or Agent 365. This is a known inconsistency. Use Advanced Hunting for precise counts.
8
Enable RT protection for Copilot Studio agents
This step enables the webhook-based runtime inspection of tool invocations. Defender evaluates each tool call before execution and can block suspicious actions. Defender portal โ†’ Settings โ†’ Cloud Apps โ†’ Copilot Studio AI Agents โ†’ enable Real-time protection.
โš  1-second timeout applies. If Defender doesn't respond within 1 second, the tool invocation is allowed through. This is a deliberate tradeoff for reliability but means high-speed tool calls may not always be evaluated.
SETUP CHECKLIST
Preview features enabled in Defender XDR
Microsoft 365 app connector connected
Copilot Studio AI Agents enabled โ€” URL copied
Power Platform external threat detection configured with correct App ID and URL
Connection status shows "Connected" in Defender portal
AIAgentsInfo table returning data in Advanced Hunting
Security Dashboard for AI accessible in Defender portal
Real-time protection enabled
PLAYBOOK 04
Respond to a Suspected Agent Compromise
Triage and contain a suspected agent abuse incident โ€” prompt injection, data exfiltration via agent, or suspicious agent behaviour. Requires Sentinel and Defender for Cloud Apps.
โš  Time-sensitive โ€” act within 1 hour of detection Sentinel + Defender required
1
Check Defender portal for RT protection alerts
Defender portal โ†’ Incidents & Alerts โ†’ filter by "Copilot Studio". RT protection generates SOC-ready alerts that explain what was stopped, why it was considered risky, and which agent, user, and tool were involved.
2
Query for suspicious agent activity in Advanced Hunting
Run these queries to surface anomalous agent behaviour in the last 24 hours.
// Agents with sudden auth type changes AIAgentsInfo | summarize arg_max(Timestamp, *) by AIAgentId | where AgentStatus == "Published" | extend PreviousAuthType = prev(UserAuthenticationType, 1) | where UserAuthenticationType == "None" and PreviousAuthType != "None" | project AIAgentName, PreviousAuthType, UserAuthenticationType, Timestamp // High-volume tool invocations in last 24h // (use CopilotActivity table if connector enabled) CopilotActivity | where TimeGenerated > ago(24h) | where Operation contains "Tool" | summarize Count = count() by AgentName, UserId | where Count > 50 | order by Count desc
3
Unpublish the agent immediately
In Copilot Studio โ†’ open the suspect agent โ†’ Settings โ†’ Channels โ†’ unpublish all channels. This immediately stops all user interactions with the agent while investigation continues.
4
Revoke the maker's sessions if maker credentials are involved
If the agent uses Classic maker credentials and you suspect the maker account is compromised: Entra portal โ†’ Users โ†’ select maker โ†’ Revoke all sessions. Also check for new credentials on the associated Enterprise Application in Entra.
โš  For Classic agents, the Enterprise Application owner is "Power Virtual Agent Service" โ€” check if the maker's account has been added as an owner (a known risk pattern that enables credential abuse and bypasses CA/MFA).
5
Review Copilot Data Connector logs in Sentinel
If the Copilot Data Connector is enabled, query the CopilotActivity table in Sentinel for the time window of the suspected incident. Look for CopilotAgentManagement events (config changes), unusual CopilotInteraction volumes, and CopilotPlugin lifecycle events.
CopilotActivity | where TimeGenerated between (ago(48h) .. now()) | where AgentName == "<>" | project TimeGenerated, UserId, Operation, AgentName, PromptContent, ResponseContent | order by TimeGenerated desc
6
Use Security Copilot or Security Analyst Agent for triage
In Defender portal, open the Security Copilot pane and ask it to summarise the incident, identify the affected users, and recommend next steps. The Security Analyst Agent (Preview, March 2026) can autonomously triage the incident against your Sentinel data.
7
Remediate and rebuild with security controls
Before republishing: apply all controls from Playbook 02. If the agent is Classic, evaluate whether it should be migrated to Modern (requires enabling Modern Agent mode in Power Platform). Update your DLP policies if data exfiltration occurred via prompts.
8
Document and update your agent security policy
Record the incident in your risk register. Update your agent security checklist with any gaps this incident revealed. Consider running Playbook 01 across your entire estate as a follow-up audit.
INCIDENT RESPONSE CHECKLIST
Defender RT protection alerts reviewed
Advanced Hunting queries run for anomalous activity
Suspect agent unpublished from all channels
Maker sessions revoked if account compromised
Enterprise Application checked for rogue credentials or owners
CopilotActivity logs reviewed in Sentinel
Incident documented in risk register
Agent rebuilt with Playbook 02 controls before republishing