← Back to SOC feed Coverage →

Copilot Studio AI Agents - Organization or Multi-tenant Shared

kql MEDIUM Azure-Sentinel
backdoorhuntingmicrosoftofficial
This rule was pulled from an open-source repository and enriched with AI. Validate in a test environment before deploying to production.
View original rule at Azure-Sentinel →
Retrieved: 2026-04-21T09:00:00Z · Confidence: medium

Hunt Hypothesis

Adversaries may leverage shared or multi-tenant Copilot Studio AI agents to gain unauthorized access to sensitive data across an organization. SOC teams should proactively hunt for this behavior in Azure Sentinel to identify potential data exfiltration or lateral movement risks associated with misconfigured AI agent access.

KQL Query

AIAgentsInfo
| where RegistrySource != "A365"
| summarize arg_max(Timestamp, *) by AIAgentId
| where AgentStatus != "Deleted"
| where AccessControlPolicy in ("Any", "Any (multi-tenant)")
| project-reorder AgentCreationTime, AIAgentId, AIAgentName, AgentStatus, CreatorAccountUpn, OwnerAccountUpns

Analytic Rule Definition

id: 4a8b2c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
name: Copilot Studio AI Agents - Organization or Multi-tenant Shared
description: |
  This query identifies Copilot Studio AI agents that are shared broadly-either with the entire organization or configured for multi-tenant access.
  Such configurations significantly increase the risk of unauthorized access by unintended users, which could lead to data exposure or misuse of agent capabilities. 
  Multi-tenant sharing is especially sensitive because it extends access beyond organizational boundaries.
  Recommended Action: Review these agents to confirm whether broad sharing is necessary for the business scenario. 
  If not, restrict access to specific users or groups and apply least-privilege principles. For multi-tenant configurations, ensure proper governance and compliance checks are in place.
requiredDataConnectors: []
tactics: []
relevantTechniques: []
query: |
  AIAgentsInfo
  | where RegistrySource != "A365"
  | summarize arg_max(Timestamp, *) by AIAgentId
  | where AgentStatus != "Deleted"
  | where AccessControlPolicy in ("Any", "Any (multi-tenant)")
  | project-reorder AgentCreationTime, AIAgentId, AIAgentName, AgentStatus, CreatorAccountUpn, OwnerAccountUpns
entityMappings:
  - entityType: Account
    fieldMappings:
      - identifier: FullName
        columnName: CreatorAccountUpn
  - entityType: Host
    fieldMappings:
      - identifier: HostName
        columnName: AIAgentName
version: 1.0.0

References

False Positive Guidance

Original source: https://github.com/Azure/Azure-Sentinel/blob/main/Hunting Queries/AI Agents/Copilot Studio Connector/AIAgentsOrganizationWideShared.yaml