What Is Copilot Studio, and Who Is It For?
▼What Is Copilot Studio?
Microsoft Copilot Studio is Microsoft’s low-code platform for building custom copilots and AI agents on top of the Power Platform. It is where you design conversational and autonomous agents, from simple FAQ bots to agents that schedule appointments, process tickets, or edit documents on their own.
Technically, Studio sits in the Power Platform stack next to Power Apps and Power Automate. It draws on 1,400+ connectors, Dataverse, Microsoft 365 Graph and, since 2025, MCP servers. Studio is Microsoft’s direct counterpart to LangDock Workflows or Zapier with LLMs, only deeply integrated into the Microsoft tenant.
Delivery happens in Teams, Microsoft 365 Copilot Chat, on the web, in Power Apps, in your own channels via the Direct Line API, or as a voice agent in Dynamics 365 Contact Center.
Licensing Paths (As of August 2026)
In September 2025, Microsoft replaced the old “per-message” model with a credit model:
| Licensing Path | Price | When to Use? |
|---|---|---|
| Microsoft 365 Copilot License | $30/user/month | Users can use existing Copilot Studio agents in M365 Copilot Chat; building is done via Agent Builder (limited). B2E use of Studio agents is included in the M365 Copilot USL (fair use). |
| Copilot Studio Standalone (Capacity Pack) | $200/month for 25,000 credits ($0.008/credit) | When you build and deploy agents and want predictable credit volumes (~25% cheaper than PAYG). |
| Copilot Studio Pay-as-you-go (Azure) | $0.01/credit, pooled tenant-wide | Variable workloads, no capacity commitment. |
| Pre-Purchase Plan (P3), since 2026 | One-year prepayment, up to 20% discount | Predictable annual volumes. Buys a pool of Copilot Credits Commit Units (CCCU) that can be used across Copilot Studio, Dynamics 365 first-party agents, and Copilot Chat. |
| Trial | 30 days, free | For PoCs and training. |
Credits are pooled tenant-wide, not per user. A simple scripted FAQ bot costs ~1 credit per conversation ($0.01); an agent with Generative Orchestration, tenant grounding, and deep reasoning can cost $0.25 to $2.00+ per conversation.
For Power Automate flows as tools: classic cloud flows still need Power Automate licenses; Agent Flows (flows built in Studio) are billed entirely through Copilot credits, so no separate PA user plan is needed.
Since April 2026, Microsoft has offered an Agent Usage Estimator (microsoft.github.io/copilot-studio-estimator) for credit forecasts by agent type, traffic, orchestration, knowledge, and tools. Use it before every pilot.
Platforms / Channels
- Web Studio (
copilotstudio.microsoft.com) for authoring - Microsoft Teams (personal chat; with the Toolkit also channels & group chats)
- Microsoft 365 Copilot Chat (M365 Copilot app)
- Web Chat / Custom Web (React Web Chat or WebChat JS)
- Direct Line API for your own apps & channels
- SharePoint (embedded on pages)
- Power Apps (as an agent component)
- Power Pages (public sites)
- Voice Channel in Dynamics 365 Contact Center (IVR, Real-time Voice Agents)
- Facebook, Slack, and more via the Azure Bot Service adapter
Feature Timeline 2025/2026
| Date | Release |
|---|---|
| March 2025 | GA of autonomous agents (event triggers instead of user initiation only) |
| March 2025 | GA of Agent Flows (AI-enhanced, Power Automate-like flows, billed in credits) |
| May/June 2025 | MCP (Model Context Protocol) Preview; SSE deprecated in August 2025 (Streamable HTTP is the standard) |
| September 2025 | Switch from “messages” to credits as the billing unit; Computer-Using Agents (CUA) Preview for the Windows desktop |
| October 2025 | MCP servers GA as a tool source; GPT-4o retired, GPT-4.1 is the new default; Agent Evaluations with test sets as Preview; ROI analytics; Copilot Studio Kit (Power CAT tooling) |
| November 2025 | GPT-5 Chat GA for US/EU; Microsoft Entra Agent ID Preview (identity governance per agent); Multi-Agent Orchestration (connect agents to each other); Work IQ for SharePoint knowledge; SP metadata filters; Request for Information in Agent Flows; Tool Groups Preview; HITL approval gates per tool step |
| December 2025 | Side-by-side comparison of multiple agent versions in evaluations |
| January 2026 | VS Code Extension GA for pro-code authoring; Cloud PC Pooling for Computer Use; eval activity maps |
| February 2026 | Claude Sonnet 4.5 for Computer Use (Anthropic via external models); xAI Grok 4.1 Fast as an experimental model; content moderation per prompt |
| March 2026 | Agent Evaluations GA with multi-turn tests & Custom Graders; ChatGPT-5 GA globally; Claude Sonnet 4.5/4.6 + Opus 4.6 GA (cross-geo); Bing Custom Search as a knowledge source; Work IQ Tools Preview; post-call action topics for voice; Prompt Assistant; agent node in flows |
| April 2026 | Agent-to-Agent (A2A) GA; Real-time Voice Agents Preview (D365 Contact Center, North America only); voice hold/resume; Agent Usage Estimator; custom metrics in Analytics; GPT-5.5 Reasoning Deep (Experimental); Microsoft Agent 365 announced as the central governance/control plane |
| May 2026 | Microsoft Agent 365 GA (May 1, commercial segment, per-user license); Computer Use GA (web & desktop automation, US only); Prompt node & Microsoft 365 Copilot node in the new workflow editor; Asynchronous Responses in Agent Flows (beyond the 2-minute limit); Agent Inventory schema (org-wide agent audit via Admin Center / API / Azure Resource Graph); consent-based recording for voice; file groups with instructions; Code Interpreter on SharePoint sources; sentiment analysis in Analytics; SharePoint lists as a knowledge source (Preview); Conditional Access for Entra Agent IDs |
| June 2026 | New Copilot Studio experience (June 9) in worldwide Public Preview: 9 tabs down to 4, Enhanced Orchestration Runtime, Skills (reusable instruction building blocks, exportable as Markdown), Memory (persistent user context across sessions, stored per user), and Microsoft IQ (connection to organizational data: mail, calendar, files, Teams messages, people), coexists with Classic without a migration path; Additional Threat Protection for agents GA; unified view for errors, warnings & governance notices (GA); full evaluation of multi-turn conversations (GA); real-time evaluation results (GA, May 31); new models GPT-5.5 Chat and Claude Opus 4.8 in the early release cycle (Preview); Mistral Medium 3.5 as an experimental model; agents optimized for M365 Copilot users (Preview); Frontier Tuning (June 2, Build 2026) announced as a private preview via forward deployed engineers, not yet available to makers in Copilot Studio; Claude Sonnet 4.5 deprecated (auto-migration to Sonnet 4.6, deferral possible until June 30, 2026); Condition Groups GA (June 17, several conditions bundled in one node, table & graph view); Windows 365 for Agents MCP server GA (June 25, full Cloud PC control: desktop, Edge browser automation, UI Automation) |
| July / August 2026 | Microsoft documents the harness model (July 28) for the first time as a separate architecture layer: GitHub Copilot harness, Standard harness, and Copilot Chat harness, each with its own feature set and its own billing; the GitHub Copilot harness uses usage-based billing in Copilot credits from the first build step (not only from publish); Memory clarified as a production-ready preview (deletion after 28 days of inactivity, user-owned memory portal, disabled in group chats and Teams channels); Foundry IQ as a tool for connecting ready-made Azure AI Foundry knowledge bases (Preview, one connection per agent); Teams Phone Agent as a voice channel (Preview, tenant enablement via Microsoft Support required); the Copilot Studio Kit is now called Copilot Agent Kit and gains Agent Debugger, Agent Library, Agent Insights Hub, Power Shield, and Agent Review Pipeline; new architecture guidance on rate provisioning (throughput planning separate from license planning) |
| End of June 2026 | Platform builds 2026.6.1 to 6.3: Dataverse Search active by default; content safety grading (Hate, Self-harm, Sexual, Violence, with configurable thresholds) in maker evaluations; prompt text override via environment variable (change the agent prompt without redeploying); streaming responses with resume after connection loss (Last-Event-Id header replays missed events); consent cards per agent for AI prompts (independent of connector/flow consent); new Power Platform API endpoints for creating, updating, listing, and deleting agents and for retrieving agent components; GPT-5 Mini Fine-tuned enabled by default and selectable in the UI; Agent Inventory by default in GCC and high sovereign clouds; breaking change: skill agents now block unsupported reference file types |
| July 2026 | Agent 365 license requirement for agent security (July 1, see Chapter 7): Agent Discovery & Posture, Threat Detection, and Advanced Hunting investigation for Copilot Studio agents now require a Microsoft Agent 365 license; the Advanced Hunting table AIAgentsInfo is replaced by AgentsInfo; Release Planner retired (July 2): feature information for Copilot Studio, Sales, Finance, and Service Agent now runs exclusively through the Microsoft 365 roadmap, no longer through the Power Platform Release Planner; Agent Store submission from Agent Builder GA (July 15, “Built by your org” area, admin approval in the M365 Admin Center); MCP agents in Word, Excel, PowerPoint, and Outlook GA; Federated Copilot Connectors manageable in the M365 Admin Center (user-level auth at runtime, no org indexing); nested permissions for Confluence and ServiceNow connectors; Entra Agent ID becomes mandatory: every new agent automatically receives an agent identity, the environment opt-out is gone, existing agents stay on app registrations for now; MCP certification as a preview via the Partner Center offer type Apps and Agents for M365 and Copilot (July 17, old path only until the end of July); environment-level telemetry to Azure Application Insights as a preview (July 28, managed environments only, OpenTelemetry spans in dependencies); Real-time Agents on digital messaging channels (Preview) with the new model GPT-5-Chat (Preview), which allows in-region processing in the EU, plus monitoring via Application Insights; Workflow and MCP server as tool types for agents on the GitHub Copilot harness (Preview); file attachments and agent-generated files in conversations (Preview, GitHub Copilot harness) |
| August 2026 | No new feature announcements in the What’s New list, but several documentation clarifications with project relevance: the governance overview (August 4) lists Microsoft Entra network controls via Agent 365 as generally available and names two documented Customer Lockbox gaps (Copilot Studio security audit logging and Agent 365 governance events); the billing page (August 3) sharpens Agent Flow enforcement and monthly consumption limits per agent; the quotas page (August 4) adds page-level PDF citations for the path “Upload files → SharePoint” as well as reliable row limits for SharePoint lists; the Purview audit documentation (August 28) clarifies that capturing administrative activities cannot be switched off and that the audit solution contains no conversation text, only the transcript thread ID; the harness documentation (August 27) confirms the three-harness model unchanged |
| September 2026 | GitHub Copilot harness GA (September 2): the runtime is out of preview and, according to Microsoft, the recommended basis for multi-step agents and workflows; the same blog post calls workflows and MCP servers as tools generally available, while the corresponding how-to pages still carry the preview banner; Memory, Connected Agents, Work IQ, Foundry IQ, attachments and generated files, environment-level telemetry, and MCP certification remain in preview; expanded Agent Evaluations (RM569607) as GA with reasoning traces, cited knowledge sources, run comparison, larger datasets, configurable test case generation, and test data from knowledge sources; Copilot Tuning launches as a Public Preview in Copilot Studio on a skill-based architecture after moving out of the M365 Agent Builder (MC1454393, tuning stop on August 20), GA announced for December 2026; new guidance articles on the model lifecycle (seven-step cycle, Inventory API query by model, use category pitfall) and on context distribution in the Standard harness (root-cause model for duplicate and missing answers, Adaptive Card buttons never reach the context); model roster unchanged compared to August; app building in Copilot Studio (September 10) announced as a Public Preview and rolled out “over the next week”: full-stack apps on open standards from a natural-language description, with Git-based version control, deployment stages and version isolation, Entra identity and connector policies by default, enterprise data connected via connectors and Work IQ, inventory in the Microsoft 365 Admin Center, and user access via managedapps.cloud.microsoft.com; Copilot Cowork already offers the same capability as an App skill, but only through the Microsoft Frontier program; the Power Apps vibe experience is superseded as a result (documentation notice of September 8 points to Cowork and Copilot Studio); the product overview (September 9) reorganizes the building blocks into Agents, Workflows, and Agent Flows and introduces Build with natural language as a preview: describe a business goal, Studio picks the combination of assets and generates several of them in one session; in the second half of the month the model roster turns over (September 18/19): GPT-5.5 Chat replaces GPT-4.1 as the default, Claude Opus 4.7 arrives as a GA deep model, and the GitHub Copilot harness gets its own availability page with its own roster (GPT-6 Astra, Claude Sonnet 5, Claude Fable 5 and 5.1, Claude Opus 4.8 and Opus 5, GPT-5.6 Reasoning as experimental) – two separate model lists instead of one; the computer use models (September 18) are set out as their own list (Claude Opus 4.6 as a premium model at 15 credits per step); at Foundry IQ the preview label disappears without announcement (September 16); environment-level telemetry (September 17) now covers both harnesses and emits root invocations as dependencies instead of requests; three roadmap entries on cost transparency (September 15, RM571194 to RM571196) bring credit consumption into the preview chat, evaluations, and the Monitor tab; the authentication documentation (September 17) documents for the first time that agents using Microsoft authentication cannot be embedded into Power BI reports via iframe; at month-end (Sept 25) the Copilot Managed Runtime launches in public preview: the Microsoft-operated runtime that hosts apps from Copilot Studio, Copilot Cowork and the CLI, with separate billing for building (per environment in the Power Platform admin center) and running (per user in the Microsoft 365 admin center); new guidance articles on comparing harnesses and on governing Copilot Credit consumption for the GitHub Copilot harness (Sept 17), and developer and trial environments have been on usage-based billing since Sept 1 |
When Is Copilot Studio Worth It?
Worth it when:
- You sit deep in M365 / Teams / SharePoint / Dataverse and want to “inherit” Azure AD login + permissions.
- You need autonomous agents on SharePoint/Outlook/Forms events (e.g., “auto-triage new tickets”).
- You want a conversational UI in Teams (instead of a CLI / custom web app).
- You need compliance/audit via Microsoft Purview (e.g., in an AZAV, GoBD, or GDPR context).
- You need voice IVR in a Dynamics 365 Contact Center.
- You want to reuse existing Power Automate flows as tools.
NOT worth it as a replacement for:
- Pure API orchestration without conversation → Power Automate (cloud flow) or Logic Apps is enough there.
- Maximum LLM control over prompts, models, and providers → you are better off in Azure AI Foundry, LangDock, or directly with OpenAI/Anthropic.
- Self-hosted / on-prem LLMs → Studio is cloud-only.
- A full-fledged customer service platform → Studio is only the bot frontend; human handoff, ticketing & routing are handled by Dynamics 365 Customer Service (or a third-party system via Generic Handoff).
- Pixel-perfect web UIs → Adaptive Cards are the limit; anything beyond that is Power Apps / Custom Web.
Architecture & Building Blocks
▼The Concept Model
A Studio agent is the top-level unit. It consists of persona + instructions + topics + tools + knowledge + channels, and it lives in a Power Platform environment with its own DLP and audit configuration.
┌──────────────────────────────────────┐
│ AGENT (= "Copilot") │
│ │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ INSTRUCTIONS│ │ ORCHESTRATION│ │
│ │ (System │ │ (Classic vs │ │
│ │ Prompt) │ │ Generative) │ │
│ └─────────────┘ └──────────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────┐ │
│ │ TOPICS │ │ TOOLS / │ │KNOW- │ │
│ │ (Dialog) │ │ ACTIONS │ │LEDGE │ │
│ └──────────┘ └──────────┘ └──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Nodes: Connector Web/SP/ │
│ - Message Action Dataverse/│
│ - Question PA-Flow Files/ │
│ - Condition Agent-Flow Graph/ │
│ - Variable Prompt MCP/ │
│ - Action REST/HTTP Azure AI │
│ - Adaptive MCP-Tool Search │
│ Card │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ TRIGGERS │ │ CHANNELS │ │
│ │ user / event │ │ Teams / Web /│ │
│ │ /schedule │ │ Voice / ... │ │
│ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────┘
│
▼
┌────────────────────┐
│ POWER PLATFORM ENV │
│ (DLP, Solutions, │
│ Audit via Purview)│
└────────────────────┘
What You Build in Copilot Studio
Microsoft restructured the product overview in September 2026 and has since explicitly named several building blocks that you use individually or combine into an end-to-end solution: a workflow may, for example, call an agent for one step. For project practice this is more than cosmetics: anyone who still translates “Copilot Studio” as “chatbot builder” in a customer workshop has been underselling the platform since this restructuring.
| Building block | What it is | Status (as of September 14, 2026) |
|---|---|---|
| Agent | AI assistant that holds conversations and completes tasks: instructions, Knowledge Sources, tools. Some agents get their own account and participate proactively in shared business processes. | GA |
| Workflow | Automation from the drag-and-drop designer in which every step may reason and act on its own: agents, tools, and logic in a single flow. With built-in testing and human-in-the-loop controls. | GA announced, documentation still preview |
| Agent Flow | The established flow format in Studio: authoring similar to Power Automate, but native. Runs on its own or attaches to an agent as a tool and returns the result to it. | GA |
| App (new) | Complete application, described and generated in natural language. See below. | Public Preview since September 2026 |
Apps as a New Building Block (Public Preview Since September 2026)
On September 10, 2026, Microsoft announced that Copilot Studio can now build not only agents and workflows but also apps. You describe the business outcome, the user group, the data, and the desired actions in natural language, iterate in conversation, see a preview, and only then publish. If you want to dig deeper, you can inspect the generated code.
Technically, according to Microsoft, these are full-stack apps on open standards, not canvas apps in the classic Power Apps sense. They support Git-based version control, deployment stages, and version isolation, so teams can keep building the next version without disturbing the one that is running. Identity via Microsoft Entra as well as organizational and connector policies apply by default. Enterprise data is connected through connectors and Work IQ.
For the IT side: published apps appear as inventory with operational controls in the Microsoft 365 Admin Center; users find approved, enterprise-ready apps at managedapps.cloud.microsoft.com.
In Copilot Studio, app building rolls out as a Public Preview “over the next week” according to the announcement, so from mid-September 2026 and not everywhere at once. In Copilot Cowork the capability already exists as an App skill, but only through the Microsoft Frontier program, which has to be applied for separately. Billing follows the usage-based billing model in Copilot Credits: since August 27, 2026, the billing documentation explicitly counts “agents, workflows, and apps” as in scope. That means building an app already costs credits, not just running it (see Chapter 10).
For the Cowork path, Microsoft documents sharing via a link, just as you know it from Word or PowerPoint: anyone who has the link and is allowed to use Microsoft 365 Copilot can open and use the app, including all the data it contains. For an app with connected business data, that is a very different matter than for a document. So bring apps under the same sharing governance as agents instead of letting them run as “just a prototype”.
Copilot Managed Runtime: where the apps run (public preview since September 25, 2026)
Since September 25, 2026, the infrastructure underneath the apps has a name: Copilot Managed Runtime (formerly "Microsoft-managed host" in the Licensing Guide). It launched in public preview and hosts apps from Copilot Studio, Copilot Cowork and the CLI; with the Copilot Managed Runtime SDK, apps from third-party tools such as GitHub Copilot or Claude Code can run inside your own tenant as well. Every app gets Entra authentication, access to more than 1,500 connectors and a Git repository, and automatically inherits Conditional Access, DLP, advanced connector policies and sharing limits. Data access always uses the identity of the signed-in user.
For admins: app creation in Copilot Studio is on by default. It is controlled in the Microsoft 365 admin center under Apps > Overview > Set up app creation spaces (or via PowerShell through the tenant setting enableManagedAppsMcsPreview), and it can be scoped to selected makers with a security group. The CLI path is off by default, and Cowork depends on Frontier onboarding. Global admins and Power Platform admins can manage these settings.
Building an app in Copilot Studio runs through the existing Copilot Studio billing per environment in the Power Platform admin center. Running it, however, is billed per user through spending policies in the Microsoft 365 admin center (Copilot > Cost management); Microsoft explicitly states that the environment model of agent runtime does not apply to apps. Exception: users with Power Apps Premium don't consume credits when running an app, as long as the app doesn't use separately billed services such as Work IQ APIs. Users without coverage first see a warning in the preview and are blocked after 20 app operations or five minutes of use. Plan runtime coverage for future users before the rollout, not after.
Key Terms at a Glance
| Term | What it is |
|---|---|
| Agent (formerly Copilot) | The top-level unit: persona + instructions + topics + tools + knowledge + channels. Since 2025, Microsoft calls almost everything an “agent” instead of a “copilot”. |
| Topic | A dialog segment with trigger phrases (Classic) or a description (Generative). Contains nodes. Comparable to an “intent flow” unit in older bot frameworks. |
| Node | A single step within a topic: Send Message, Ask Question, Condition, Set Variable, Call an Action, Adaptive Card, Redirect, End Conversation. |
| Action / Tool | Something the agent can “do”: Connector Action, Power Automate flow, Agent Flow, Prompt (AI Builder), HTTP request, Bot Framework skill, MCP tool, Computer Use, Other Agent (A2A/Foundry/Fabric/M365 Agent SDK). |
| Knowledge Source | What the agent “knows”: Files (upload), SharePoint, websites (public/Bing), Dataverse, Microsoft Graph (with M365 Copilot), Azure AI Search, external federated knowledge. |
| Variable | Data carrier between nodes/topics; scopes: Topic / Global / System / Environment Variable. |
| Trigger | How a topic starts: user phrase, event (autonomous trigger), Adaptive Card submit, conversation start, inactivity, escalate, error. |
| Channel | Where the agent is live: Teams, M365 Copilot, web, custom (Direct Line), voice, Slack, FB, SharePoint, Power Pages. |
| Environment | Power Platform environment (Dev/Test/Prod) with its own Dataverse database, its own connectors, its own DLP policies. |
| Solution | Power Platform container for agents + flows + variables; the basis for ALM (moving managed solutions between environments). |
| App (Preview since September 2026) | Full-stack application on open standards generated from natural language, with Git version control, deployment stages, and version isolation. Published apps appear in the M365 Admin Center inventory and for users at managedapps.cloud.microsoft.com. |
Triggers & Entry Points
▼A Studio agent can get going in two fundamentally different ways:
- (a) A user asks a question or sends a message, and the agent matches a topic.
- (b) An event happens somewhere, and the agent starts autonomously (no user in the loop).
User-Initiated Triggers
| Trigger | Where Does It Run? | Use Case | Limits / Gotchas |
|---|---|---|---|
| Phrase Trigger (Classic) | Topic match via trigger phrases | Classic FAQ / Q&A bot | 5 to 10 good phrases are enough; more just confuses the NLU. |
| Description Trigger (Generative) | Generative Orchestration uses the topic description instead of phrases | More complex agents with many topics | The description has to be precise: the agent picks the topic via the LLM. |
| Adaptive Card Submit | When a user presses an Adaptive Card button | Form-centric dialogs | Keep the card schema clean, otherwise you get silent failures. |
| Inactivity | When the user does not respond for X seconds | “Are you still there?” reminder | Default 5 min; configurable. |
| Conversation Start | Welcome topic | Greeting + intent collection | Should be lean, otherwise it gets annoying. |
| Escalate | User says “get me a human, please” or similar | Hand-off to a human | Triggers Generic Handoff or D365 Omnichannel. |
| End of Conversation | Conversation end topic | CSAT survey, logging | Optional but useful for telemetry. |
| Error | System error inside the topic | Graceful fallback | Custom error topic instead of the standard response. |
Autonomous / Event Triggers (GA Since 2025)
Prerequisite: Generative Orchestration must be enabled on the agent. Otherwise the UI does not show the event triggers at all.
| Trigger Connector | Example | Latency / Limits |
|---|---|---|
| Outlook: new email | “New email with subject XYZ arrives → triage it” | Near real time; maker auth required. |
| SharePoint: new file / item update | “New contract in SP library → to the legal reviewer” | Polling-based (roughly a few minutes). |
| Dataverse: row created/updated | “New lead in CRM → enriched + qualified” | Real time via Dataverse events. |
| Microsoft Forms: new submission | “New helpdesk request → bot routes it” | Real time. |
| Teams: channel message / @mention | Reaction to an @mention | No polling, push. |
| Schedule (Recurrence) | “Every Monday at 08:00, weekly briefing” | Cron-like. |
| Custom Connector / HTTP | Webhook from a third-party system | The maker has to handle auth themselves. |
| MCP Server Resource Update | External system pushes an update | New since 2026. |
What event triggers cost, require, and quietly bring along
Microsoft expanded the trigger documentation considerably in September 2026. Four points from it decide more projects than the question of which connector to pick:
- Every payload is a message. Microsoft counts every trigger payload as a message sent to the agent – even when nobody is talking to it. The documented example leaves no room for doubt: a recurrence trigger set to every 10 minutes sends a payload every 10 minutes and consumes accordingly. An autonomous agent that idly “just checks whether anything is there” quickly becomes the most expensive agent in the tenant.
- Fewer than 15 actions or topics in a row. Microsoft explicitly recommends calling fewer than 15 actions or topics consecutively: complex agents that run many steps as a single sequence struggle to run reliably. If your blueprint exceeds that, break it into agent flows or child agents rather than tuning the instructions.
- Triggers always run on maker credentials. Event triggers can only use the agent author’s credentials, and for an autonomous run every authenticated action has to go through them too. Users of a published agent can therefore reach data and systems opened with the maker’s permissions. Copilot Studio shows a warning about this before publishing – it is not a formality, it is the core question of the sign-off.
- Without solution-aware cloud flow sharing there are no triggers at all. Makers can only add event triggers in environments where this setting is turned on. If no trigger can be added and the data policies do allow triggers, that is almost always the reason. Independently of that, admins can block event triggers entirely for an environment via data policy.
Building Blocks in Detail: Topics, Tools, Knowledge, Variables, Auth
▼Topics
A topic is the smallest meaningful “conversation loop.” It has (1) a trigger, (2) a sequence of nodes, and (3) optional input/output variables.
Topic types:
- Custom Topics: built by you.
- System Topics: Microsoft defaults (Greeting, Goodbye, Escalate, Confused, Reset Conversation, On Error, Multiple Topics Matched, ...).
- Generative Answer Topic: the fallback that searches the knowledge sources when nothing else matches.
Nodes Inside a Topic
| Node | What it does | Example | Gotcha |
|---|---|---|---|
| Send a Message | The bot says something | “Hi, I’m the HR bot.” | Embed variables as {x}; no Markdown HTML. |
| Ask a Question | Ask for user input and store it in a variable | “What is your name?” → Topic.Name | Choose the entity type (string, number, date, email, multiple choice, etc.). |
| Condition | If/else branching | If isMember = true → ... | Only one variable per condition branch natively; otherwise use a Power Fx expression. |
| Condition Group (GA since June 2026) | Several conditions bundled in ONE node (for message, question, or prompt nodes) instead of many individual condition nodes; reduces branching and makes topic flows easier to read | “Add node → Advanced → Add a condition group” | Two views: Table view (drag-and-drop reorder) and Graph view (classic branching). Switching does not change behavior. Existing condition nodes and voice flows remain unchanged. |
| Set Variable | Set a variable (literal, another variable, Power Fx) | Set Topic.Total = price * 1.19 | Power Fx uses US format (comma as parameter separator, period as decimal point). |
| Call an Action | Call an action / tool | “Start the Power Automate flow ‘ApproveExpense’” | Map inputs/outputs; otherwise the action runs but the result vanishes. |
| Adaptive Card | Send a structured card | Form with buttons | Maintain the card JSON in the card editor; the submit comes back as a variable. |
| Question with Adaptive Card | Card + wait for submit | “Pick a date” | Validation does not happen automatically; build it yourself. |
| Redirect to Topic | Jump to another topic | “Order Status → Returns” | Pass input variables along, otherwise the data is gone. |
| Transfer Conversation | Hand-off to a human / another bot | To a D365 queue | Needs an engagement hub in the channel. |
| End Conversation / End Current Topic | Close | “Bye” | “End Topic” jumps back, “End Conversation” ends everything. |
| HTTP Request | Direct REST call | API without a connector | You carry auth & throttling yourself. |
| Search / Generative Answers | Search knowledge | “What does the onboarding documentation say?” | Configure the sources first. |
| Parse Value | Parse JSON / string | Break down an API response | Power Fx or schema definition. |
Actions / Tools
An action is a “tool” the agent calls. Since 2025, Microsoft primarily calls these Tools.
| Tool type | When to use it? |
|---|---|
| Connector Action | Standard operation from one of the 1,400+ Power Platform connectors (e.g. “SP: Create Item”, “Outlook: Send Mail”). Inputs/outputs are defined by the connector. |
| Cloud Flow (Power Automate) | Existing Power Automate flow, embedded in Studio as a tool. Still needs a Power Automate license. |
| Agent Flow | Studio-native flow (similar to Power Automate, but credit-billed); includes HITL actions such as “Request for Information”. |
| Prompt (AI Builder) | LLM prompt action: a targeted sub-prompt for one specific task (“Classify this email into categories”). |
| REST / HTTP | Direct API call without a connector, for internal APIs. |
| MCP Tool | Tool from a registered MCP server. Synchronized automatically (name, inputs, outputs). |
| Bot Framework Skill | Classic Bot Framework Composer skill from the old PVA universe. |
| Computer Use (GA since May 2026, US only) | The agent controls mouse & keyboard virtually via a Computer-Using Agent (CUA) on web and desktop apps; Computer use maintains its own model list, independent of the orchestration roster (documentation as of September 18, 2026): OpenAI CUA (Standard, GA, 5 credits/step), Claude Sonnet 4.5 (Standard, GA, 5 credits/step – as an orchestration model Sonnet 4.5 has long been retired, but for computer use the documentation still lists it as generally available), Claude Sonnet 4.6 (Standard, Experimental, 5 credits/step), and Claude Opus 4.6 (Premium, Experimental, 15 credits/step). The Anthropic models require admin approval for external models. Since January 2026 with Cloud PC Pooling, built-in credentials (Power Platform internal or Azure Key Vault), access control lists, and session replay audit; since May 2026 also as reusable standalone tools (Preview). |
| Windows 365 for Agents MCP server (GA since June 2026) | Microsoft-hosted MCP server (mcp_W365ComputerUse) that gives the agent full operational control over a Windows 365 Cloud PC: desktop control (mouse, keyboard, screenshots, OCR), browser automation via Microsoft Edge (DOM clicks, forms, accessibility snapshots), and semantic UI inspection via Windows UI Automation; plus sandboxed execution of shell and Python code (allow list, 30-second timeout). Difference from Computer Use: Computer Use is the CUA reasoning layer, the Windows 365 server provides the deterministic tools on a real Cloud PC. Runs on the Standard harness (standard billing). Session idle eviction after 30 minutes without a request. |
| Other Agents (Child / Connected / A2A / Foundry / Fabric / M365 Agent SDK) | Since November 2025 / GA April 2026: plug in sub-agents (Child) or connect to standalone agents (Connected), also via the A2A protocol, with Microsoft Foundry agents (Preview), Fabric Data Agents (Preview), or M365 Agent SDK agents (Preview). Rule of thumb: split at 30 to 40 tools/topics. |
| Tool Groups (Preview) | Add curated sets of Outlook/SharePoint connector tools in one step; reduces setup errors. |
| Workflow (Preview since July 2026, GitHub Copilot harness only) | Multi-step, deterministic process from the flow designer of the new experience that the agent calls when needed: approvals, data transformations, business logic. Created directly from Build → Tools → Add → Workflow; the flow needs the nodes When an agent calls the flow and Respond to the agent and must be published. After that it is also available to other agents on the Workflows page. |
| MCP server (Preview since July 2026, GitHub Copilot harness only) | An entire MCP server as a tool in the new experience: Build → Tools → Add → Model Context Protocol (MCP), then name, description, HTTPS server URL, and auth method. Copilot Studio negotiates the handshake and lists the server’s tools. Important: name and description are what the agent sees; a tool without a clear description is called unreliably. If the URL, auth, or tool list changes, you have to re-read the entry. |
An agent may connect several MCP servers, but the number of server instances running concurrently in one conversation is capped. If you attach more than the cap allows and the agent wants to use them all in the same turn, the surplus servers and their tools are silently skipped: there is no error message, the answer simply gets worse. Microsoft does not publish the exact number. Keep the list deliberately short and remove unused servers. Every MCP server also counts against the agent’s overall tool limit.
Knowledge Sources
Knowledge is “what the agent knows,” not “what the agent does.”
| Source | What it is | Limits |
|---|---|---|
| Uploaded Files | Upload PDF, DOCX, PPTX, TXT, XLSX; also File Groups (several files as one source, GA August 2025); since May 2026 with instructions per group that steer the agent’s answers | 500 files per source under the web app limit, 512 MB per file; Dataverse storage as the pool. |
| Public Website / URL | Bing-based crawl | Generative mode: 25 websites; Classic mode: 4 URLs. Content is not “live.” |
| Bing Custom Search (March 2026) | Curated web search via a Custom Configuration ID; Grounding with Bing Custom Search. | Classic mode: max 2 Configuration IDs. In Generative Orchestration only via the Classic data option in the Generative Answers node. Overrides all public websites. |
| SharePoint | SharePoint sites or specific document libraries; since November 2025 with metadata filters (filename, owner, modified); since May 2026 Code Interpreter on SharePoint sources in conversations | With M365 Copilot + Work IQ: up to 200 MB/file (PDF/DOCX/PPTX up to 512 MB); without M365 Copilot: only 7 MB/file. Generative mode: 25 URLs. |
| SharePoint lists (Preview, May 2026) | SharePoint lists directly as a knowledge source without a custom connector | Max 15 lists in total, up to 35,000 rows per list and 120,000 rows across all lists; max 15 selectable per add session. Queries return only the first 2,048 rows. ≤ 12 lookup columns in the default view. List views cannot be selected, document libraries are not supported as lists, and there are no glossaries or synonyms. The Attachments column is indexed without an error message but does not return answers from the attachments. |
| OneDrive (Unstructured Data) | OneDrive files/folders | 1,000 files / 50 folders / 10 subfolder levels; 512 MB per file; 4 to 6 h sync. |
| Dataverse | Tables (with row-level security) | Max 2 sources per agent, 15 tables each. Inherits the calling user’s permissions. Synonyms & glossaries supported. |
| Microsoft Graph (Tenant Graph Grounding) | M365 content via Semantic Index / Work IQ | Needs an M365 Copilot license; 10 credits/message for non-M365-Copilot users. |
| Azure AI Search | Your own vector index | Full control, but self-service. |
| Foundry IQ (preview label dropped in September 2026) | Connection to a ready-made knowledge base in Azure AI Foundry that bundles one or more enterprise sources together with retrieval and relevance settings into a reusable asset. Not added as a knowledge source but via Tools in the Build tab. Four auth variants: API Key, Client Certificate, Service Principal, Entra ID Integrated. Status change: the documentation page carried the prerelease banner until August 2026; in the version dated September 16, 2026 it has disappeared, along with the preview suffix in the title. Microsoft announced the change nowhere. | Only on the GitHub Copilot harness. At most one Foundry IQ connection per agent. Only knowledge bases you have access to in Azure AI Foundry appear. Tuning happens in Foundry, not in Copilot Studio. |
| Federated Knowledge (Connector) | Salesforce, Confluence, ServiceNow, Zendesk, and many more | No limit on article size/count; 4 to 6 h sync. |
| MCP Resources | “File-like” data from an MCP server (API responses, file contents) | GA since October 2025. Tools & resources are synchronized dynamically; Generative Orchestration is mandatory. |
Important to know: Files carrying the Sensitivity Labels confidential or highly confidential are shown as “ready” but do not return answers. Sensitivity labels (MIP) have been visible in connectors, Test Chat, Teams, and M365 Copilot since July 2025.
Page-Level Citations for PDFs
When the agent answers from a PDF, the citation normally points to the whole document, which helps nobody with a 200-page works agreement. For one path it gets more precise: PDFs added via Upload files → SharePoint (that is, stored and indexed in Dataverse) deliver page-level citations. A click on the reference opens the PDF in a new tab directly on the cited page, and the user can verify the answer without searching the document.
The limits, because they regularly cause confusion in projects: it applies only to PDFs, all other file types fall back to document-level citations. It applies only to this one integration path: the fully integrated SharePoint knowledge source and individually uploaded files still cite at document level. And the file must reach the indexing threshold of roughly 4 KB; smaller PDFs fall back as well. If page-level traceability is a compliance argument in your project, the choice of integration path decides whether you get it.
Attachments and Generated Files (Preview Since July 2026)
Since July 2026, users can attach files to a message, and the agent can generate files itself during the conversation. Both apply to agents on the GitHub Copilot harness and run on Copilot Credits, including when testing in the Preview tab.
The most important point first, because it is regularly confused in projects: an attachment is not a knowledge source.
| Attachment | Knowledge Source | |
|---|---|---|
| Who provides it? | The end user, per message | The maker, at design time |
| Scope | One conversation | Every conversation with the agent |
| Typical case | “Summarize this contract”, “What is on this screenshot?” | Policies, product catalog, help articles |
What can be attached: images (.png, .jpg, .gif, .webp; the agent uses vision-capable models), PDFs (text is extracted), text documents (.txt, .csv, .html, .md), and URLs. For a URL, the agent downloads the file for that turn; the download must finish within 30 seconds, and the URL must be publicly reachable. Links behind a login or firewall do not work. If an attachment fails, the agent skips it and continues processing the rest of the message; the message still goes through.
Generated files are not something you configure; they appear when the task calls for a file: a report, a spreadsheet, a chart, a code snippet, or the revised version of an attached file. The agent attaches a Created File card with file name, preview, and download action below the answer. Users can refer to it in a follow-up turn (“make the chart taller”), the agent reads the file back and generates a new version.
| Limit | Value |
|---|---|
| Attachment size per file | 16 MiB |
| Size per generated file | 10 MB; if it grows larger, it does not appear in the answer, the turn continues, and the agent usually explains this itself. Remedy: split the output (e.g. one chapter per file). |
| URL download timeout | 30 seconds |
| Retention (attachments and generated files) | 28 days after the last activity in the conversation, then deleted and no longer referenceable by the agent |
So attachments do not live for one turn only: within the retention period, the agent can go back to a file sent earlier (“compare this with the file from before”). Both functions are available wherever the agent runs (Preview tab, Microsoft Teams, Microsoft 365 Copilot, web chat), as long as the channel supports attachments.
Variables / Slots
- Topic Variable: visible only within that topic. The default for
User.Name-style variables. - Global Variable: available everywhere in the agent, persistent across topic switches.
- System Variable: managed by Studio (e.g.
System.User.Id,System.Conversation.Id,System.LastMessage,System.Activity.Channel). - Environment Variable: solution level, ALM-friendly, e.g. API URLs per environment.
Slot Filling: When the user answers the agent’s question “proactively” (e.g. the user says right away “Book Frankfurt → Berlin on Friday” and the agent extracts city, city, and date in one go), Microsoft calls that slot filling. Entities (prebuilt or custom) are the prerequisite.
Authentication Building Blocks
- No Authentication: anonymous; only makes sense for public web chat / Power Pages.
- Authenticate manually with Microsoft Entra ID v2: the standard for enterprise. Prefer federated credentials (no stored client secret).
- Authenticate with Microsoft (SSO): the user token is passed through; tools/knowledge run in the user’s context (permissions are inherited!).
- Microsoft Entra External ID: for B2C scenarios (customer login).
- Generic OAuth 2.0: for your own identity providers.
Data Flow & Variables
▼How Does Data Flow?
Data is passed between nodes & topics via variables. Power Fx is the formula language.
Ask Question ─► Topic.Name (string)
│
▼
Set Variable ─► Global.Customer = Topic.Name
│
▼
Condition ─► If Global.Customer in adminList
│
▼
Call Action ─► Input: Global.Customer, Output: Action.Result
│
▼
Send Message ─► "Status: {Action.Result.status}"
Variable Scopes
| Scope | Lifetime | Use Case |
|---|---|---|
| Topic | only within the topic | Temp data, user input before processing |
| Global | entire conversation | User profile, cart, long-lived context values |
| System | managed by Studio | System.User.DisplayName, System.Conversation.Id, System.Activity.Channel |
| Environment | tenant-/environment-wide | API endpoint URL per environment (Dev/Test/Prod) |
Power Fx in Studio
Power Fx is the Excel-like formula language of the Power Platform. In Studio you use it for Set Variable, condition expressions, string manipulation, and date/number logic.
// Set Variable: calculate the gross amount
Set(Topic.Gross, Topic.Net * 1.19)
// Condition: user is admin AND amount > 1000
Topic.IsAdmin = true And Topic.Amount > 1000
// String manipulation: extract the email domain
Last(Split(System.User.Email, "@"))
// Date: 7 days in the future
DateAdd(Now(), 7, Days)
Gotcha: Power Fx uses US formatting: comma as the parameter separator, period as the decimal point. Anyone coming from German Excel trips over this regularly.
LangDock Modes Mapped
In LangDock you can fill fields as auto, manual, or AI prompt. Studio maps that as follows:
| LangDock Mode | Copilot Studio Equivalent |
|---|---|
| Manual | Classic topic + phrase trigger + hard-wired nodes (“Classic Orchestration”). |
| Auto / deterministic | Set Variable with a literal value + condition node. Power Fx for mappings. |
| AI prompt | (a) Enable Generative Orchestration at the agent level → the agent picks topic/tool/knowledge itself. (b) AI Builder Prompt as an action for a targeted sub-prompt. (c) Generative Answers Node for open knowledge search. |
Orchestration Modes: Classic vs. Generative
▼The most important architecture switch in Studio: do you select topics via hard-wired trigger phrases (Classic), or do you let the LLM choose based on topic descriptions (Generative)?
Comparison Table
| Aspect | Classic Orchestration | Generative Orchestration |
|---|---|---|
| Topic selection | Trigger phrase match (NLU) | The LLM reads the topic description + action description + knowledge description and chooses on its own. |
| Controllable | High (you define which trigger fires what) | Medium (you define the description & instructions, the LLM decides) |
| Predictable | Very high | Lower (the same input can trigger one topic one time and another the next) |
| Extensible | More topics = more trigger maintenance | More tools “just work”; from 30 to 40 tools/topics, split into sub-agents |
| Custom Data Source (your own KB) | Supported | Only via the Classic data option in the Generative Answers node |
| Bing Custom Search | Supported (max 2 Configuration IDs) | Only via the Classic data option in the Generative Answers node |
| Autonomous event triggers | no | yes (prerequisite) |
| Multi-tool reasoning / chaining | no | yes |
| Multi-agent (Child / Connected / A2A) | no | yes (prerequisite) |
| MCP servers | no | yes (prerequisite) |
| Multilingual responses | configure per language | All supported languages GA since June 2025 |
| Multiple Topics Matched | System topic takes care of it | Disambiguation currently disabled; switch off Multiple Topics Matched while testing |
Choosing the primary model – two separate lists since September 2026: Which models you see at all now depends on the harness, not on the product. Since September 2026 Microsoft maintains two separate availability pages: one for the standard harness and one for the GitHub Copilot harness. The two rosters overlap only partially, and Microsoft designates a default model exclusively for the standard harness. The most important change in September: GPT-5.5 Chat has replaced GPT-4.1 as the default, in all regions at once (documentation as of September 18, 2026).
| Model | Category | Standard harness | GitHub Copilot harness |
|---|---|---|---|
| GPT-5.5 Chat | General | Default in all regions | GA |
| GPT-5 Chat | General | GA (EU, UK, US, Australia in-region; cross-geo elsewhere) | GA |
| GPT-4.1 | General | GA – the default until September 2026 | – |
| GPT-6 Astra – new | General | – | GA (EU in-region, cross-geo elsewhere) |
| GPT-5 Reasoning | Deep | Preview | – |
| GPT-5 Auto | Auto | Preview | – |
| GPT-5.3 Chat, GPT-5.4 Reasoning, GPT-5.5 Reasoning | General / Deep | Experimental, US early access only | – |
| GPT-5.6 Reasoning – new | Deep | – | Experimental, US early access only |
| Claude Sonnet 4.6 | General | GA (cross-geo, US in-region) | GA (cross-geo, US in-region) |
| Claude Sonnet 5 | General | – | GA (cross-geo); not in Australia and Saudi Arabia, in the US only in the early access environment |
| Claude Fable 5 and Fable 5.1 – new | General | – | GA (cross-geo); same regional limits as Claude Sonnet 5 |
| Claude Opus 4.6 | Deep | GA (cross-geo, US in-region) | – |
| Claude Opus 4.7 – new | Deep | GA (cross-geo, US in-region) | – |
| Claude Opus 4.8 | Deep | – | GA (cross-geo, US in-region) |
| Claude Opus 5 – new | Deep | – | GA (cross-geo, US in-region) |
| Grok 4.1 Fast (Non-reasoning) | General | Experimental, US early access only – with an explicit safety warning, not for production | – |
| Mistral Medium 3.5 | General | Experimental | Experimental |
| GPT-4o, Claude Sonnet 4.5 | General | Retired. GPT-4o remains the default in GCC, GCC High, and DoD | – |
A deprecated model remains usable for up to one month after retirement. External models can be added as the primary model after admin approval, and here the two documentation pages diverge: the standard harness page names Anthropic, xAI, and Mistral, while the GitHub Copilot harness page lists only Anthropic and Mistral in its body text and mentions xAI solely in the admin controls. If you have planned Grok for the new experience, verify that in your own tenant before committing to it.
How model selection got here: Since October 2025 you choose the Generative Orchestration model in the agent settings; the Auto category (dynamic routing between fast and deep models at each conversation step) was added in spring 2026. GPT-4o was deprecated in October 2025, Claude Sonnet 4.5 once the migration deadline passed on June 30, 2026.
If you choose a reasoning model (tag: Deep), the Text and Generative AI Tools (premium) fee of 100 credits per 10 responses is charged on top of the feature rate. One Generative Answer with a deep model = feature rate + premium tools rate.
Harnesses: The Runtime Layer Between Agent and Model
Since the end of July 2026 Microsoft documents a layer that used to be implicit: the harness. You build the agent, the model delivers reasoning and text, and in between sits the harness as the runtime. It decides when the model is called, which components are sent along, how the answer is interpreted, and which tools run. In practice this means the harness determines which features you get at all and how you are billed. That is now a more important decision than the old question of “Classic or Generative Orchestration”.
| Criterion | GitHub Copilot harness | Standard harness | Copilot Chat harness |
|---|---|---|---|
| Made for | Complex, multi-step business processes | Rule-based agents, structured conversations, and Agent Flows | Extending Microsoft 365 Copilot Chat with your own enterprise knowledge |
| Way of working | Breaks a goal down into steps on its own and adapts along the way | Follows the topics, rules, and paths you define | Connects knowledge to the chat surface, no process logic of its own |
| Error handling | Retries steps and looks for alternative routes automatically | Exactly the fallbacks you built | Not a focus |
| Files | Creates and edits Word, Excel, PowerPoint, and PDF natively; each task runs in a sandbox managed by Copilot Studio | Not a focus | Not a focus |
| Skills & Memory | Yes | No | No |
| Billing | Copilot Credits, usage-based from the moment you build (see Chapter 10) | Classic Copilot Studio licensing and credit capacity | Consumption-based or included in the M365 Copilot license |
The “new experience” on the Copilot Studio home page is exactly the switch between the GitHub Copilot harness and the Standard harness. Via the New experience toggle on the home page (or Other ways to build) you get back to classic agents and Agent Flows. Both worlds continue to exist side by side.
GitHub Copilot Harness: Generally Available Since September 2026
On September 2, 2026, Microsoft declared the GitHub Copilot harness generally available. The runtime itself is thus out of preview and, according to Microsoft, the recommended basis for agents and workflows that work in multiple steps, generate files, and automate a process from start to finish. For project practice this mainly changes the argument: a GA feature can be defended differently in conversations with the works council, data protection, and procurement than a preview.
The harness is GA, many building blocks on it are not. The announcement blog calls workflows and MCP servers as tools generally available, but the corresponding how-to pages in the documentation (re-checked on September 21, 2026, pages dated September 16) still carry the preview banner “This article is prerelease documentation”. Explicitly still in preview according to blog and documentation: Memory, Connected Agents, Work IQ, attachments and generated files, environment-level telemetry, and MCP certification. For Foundry IQ the label flipped in September: in the version dated September 16, 2026 the page carries neither the prerelease banner nor the preview suffix in its title. For every building block you plan to use in production, check the label on its own documentation page, not the harness’s – and check it again before you sign off, because Microsoft moves these labels without announcement.
Describing Solutions in Natural Language (Preview)
Since September 9, 2026, the product overview has its own section Build with natural language as a preview: you describe the business goal, and Copilot Studio decides on its own which combination of agents and workflows solves it. Refinement happens through follow-up questions and corrections in the same conversation, and several assets can emerge in one session, without you fixing the type up front or switching between designers.
For workshops this is a real gain: the question “Do we need an agent or a flow here?” may stay open at the start instead of blocking the discussion. For cost planning the opposite applies: exactly this prompt-based generation is credit-billed on the GitHub Copilot harness, from the very first attempt (see Chapter 10).
The new and the classic experience run in parallel, and you can switch at any time. But: there is no migration path in either direction, because the architecture and the orchestration runtime differ. Existing classic agents keep working as before. Plan new builds deliberately before you invest in the new experience.
Skills: Reusable Instruction Building Blocks
A skill is a self-contained capability made of a name, a description, and instructions in Markdown. That clearly separates it from the other building blocks: Instructions describe general behavior, Knowledge is knowledge, Tools are actions via external services, and a Skill is a task-specific way of working that the orchestration activates when needed. The description is the trigger; the runtime uses it to decide whether the skill applies, so that is exactly where care pays off.
The format is deliberately portable: a SKILL.md file with YAML front matter (name, description) plus Markdown instructions. As a skill package the whole thing comes as a ZIP with optional companion files such as scripts, templates, and reference documents. You can write skills in Copilot Studio, build them in any editor and upload them, or adopt existing GitHub Copilot and Claude Code skills. A skill is built once and used in several agents.
Memory: Persistent Context per User
Memory is a production-ready preview and runs only on the GitHub Copilot harness. The agent keeps a separate store for every user in Microsoft-managed storage: it captures preferences and relevant context (Capture), stores them as files in the user’s own folder (Store), and reads them back in later interactions (Apply). Memory is switched on and off per agent via the toggle in the Build tab.
For data protection conversations in the DACH region, these points matter most:
- A user’s memories are private. Neither the maker nor other users can see them.
- After 28 days without interaction the system automatically deletes that user’s memories for that agent.
- In group chats and Teams channels Memory is disabled.
- Every user can view and completely delete everything stored in the Memory portal, or ask the agent in chat to change or forget something. On first contact in a new channel the agent shows the portal link itself.
The toggle only prevents the agent from continuing to use stored memories. The data stays until the 28-day period kicks in or the user deletes it in the portal. Anyone who enables Memory for a pilot and then switches it off again has therefore not yet restored a clean state.
When to Use What?
Classic Orchestration is your default for:
- Highly regulated customer-facing bots where every answer must be predictable
- FAQ and routing scenarios with clearly defined intents
- Bots that need Custom Data Sources or Bing Custom Search
- Compliance cases where the audit story “the user said X → this topic was triggered” is decisive
Generative Orchestration is your default for:
- Internal productivity agents with many tools (10+)
- Autonomous agents on event triggers (prerequisite!)
- Multi-tool chaining where one tool supplies the input for the next
- Scenarios where topics sound similar but need different actions in detail
AI Builder Prompts as Sub-Prompts
Within both modes you can embed targeted LLM sub-prompts as AI Builder actions, for example “Classify email” or “Extract the date from this text”. That gives you targeted LLM usage without forcing the agent into full Generative mode.
Security & Governance
▼DLP Policies (Data Loss Prevention)
DLP policies come from the Power Platform and apply to Copilot Studio as well. You categorize connectors into three classes:
| Class | Behavior |
|---|---|
| Business | May talk to other Business connectors. |
| Non-Business | May talk to other Non-Business connectors. |
| Blocked | Cannot be used at all. |
Tenant-wide policies take precedence over environment policies and cannot be overridden. Since early 2025, DLP enforcement has been active for all agents; the earlier exemptions have been abolished.
In addition, you can control via policy:
- Which tools/actions are permitted (for example “no HTTP request”).
- Which knowledge sources are permitted (for example “no public web”).
- Which channels may be published to.
- Whether agents may use No Authentication.
In practice, control works via connector names, and in the Power Platform Admin Center they are named differently from what you would search for. Hence this translation table:
| You want to prevent makers from … | Connector name in the Admin Center |
|---|---|
| … publishing agents without authentication | Chat without Microsoft Entra ID authentication in Copilot Studio |
| … using SharePoint or OneDrive as knowledge | Knowledge source with SharePoint and OneDrive in Copilot Studio (endpoint filtering possible) |
| … using public websites as knowledge | Knowledge source with public websites and data in Copilot Studio (endpoint filtering possible) |
| … uploading documents as knowledge | Knowledge source with documents in Copilot Studio |
| … building HTTP requests | HTTP (endpoint filtering possible) |
| … using skills | Skills with Copilot Studio |
| … creating event triggers or running automated evaluations with an authenticated account | Microsoft Copilot Studio |
| … connecting agents to Application Insights | Application Insights in Copilot Studio |
| … publishing to certain channels | Microsoft Teams + Microsoft 365 Channel, Direct Line channels, Omnichannel, SharePoint channel, WhatsApp channel, Facebook channel, each “in Copilot Studio” |
| … using Power Platform connectors as tools | The respective prebuilt or custom connectors |
If you block Power Platform connectors, you also block the tools of connected MCP servers, because their connectivity runs through exactly these connectors. Anyone who wants to allow MCP broadly while keeping connectors tight has a conflict of goals here that must be resolved deliberately.
Two mechanisms that projects often overlook: instead of blocking a connector completely, you can use endpoint filtering for SharePoint, public websites and HTTP and allow or forbid individual targets. And in case of a violation the Publish button is disabled; via Details → Download on the Channels page the maker gets a file with one line per violation that can be passed straight to the admin. With Set-PowerAppDlpErrorSettings you store an admin email address and a “Learn more” link tenant-wide in these error messages, one of the most effective small measures against ticket ping-pong.
Environment Strategy
At least three Power Platform environments are recommended:
| Env | Type | Purpose |
|---|---|---|
| Dev | Sandbox | Building & local testing |
| Test / UAT | Sandbox | Solution deployment, QA, pilot |
| Prod | Production | Live, managed solutions |
Optional: personal dev environments per developer. Each environment has its own DLP policies, its own connectors, its own audit trails. Entra security groups restrict access.
Authentication (Recap)
- No Authentication: careful, external channels (Direct Line) break if “No Auth” is set internally.
- Entra ID v2 with Federated Credentials is the recommended default: no client secret rotation stress.
- SSO with Entra in Teams: the user identity is passed through automatically.
- Entra External ID: for customer and partner logins (B2C).
- Teams and Microsoft 365 tolerate only one option. The Teams + Microsoft 365 channels support Authenticate with Microsoft and nothing else. Pick any other option and those channels go into blocked status. Conversely, Authenticate with Microsoft is not available for agents integrated with Dynamics 365 Customer Service. If you need both, you need two agents.
- The variable difference will cost you the publish. Under Authenticate with Microsoft only
User.IDandUser.DisplayNameexist;User.AccessTokenandUser.IsLoggedInare missing. If you switch from manual auth to Microsoft, those variables appear as Unknown in every topic and have to be fixed before publishing. For an access token you need Authenticate manually. Its provider list now holds five entries: Entra ID V2 with federated credentials, with certificates, or with client secrets, plus Entra ID (V1) and Generic OAuth 2. - Newly documented (as of September 17, 2026): Power BI and Entra auth are mutually exclusive. Agents using Microsoft authentication cannot be embedded in Power BI reports through iframe-based visuals. And with Generic OAuth2, anyone who signs in can talk to the agent – individual users can no longer be controlled through agent sharing. Both only surface during rollout if nobody checked beforehand.
Microsoft Entra Agent ID (Mandatory; Rollout May to July 2026)
Copilot Studio integrates with Microsoft Entra Agent ID: each agent automatically gets its own identity in Entra, similar to service principals but with its own audit story and lifecycle. Benefits:
- Audit log in Microsoft Entra (sign-in events per agent).
- Connector permissions appear as API Permissions on the agent identity, so Entra and M365 admins can see what an agent is able to do without a Power Platform login.
- Conditional Access for connector scopes (network location, device compliance, risk conditions).
- Integration with Entra ID Governance.
What this concretely triggers in the tenant: With the first agent after the rollout, Copilot Studio creates a blueprint named Microsoft Copilot Studio agent identity blueprint together with its blueprint principal in the tenant (blueprint ID 25664c89-cea5-4ab6-b924-a54fd8a19ae0). Every single agent identity hangs as a child under this global blueprint. So do not be alarmed if a principal nobody consciously created suddenly appears in Entra: that is the expected path, not an audit finding.
Existing agents: Agents created before the rollout continue to run via app registrations. Microsoft will migrate them to Agent IDs at a later date. During the transition, the governance functions work for both variants, so you do not have to migrate yourself, but your inventory list will contain two identity types side by side for a while. If you would rather not wait, you can convert existing agents yourself: through the Power Platform Admin Center, with PowerShell scripts, or via the Power Platform APIs. When an agent is deleted, Copilot Studio deletes the associated Entra Agent ID with it.
How the connector scopes really work: On publish, Copilot Studio attaches API permissions to the agent identity for every configured Power Platform connector. These scopes are honored exclusively by the Power Platform connector runtime and are re-checked at runtime against Advanced Connector Policies (ACP) and DLP. So they are a visibility and Conditional Access tool, not a way around your governance policies, and conversely their presence does not replace a DLP policy either.
Looking up the GUID: In Copilot Studio under Settings → Advanced → Metadata the GUID of the agent identity is shown as Entra Agent ID. With it you can check in the Entra Admin Center whether the identities are actually populated.
Microsoft Agent 365 (GA May 1, 2026)
Since May 1, 2026, Microsoft Agent 365 has been generally available for the commercial segment (per-user licensing, Microsoft E5 as the recommended prerequisite). It is the central governance and control plane for enterprise agents tenant-wide, not only for Copilot Studio agents but also M365, Foundry and partner agents. You see inventory, permissions, behavior and activity in one place and can apply shared policies, security controls and lifecycle oversight. In Copilot Studio, admin status information now surfaces directly in authoring (security posture per agent, auth gaps, policy impact).
Since July 1, 2026, the agent security functions for Copilot Studio and Foundry agents have required a Microsoft Agent 365 license. They are no longer covered by existing licenses for Defender for Cloud Apps or Defender for Cloud. Affected are Agent Discovery & Posture, Agent Threat Detection and the investigation of agent activity in Advanced Hunting (now running via Agent 365 observability logs). Tenants without a suitable license lost access to these functions on that day. Exception: real-time protection for Copilot Studio via Defender for Cloud Apps remains unchanged. If you work on that path, nothing needs to be done.
What You Should Concretely Check in the Tenant
- Advanced Hunting: The table
AIAgentsInfois replaced by the new tableAgentsInfo(Agent 365 is now the single source of truth for the agent inventory).AIAgentsInfois deprecated but not yet removed. Saved queries, custom detections and workbooks must be migrated. - Block rules: Tenants that had the old Agent 365 rules set to Block have no longer been blocking since July 1, 2026. Redefine the rules under Settings → Security for AI → Policies & rules → Real-time protection. This concerns Agent 365 real-time protection only, not the Defender for Cloud Apps path.
- Defender portal: The AI Agents sub-tab under Cloud Assets has been removed for all customers, regardless of license. All Security for AI functions now sit under the shared Security for AI Agents switch.
- Third-party agents can no longer be discovered via Defender for Cloud connectors; use Registry Sync in the Microsoft 365 agent registry instead (Preview).
- Customer Lockbox does not cover the governance, telemetry and audit events that run via Agent 365, nor the security audit logging of Copilot Studio itself (details further below).
MCP Certification (Preview Since July 2026)
From a governance perspective an MCP server is a third-party service to which you entrust tool calls and thus often data. Since July 2026 there is an official seal for this: the Microsoft MCP server certification. Microsoft validates the package and runtime behavior of a submitted server before it becomes broadly available, and the publisher remains responsible for maintaining the certified experience afterwards.
Submission goes through the Partner Center offer type Apps and Agents for M365 and Copilot. The old submission path was usable only until the end of July 2026; MCP servers that were already certified need not do anything because of the change, Microsoft migrates them itself. The prerequisite is a verified publisher with completed business verification in Partner Center, enrollment in the Microsoft 365 and Copilot program, and ownership of or control over the submitted endpoint. Independent publishers without their own service may not submit.
| Step | What happens |
|---|---|
| 1. Build the package | Manifest, tool definitions, auth configuration, metadata, public documentation, icons. Newly mandatory: intro.md and Azure Key Vault authentication (secrets ClientId, ClientSecret, TokenUrl, depending on the IdP also AuthorizationUrl, RefreshUrl, Scopes, AzureActiveDirectoryResourceId; names are case-sensitive). |
| 2. Submit | New offer in Partner Center with the type Apps and Agents for M365 and Copilot. |
| 3. Automatic validation | Package structure, mandatory fields, schema, metadata, basic policy check. Blockers must be cleared before review. |
| 4. Functional & safety review | Functionality, endpoint behavior, authentication, security, compliance, telemetry readiness, responsible AI. Included evaluation evidence speeds up the review. |
| 5. Approval & publishing | The certified server appears in Copilot Studio and in Azure Foundry, and where applicable in the M365 admin governance surfaces. |
| 6. Maintain | Keep the implementation identical to the certified package; resubmit for new tools or relevant behavior changes. |
What you get out of it as a customer: The list of certified MCP servers is in the connector reference and serves as a basis for an allow list. For assessing a non-certified server nothing changes: it remains allowed, but you carry the review yourself. A sensible governance rule is therefore not “certified MCP servers only” but “certified or your own documented approval”. As an aside: Microsoft supports only ASCII header names and values in manifest and tool files; umlauts in the manifest make validation fail.
Knowledge Source Permissions
When SSO is active and you connect SharePoint, Graph or Dataverse as knowledge, the agent inherits the user’s permissions. This is one of the most important security features: an employee only sees knowledge they are allowed to see anyway.
Without SSO, everything runs in the context of a maker or service account. That is usually NOT what you want, and it is the source of many data leaks.
Protection Status: The Security Traffic Light per Agent
Governance rarely fails for lack of policies, but because nobody sees which agent is currently violating them. That is exactly what the Protection status column on the Agents page in Copilot Studio is for. For every published agent it shows one of three states: Protected (green shield, no action needed according to detected signals), Needs review (policy violation or insufficient authentication) or Unknown. The point for maker enablement: the traffic light sits where the maker already works, not in the Admin Center.
A click on the status opens a summary that breaks the security profile down into three categories, each again with Protected, Needs review or Unknown:
| Category | What is checked | Where you fix it |
|---|---|---|
| Authentication | Does the agent require end-user authentication or is it public? A public autonomous agent is an attack vector, not just a blemish. | Settings → Security → Authentication |
| Policies | Violations of the data policies that admins have set in the Power Platform Admin Center, for example a blocked connector the agent wants to use. | Adjust the agent (Review errors) or, with admin rights, the policy in the Admin Center |
| Content moderation | Feeds into the statistics but not into the overall status. Shows whether the moderation level matches the desired sensitivity level. | Settings → Generative AI → Moderation |
If Authentication or Policies is at Needs review, that propagates to the overall status in the agent list. Content moderation deliberately does not.
Security Analytics: What Was Actually Blocked
Via See details you reach the Security analytics dialog with statistics and trends over the last 7, 14 or 30 days (periods without data do not even appear in the picker). Two views are relevant in practice: the stacked bar chart Reason for block breaks all blocked messages down by block reason: potential threats, policy violations, content moderation. The Session block rate trend graph shows per category the share of sessions with a blocked request over time, so whether a spike is a one-off or a pattern.
Automatic Security Scan Before Publish
Agents are securely configured out of the box. Because makers soften these defaults for understandable reasons without knowing the risk, an automatic security scan runs before publishing and warns the maker. Three deviations trigger the warning:
- Authentication set to No authentication. Default is Authenticate with Microsoft; with no auth anyone with the link can talk to the agent.
- Connectors and flows switched to Maker-provided credentials. Default is End user credentials, that is, the rights of the respective user. The switch means: everyone sees what the maker is allowed to see.
- Agent shared with everyone in the organization. Default is “shared with nobody”.
The scan is a warning, not a gate: it does not block publishing but forces a conscious decision. For a governance concept this means you should still lock down these three points hard via data policies if they are non-negotiable in your organization. In addition, Copilot Studio continuously assesses knowledge, tools and actions for possible data leakage and security risks during configuration, so findings become visible before publish rather than after.
Audit Logs via Microsoft Purview
Studio agents log to the Purview audit log. Logging happens at SDK level, so a single action often triggers several events. Roughly three classes:
- Admin and maker actions on the agent itself:
BotCreate,BotDelete,BotDeleteCleanupand theBotUpdateOperationvariants for name, icon, authentication, publish and share. - Component changes:
BotComponentCreate/-Update/-Deletefor topics, skills and entities, plus component collections,AIPluginOperation*for AI plugins,EnvironmentVariable*for environment variables andBotAppInsightsUpdatefor changes to the Application Insights configuration. - Usage:
CopilotInteractionfor every interaction of a user with an agent.
Compliance admins work in the Purview portal under Solutions → Audit. Developers get the same data via the Office 365 Management API.
For a CopilotInteraction the Audit solution logs only metadata: timestamp, organization, user and resource IDs and the transcript thread ID. The actual chat text is stored separately and is loaded via DSPM for AI (Data Security Posture Management), together with links to the resources used in the event. So anyone who says “we do not log conversation content” in a works council or data protection meeting means the audit solution, not the overall picture. Say it precisely, or it will come back to bite you.
Switching off only works halfway. Capturing administrative activities is active by default on all tenants and cannot be disabled. What you can do: switch off the audit log tenant-wide in Purview and use a data lifecycle management policy with retention of 0 days for “Copilot Experiences” to prevent user and response text from being retained. Two prerequisites are easy to miss: users need an assigned Microsoft 365 license for events and transcripts to be written at all, and in FedRAMP tenants none of this applies.
Two more details for practice: for agents with an Entra Agent ID the authentication activity additionally lands in Microsoft Entra ID and is visible in the Entra Admin Center, so the governance story spans two portals. And individual channels are excluded from logging. Which channel generated an event is shown in the audit solution in the JSON field CopilotEventData as AppHost, in DSPM for AI as App accessed in. If events are missing, the channel is the first suspect, not the policy.
Further Governance Controls at a Glance
Microsoft lists a number of controls in the governance overview that are rarely all known in projects. The most relevant ones besides DLP, Entra Agent ID and Purview:
| Control | What it does |
|---|---|
| Microsoft Entra network controls via Agent 365 | Entra egress and ingress controls can be applied to Copilot Studio agents. According to Microsoft generally available. Requires Agent 365 onboarding. |
| Audit alerts in Microsoft Sentinel | Admins can monitor agent activities in Sentinel and receive alerts. Microsoft lists this as a separate control, but the linked detail page only describes the Purview path, so for an SOC setup it is worth checking with your Microsoft contact before planning it in. |
| Connector dependency insights | Admins see before deployment which connectors an agent actually pulls in and can assess the data leakage risk instead of guessing it. |
| Manual Entra authentication with certificate | Instead of a client secret, the certificate provider can be configured, relevant wherever secret rotation cannot be cleanly organized. |
| Tools with user credentials | Tools run under the end user’s credentials by default. That is the default the security scan defends (see above). |
| Deploy from Git with audit trail | GitHub-backed version control with a traceable deployment history, complementing the solution-based ALM from Chapter 9. |
| CMK (customer-managed keys) | Your own encryption keys for Copilot Studio environments. |
Customer Lockbox does not cover all outbound data. Excluded are, first, the security audit logging of Copilot Studio (agent invocations, tool and action calls, policy decisions and runtime signals run through the Purview audit pipeline and not through the Copilot Studio service) and, second, certain governance, telemetry and audit events from Microsoft Agent 365. Anyone citing Lockbox as an argument in a data protection impact assessment must explicitly exclude these two categories.
MIP Labels & Sensitivity (Preview Since July 2025)
Microsoft Information Protection (MIP) sensitivity labels have been passed through in Copilot Studio since July 2025: connectors, Test Chat, Teams and M365 Copilot show the label of the source document. Files labeled confidential or highly confidential return no content in Generative Answers, which is good for oversharing prevention but can create knowledge gaps. The Purview integration with Dataverse classifies sensitive data automatically.
Responsible AI Guardrails
- Disable topics with a single click, without having to delete them.
- Define Allowed/Disallowed Topics: what the agent may (or may not) answer at all.
- Content Moderation on Generative Answers: standard toxicity and PII filters.
- Restrict to defined topics toggle: generative answers only when a topic was matched.
- Conversation Boosting Off: no free-form LLM chatter outside the topics.
- Citations mandatory for Generative Answers: the user sees the source.
Human in the Loop
▼Studio offers four ways to bring a human into the workflow, plus, since November 2025, approval gates per tool step for autonomous agents.
1. Adaptive Card with Approval Button
With “Ask with Adaptive Card” you send a card (“Approve / Reject”). The agent waits for the submit, parses the response into a variable, and continues.
- Good for: Quick inline confirmations in the chat.
- Limit: Only within the active chat context.
2. Power Automate “Approvals” Action
The classic Power Automate approval action (Teams or Outlook approval card): the agent calls a flow that blocks on the approval and waits for the response.
- Good for: Asynchronous approvals (over hours or days).
- Limit: The Power Automate license costs extra.
3. Agent Flow “Request for Information”
Since 2025, agent flows have a dedicated HITL action: the flow pauses, sends a structured email (via Outlook) with input fields, collects the response directly from the email, and continues.
- Good for: Structured off-system reviews.
- Limit: Currently Outlook is the only channel.
4. Hand-off to a Live Agent
| Variant | What For |
|---|---|
| Dynamics 365 Customer Service / Omnichannel | Fully integrated hand-off with skill-based routing, full conversation context, voice + chat |
| Generic Engagement Hub Handoff | Generic API hand-off to third-party systems such as Genesys, ServiceNow, etc. |
On hand-off, the entire conversation context (variables + transcript) travels along, so the human agent does not have to start “from scratch.”
Approval Gates per Tool Step (November 2025)
Since November 2025 you can set an approval gate per tool/action in autonomous agents: the agent only performs the step once a defined approver agrees.
Important for: Cost thresholds, policy validation, sensitive data operations.
Human Supervision for Computer Use
Computer Use tools have their own human supervision field: when “potentially harmful instructions” are detected (for example a prompt injection on a website), a defined reviewer is notified via Outlook. Good to know: the reviewer only sees the run context if they initiated the run themselves; otherwise they have no view of what is happening. A response time limit setting decides whether the run waits or aborts.
Smart Approval with Conditions
Combine conditions with HITL to request approval only when it is needed:
Agent flow: extract invoice amount
Condition: amount > €1,000?
├─ Yes → Request for Information (manager approval via email)
│ → SAP connector: post payment
└─ No → SAP connector: post payment directly
That gives you automation for routine cases and control for exceptions.
Versioning & Deployment
▼Draft vs. Published
- Draft: the version you edit in Studio. Tests in the test pane run against the draft.
- Published: the live version that users see on the channels.
- Every click on “Publish” creates a new published version. Studio keeps the history (restore is possible).
Solutions (ALM Containers)
Best practice: always work in a solution with your own publisher and prefix. A solution can contain:
- Agents
- Topics
- Agent Flows / Cloud Flows
- Connection References (instead of fixed connections)
- Environment Variables (instead of fixed values)
- Dataverse tables, AI prompts, custom connectors
Dev → Test → Prod
Four deployment mechanisms:
| Mechanism | Description |
|---|---|
| Power Platform Pipelines | UI-driven, suitable for citizen developers. Clicking “Deploy” moves the solution. |
| VS Code Extension (GA January 2026) | Pro-code authoring: edit agents in VS Code, version them with Git, test locally. |
| Azure DevOps with Power Platform Build Tasks | Enterprise-grade CI/CD. |
| GitHub Actions for Power Platform | The same on GitHub. |
Component Collections (November 2025): quick export and import of topic, tool and knowledge bundles via the sidebar, including child agents and MCP connector types. Helpful for reuse across several agents.
Agent Evaluations as a CI/CD gate (GA March 2026, REST API in preview April 2026): mandatory test sets before a prod deployment, Custom Graders for domain-specific pass/fail criteria, multi-turn conversation tests. Test results stay visible in Studio for 89 days and can be exported as CSV.
Expansion of evaluations in September 2026: via the Message Center (RM569607), Microsoft is rolling out an extended evaluations experience as generally available. New are more detailed explanations for every result, the agent’s reasoning traces, the cited Knowledge Sources per test case, the comparison of two evaluation runs, support for larger datasets, configurable test case generation and the generation of test data directly from Knowledge Sources. Added to that is a pre-validation that reports configuration errors before a run starts.
Two details from the evaluations documentation that are regularly looked up in projects: Copilot Studio measures the response time per interaction in seconds, end to end including reasoning, tool, connector and workflow steps, a pure metric without pass/fail effect, well suited for before-and-after comparisons. And there is a dedicated sharing role Agent Viewer: whoever receives it may view, start, rename, cancel and delete other makers’ test sets, but may not change the agent itself, not publish it and not manage sharing. Status and metrics of a run are visible to all makers, the agent answers and result explanations only to the person who started the run.
Best practices:
- Managed solution in Test & Prod, unmanaged only in Dev.
- Environment Variables for API URLs, connector endpoints, etc.
- Connection References for connector connections (the solution can travel without hard-wired credentials).
- After deployment: post-deploy configuration for the Application Insights connection and manual auth settings (they are environment-specific).
Model Lifecycle: The Deployment Case Almost Everyone Forgets
In August 2026 Microsoft published a dedicated guidance series on the model lifecycle, and it closes a gap that exists in almost every project: a model change is treated like a dropdown change but behaves like a migration. A newer model interprets instructions more literally, chooses tools differently, answers in a different length and format and brings different latency. The documentation’s guiding principle: build flexibly, operate conservatively, secure every upgrade with an evaluation.
The documented cycle for production agents has seven steps: Discover (find new, changed, new-default and retiring models), Inventory (which agents, environments, owners and business processes depend on them), Evaluate (measure the candidate against an established baseline), Approve (according to documented quality and operating criteria), Deploy (via the normal ALM path), Monitor (observe production, add newly discovered cases to the regression suite) and Repeat. You also trigger a review when a model becomes available in your region, when the default changes, when a deprecation or automatic upgrade is announced, or when monitoring shows quality, latency or consumption problems.
Microsoft explicitly names the classic: a high-volume FAQ agent is moved from a General to a Deep model because the deep model scores better in testing. Answer quality rises marginally, latency and credit consumption rise sharply, on balance a deterioration for users and budget. Second trap: an agent sitting on the default model automatically moves along with every default change. So for critical and high-volume agents, select a specific model so that every change goes through your migration process.
What you should record per agent so that an announced deprecation does not turn into firefighting: name, agent ID, environment and environment type, business criticality, business and technical owner plus tester and approver, the configured model including release tag, whether the agent follows the default or uses a fixed model, cross-geo needs and regional requirements, the harness used (it decides which evaluation methods are available at all), the location of the regression test set with the date of the last baseline run, and whether the retired-model window is used, when it expires and who approved it.
You do not have to do the inventory by hand. In the Power Platform Admin Center, Manage → Copilot Studio shows a Model column across all agents in the tenant, filterable and exportable; under Licensing → Copilot Studio → Environment → Message consumption details there is additionally the LLM Model column including consumption. Programmatically, the Inventory API returns name, display name, environment and model in a single tenant-wide query; prerequisites are the Power Platform or Dynamics 365 administrator role, an access token for https://api.powerplatform.com/ and an Agent Inventory enabled for the tenant.
POST https://api.powerplatform.com/resourcequery/resources/query?api-version=2024-10-01
Authorization: Bearer <access-token>
Content-Type: application/json
{
"TableName": "PowerPlatformResources",
"Clauses": [
{ "$type": "where", "FieldName": "type", "Operator": "in~",
"Values": ["'microsoft.copilotstudio/agents'"] },
{ "$type": "project", "FieldList": [
"name",
"properties.displayName",
"properties.model",
"environmentId = tostring(properties.environmentId)"
] }
],
"Options": { "Top": 200 }
}
// Response: properties.model comes back as properties_model.
// If there are more hits than Top: send the skipToken from the
// response back as Options.SkipToken and repeat.
If you group the result by properties_model, you see at a glance where which model is used in the tenant; in case of a deprecation you filter the same list for the retiring model and have the affected agents with environment ID for contacting the owners. For a single environment, pac copilot list --environment <id> from the Power Platform CLI is enough, but the command returns no model; for that you need the Inventory API.
Channel Publishing
Each channel has its own publish pipeline:
- Teams / M365 Copilot: Studio generates the app manifest; it has to be approved by a Teams admin before users can install it. Personal scope first, then team/channel scope optionally via a manifest tweak.
- Web: embed code for your own sites.
- Custom (Direct Line): secret Direct Line token; use it in your own app.
- Voice: D365 Contact Center provisioning.
- Teams Phone Agent (Preview since June 2026): the Copilot Studio voice agent attaches to a Teams Phone Agent and takes over specialized requests such as billing, order status or prescription refills. Handover and return run seamlessly, transfer targets come as tags from a tag template in the Teams Admin Center instead of being hard-coded in the agent. The channel is gated: the tenant has to be enabled via Microsoft Support, otherwise the option does not appear at all.
- SharePoint / Power Pages: embed web part.
In this channel Microsoft supports Basic Voice Agents only, no Real-time Agents, and the change of voice type is not reversible. Generative Orchestration is not supported and causes delays of 5 to 6 seconds, so set Settings, Generative AI, Orchestration to Classic. Authentication must be set to No Authentication so that any caller gets through. Environment prerequisites: “Get new features early” set to No, Dataverse set to Yes. Important for DACH customers: Copilot Studio voice agents are not hosted in Germany, France, India, Japan and South Africa. They can still be used, but the environment then has to be in a supported region, for us typically Europe or Switzerland.
Environment-Level Telemetry with Application Insights (Preview Since July 2026, Reworked in September)
Until July 2026 you had to wire up Application Insights per agent. Since July 2026 the export can be enabled in the Power Platform Admin Center for an entire Managed Environment: an export package of type Copilot Studio, and all agents in the environment deliver traces. For operations this is the real leap: you see agent runs, node and tool executions, can build alerts and write your own dashboards and queries without every maker having to think of it. As of the documentation dated September 17, 2026 this explicitly covers agents on both harnesses, the standard one as well as the GitHub Copilot harness.
Two details that break existing dashboards: after the end of the private preview, Microsoft emits an agent’s root invocations (invoke_agent) as dependencies instead of, as before, requests. Older root traces may therefore still show up in the requests table – anyone analyzing across both periods has to handle that in the query. And delivery takes up to 24 hours on a newly created configuration: if nothing arrives after you switch it on, that is first a question of patience and only then a fault. If you want to analyze at environment level exclusively, the documentation describes how to switch agent-level telemetry off.
| Point | What applies |
|---|---|
| Prerequisite | Only Managed Environments. The prerequisites of Export data to Application Insights must be met, and Local Authentication must be active on the target resource. |
| Applies to | Agents on the Standard harness and the GitHub Copilot harness. Declarative agents are excluded; they do not show up there. |
| Where does the data land? | In the dependencies table, as spans in OpenTelemetry format. Three events: InvokeAgent, ExecuteTool, OutputMessages. The agent semantics sit in customDimensions under the gen_ai.* keys, not in the native columns. |
| How does it fit together? | Every turn is its own trace with a shared operation_Id; InvokeAgent is the root, the other spans hang below it via operation_ParentId. A conversation across several turns is threaded together via gen_ai.conversation.id; sub-agents inherit this ID with a _ suffix. |
| Without Kusto | Application Insights ships the Agents (Preview) blades: Agent Runs (from the InvokeAgent spans), Tools (which tools how often and how fast) and Models (model usage across runs). |
| How long until data arrives? | For new configurations up to 24 hours. Only after that is an empty dashboard a finding and not a matter of patience. |
Topic events are missing entirely: TopicStart, TopicAction and TopicEnd are not captured at environment level. If you want to analyze topic flows, you still need agent-level telemetry. Further documented limits (as of September 17, 2026): duration is not populated for standard harness traces, in certain connected agent scenarios the parent-child relationship between traces is mapped incorrectly, trace and span IDs are GUIDs instead of OTel-compliant hex IDs, unauthenticated and multi-tenant scenarios are not logged at all, the feature runs only in the Microsoft public cloud, and the export is not transactional: during disruptions small amounts of data can be lost, and inconsistencies are possible while schema updates roll out. Microsoft also notes that telemetry can differ between the two harnesses, and that your configuration has to meet your own data residency, privacy, and RBAC requirements – the preview brings no assurance of that. Also do not send agent-level and environment-level telemetry to the same Application Insights instance, otherwise the analyses are duplicated.
Rollback / Restore
Studio keeps the published versions, so you can return to an earlier one. But solution deployments are “forward-only”: a rollback between environments runs via re-deploying an earlier solution version.
Costs & Limits
▼Pricing Models in Detail
Since September 2025 the unit is the Copilot Credit, no longer the “message.”
| Plan | Credits | Price/Credit |
|---|---|---|
| PAYG (Azure) | unlimited, on-demand | $0.01 |
| Capacity Pack | 25,000/month | $0.008 |
| M365 Copilot license | limited credits for agent usage included | n/a |
| Trial | 30 days, limited credits | $0 |
On September 1, 2025, Microsoft switched from “messages” to “Copilot Credits.” If you are coming from older contracts, you have to rebuild your cost calculation from scratch: a single conversation can now cost anywhere from 1 to 100+ credits, depending on orchestration and tool calls.
Credits are pooled tenant-wide. Since March 2026 Microsoft has published official billing rates:
| Agent Feature | Billing Rate | M365 Copilot User (B2E) |
|---|---|---|
| Classic Answer (manually authored topic) | 1 credit | Free (fair use) |
| Generative Answer | 2 credits | Free |
| Agent Action (trigger, deep reasoning, topic transition, Computer Use) | 5 credits | Free |
| Tenant Graph Grounding (Work IQ) | 10 credits | Free |
| Agent Flow Actions | 13 credits / 100 actions | Free |
| AI Tools (basic): simple LLM prompts | 1 credit / 10 responses | Free |
| AI Tools (standard) | 15 credits / 10 responses | Free |
| AI Tools (premium): reasoning models & premium tier | 100 credits / 10 responses | Free |
| Content Processing Tools (docs/images) | 8 credits / page | Free |
| Computer Use Step (standard model) | 5 credits / step | Free |
| Computer Use Step (premium model, e.g. Claude Opus 4.6) | 15 credits / step | Free |
Reasoning models are billed twice: feature rate + AI Tools premium rate (e.g. Generative Answer with a deep model = 2 credits + 100 credits / 10 responses).
Voice billing per minute: Classic voice (Classic Orchestration) 10 credits/min, GenAI voice 35 credits/min, premium GenAI voice 75 credits/min. The core agent activity (classic or generative answer, agent action) is already included in the per-minute rate.
Rule of thumb: A conversational sales lead qualifier costs $0.15 to $0.80 per conversation; an autonomous mail triage agent $0.30 to $2.00 per email; a Computer Use run with 10 steps roughly $0.50 (standard) to $1.50 (premium).
Usage-Based Billing of the GitHub Copilot Harness
Everything mentioned so far applies to the Standard harness: fixed billing rates per feature, billing from publish onward. Agents, workflows and apps on the GitHub Copilot harness are billed differently, and that is currently the most expensive misconception in projects.
The billing documentation (as of August 27, 2026) literally names agents, workflows, and apps as the scope. With the launch of app building in September 2026, every generated app therefore also falls under this model; include them in pilots from the start instead of treating them as a free by-product.
| Question | Standard harness | GitHub Copilot harness |
|---|---|---|
| When does billing start? | After publish, in operation | From the moment you start building |
| What costs credits? | Defined feature rates per answer, action, flow step | LLM tokens, tools (including knowledge and MCP) and the harness itself |
| Even during development? | No | Yes: generating solutions via natural language, preview and test, generating and running evaluations |
| Where visible? | Power Platform Admin Center | Monitor tab per agent, tenant- and environment-wide under Licensing, Copilot Studio in the Admin Center |
On the GitHub Copilot harness the build process itself already consumes Copilot Credits: every preview chat, every evaluation run, every solution generated via prompt. Budget a dedicated credit allowance for champions enablement and pilots, otherwise you calculate with operating costs and pay development costs. Also plan the budget per environment: credits are assigned to environments in the Power Platform Admin Center.
What September adds: on September 15, 2026 Microsoft published three roadmap entries on cost transparency, all targeting GA in September 2026 with status In development: RM571194 will surface costs directly in the preview chat and the agent history, RM571195 breaks them down in agent evaluations by evaluation generation, test runs, and model grading, and RM571196 brings them into the Monitor tab per agent, including an estimated breakdown across the lifecycle from authoring through testing and evaluations to production. That is exactly what is missing today: the build budget is spent, but nobody can say on what. Until this ships, the only reliable view is the consumption view in the Power Platform Admin Center.
Enforcement here is harder than the 125 percent rule: If an environment has no assigned credits left or all are consumed, every function that needs credits stops. End users no longer get answers, makers can no longer author via natural language, no longer test in the preview and no longer generate evaluations. Both groups see the same message that credits are missing. Microsoft allows a certain overage as a goodwill buffer so that business processes do not break off abruptly, but guarantees no amount. The three ways out: reallocate capacity from the tenant or another environment, buy additional capacity, or set up a PAYG meter for the overage.
Credit Governance: The Environment Is the Unit
Since September 17, 2026, there is a dedicated guidance article on this. The core message: because the GitHub Copilot harness consumes credits while you build, test and evaluate, governing only published agents isn't enough. Governance starts at the environment level from day one. Important: developer and trial environments have been on usage-based billing since September 1, 2026. Consumption data from before that date is only directional, not a cost forecast.
| Layer | What you control there |
|---|---|
| Tenant | Purchased and available capacity; who is allowed to allocate capacity at all |
| Environment | Prepaid allocation, draw from unallocated tenant capacity, pay-as-you-go connection |
| Agent | Monthly limit, notification threshold, hard stop when the limit is reached, explicit stop state |
| Operating process | Cost owner, alert triage, exception approvals, owner notification |
Microsoft recommends classifying every environment into one of three classes: exploration and prototyping (fixed boundary, development limit per agent, documented path to more capacity), test and validation (time-bound capacity for representative evaluations) and funded production (clear cost owner, limits based on criticality). For a hard prepaid boundary, allocate a fixed amount, turn off Draw from the available capacity in my tenant and don't connect PAYG. You find the affected agents through Power Platform Inventory: the properties.harness field with the value GitHub Copilot filters them out.
First, there is no tenant-wide default limit per agent: if you want to cap new agents, you have to apply it yourself through a recurring process or automation. Second, new environments can appear with tenant-capacity draw turned on, so a regular reconciliation is mandatory. Third, allowing environment admins to allocate add-on capacity gives them that control over all environments in the tenant, not just their own. And Azure budgets under PAYG only alert, they don't stop consumption.
Overage Enforcement of the Standard Harness (125% Rule)
When the tenant reaches 125% of its prepaid capacity, Microsoft deactivates all custom agents (it waits for the conversation to end). The admin is notified by email and in the Power Platform Admin Center. Workaround: activate a PAYG meter or reallocate capacity. Agent Flow enforcement is separate: at full capacity, new flow runs are blocked while other agent features keep running. Tip: set a monthly spend limit per agent in the Admin Center before it escalates.
Known Limits (As of August 2026)
| Limit | Value |
|---|---|
| Topics per agent | 1,000 in Dataverse environments (250 in Dataverse for Teams) |
| Skills per agent | 100 |
| Trigger phrases per topic | 200 (5 to 10 recommended) |
| Instructions / system prompt | 8,000 characters |
| File upload size | 512 MB per file |
| Files per source (web app) | 500 |
| SharePoint file size as knowledge | 7 MB without M365 Copilot; 200 MB with Work IQ (PDF/PPTX/DOCX up to 512 MB) |
| Knowledge sources per agent | 500 across all types |
| SharePoint site URLs per agent | Max 25 with Generative Orchestration |
| Dataverse knowledge sources | Max 2 per agent, 15 tables each |
| Attachments & generated files (GitHub Copilot harness, Preview) | Attachment 16 MiB per file; generated file 10 MB; URL download timeout 30 sec; retention 28 days after last conversation activity |
| Connectors | 1,400+ |
| Connector payload | 5 MB (public cloud); 450 KB (GCC) |
| Tools per agent (tool decision sweet spot) | 30 to 40 (above that: split into sub-agents) |
| Throttling: messages to an agent (Dataverse env) | 8,000 RPM (paid plan) |
| Throttling: generative AI messages | 50 to 100 RPM / 1,000 to 2,000 RPH depending on plan tier; PAYG = 100 RPM |
| Power Platform requests | 250,000 / 24 h (standard); 6,000 / 24 h (Teams plan) |
| Adaptive Card size | ~28 KB (Teams/Omnichannel ACS limit) |
| Computer Use | GA since May 2026; US region environments only; Generative Orchestration required |
| Real-time Agents (formerly Real-time Voice Agents) | Since July 2026 the preview label applies only to digital messaging channels; for voice channels Microsoft documents no explicit GA status (the preview note there has been dropped). Limitations in the messaging preview: No Authentication only (OAuth and Microsoft auth not supported), conversations over 60 minutes escalate automatically to a human agent, analytics reports possibly incomplete. Since July 2026 three models: GPT-Realtime (hosted in North America), GPT-Realtime-Mini (Preview) (hosted in Australia) and, new, GPT-5-Chat (Preview). Important correction for DACH: GPT-5-Chat supports in-region processing in the US, the EU, the UK and Australia, so EU Data Boundary customers have been able to use Real-time Agents with it since July 2026, which is still not possible with GPT-Realtime and GPT-Realtime-Mini (they need cross-geo processing). GPT-5-Chat runs on a text-LLM voice architecture: speech to text, GPT-5-Chat for intent and answer, then Microsoft Neural TTS back to speech, including custom voice models. The price: transcript logging is limited with text-LLM voice, individual turns and agent answers may be missing from the call transcript, which affects analytics and monitoring. Data storage stays in the Azure geo of the AI resource in any case. |
Rate Provisioning: Throughput Is Not Licensing
Since June 2026 Microsoft’s architecture guidance cleanly separates two things that are often confused in projects. License provisioning is the commercial question: licenses, credits, prepaid capacity, PAYG. Rate provisioning is the technical question: how fast requests may arrive before throttling kicks in. You can have enough credits and still be throttled.
The limits in the table above apply, depending on the service, at agent, environment, tool, connector or channel level, and the lowest limit in the runtime path determines the user experience. The agent can stay within its limits while a flow, a connector, a Dataverse call or a downstream API is already throttling. Messages to an agent, for example, are counted per Dataverse environment, that is, including all other agents and autonomous workloads in it.
So do not calculate in monthly volumes but in peak windows: requests per minute and per hour. A one-hour campaign peak topples a setup that looks harmless on a weekly average. The first response should be design optimizations, not a limit request: place external calls deliberately, spread high-volume agents across separate environments, smooth autonomous runs via queues, batches and trigger filters, pull reporting and telemetry out of the interactive path. Only once that is in place is the support request in the Power Platform Admin Center worthwhile. It is needed before UAT and load testing, not after the first production failure, and an increase is never guaranteed.
New since September 2026: the guidance now describes how to back up an increase request: run a representative pilot phase, measure peak usage, extrapolate to the full user base and attach exactly those numbers to the request. Without pilot data, the request remains an estimate.
Cost Drivers
- Generative Orchestration: every user turn = at least 1 LLM call for topic/tool picking.
- Knowledge querying: every Generative Answer = embedding + retrieve + synthesis = several credits.
- Autonomous agents with high event volume: e.g. mail triage on 10,000 emails/day = four-figure credits per day.
- Deep Reasoning: multi-step planning is significantly more expensive than single-shot.
- Tool chaining: every tool call can trigger another round of LLM reasoning.
An autonomous mail triage agent on a mailbox with 10,000 emails/day and Deep Reasoning can quickly burn through $5,000+/month in credits. Before activating autonomous triggers, always calculate volume × credit estimate × 30, and set a workspace spend limit.
Rule of thumb: Estimate credits = (conversations/month × average user turns × ~5 credits/turn) plus knowledge hits.
8 Practice Blueprints
▼Blueprint 1: IT Helpdesk Bot
- Question node “What is the problem?” + Adaptive Card with a category dropdown (VPN / Wi-Fi / Outlook / Other).
- Generative Answer over the IT SharePoint knowledge base.
- If no answer → Condition: create a ServiceNow ticket via Connector Action.
- Agent flow sends an Adaptive Card to the helpdesk channel with a “Take over” button.
- On “Take over” click: Transfer Conversation to the live agent.
Output: Ticket number in a DM to the user; conversation log in SP.
DACH case: An 80-person agency in Cologne frees up 1 IT FTE; standard requests (password reset, printer problems) run 24/7 in German.
Blueprint 2: HR Onboarding Bot
- From the SP list: name, start date, department, manager.
- AI prompt action: generate a personalized welcome email.
- Outlook connector: send the email to the new employee + cc the manager.
- Power Automate flow: create the Teams onboarding channel, add the manager and the employee.
- Approval card in the Teams HR channel: “Add access for [tools]?” → if approved → connector actions to Entra groups.
- On day 1: Schedule trigger kicks off a welcome chat in a Teams DM.
Output: Onboarding setup without a single HR click; audit trail in Purview.
DACH case: A 25-person SMB agency in Munich runs onboarding without a dedicated HR team.
Blueprint 3: Sales Lead Qualification Bot
- HTTP action / Apollo MCP: enrich the lead data (company size, industry).
- AI prompt: classify fit (A/B/C) against the ICP.
- Condition: A → sales round-robin (Dataverse lookup) and calendar hold.
- Outlook: personalized reply email from a template.
- HubSpot/Dynamics connector: create the lead with score & notes.
- Teams notification to the assigned sales rep with lead context.
Output: Pre-qualified lead in the CRM in <2 minutes.
DACH case: A B2B SaaS agency with 5 sales reps saves 30% of pre-qualification time.
Blueprint 4: Customer Support FAQ Bot with Hand-off
- SSO with Entra External ID (customer login).
- Generative Answer over the knowledge base (public help center + internal KB).
- For “My contract …” topics: Dataverse lookup by user ID → contract data.
- If not resolved after 2 turns: Escalate system topic.
- Transfer Conversation to the D365 Customer Service queue including the conversation history.
Output: 60% first-contact resolution without a human; clean hand-off for the rest.
DACH case: A SaaS startup with a 3-person support team covers 70% of standard requests automatically.
Blueprint 5: Expense Approval Bot
- Adaptive Card: date, amount, category, receipt upload.
- Power Fx validation: is the amount plausible? Are all required fields filled?
- AI prompt: OCR on the receipt → plausibility check.
- Condition on the amount: under €100 → auto-approve; €100 or more → Agent flow request for information to the manager via Outlook.
- On approval: Connector action SAP/DATEV → booking.
- Outlook email confirmation to the submitter.
Output: Workflow in minutes instead of days; audit via Purview.
DACH case: A mid-sized agency with 60 employees eliminates double entry.
Blueprint 6: Knowledge Search Across SharePoint
- Question node “What are you looking for?”
- Generative Answer across all approved SP sites (with SSO → user permissions).
- Citations mandatory in the output.
- Optional: AI Builder prompt “Summarize the top 3 hits, address the reader directly, max 100 words”.
- Adaptive Card with “Was this helpful?” → telemetry.
Output: Knowledge search that respects SP permissions.
DACH case: A consulting boutique with 5,000 project documents finally finds its templates again.
Blueprint 7: Meeting Briefing Agent
- M365 Calendar connector: fetch the user’s meetings for today (all calls with external participants).
- Per meeting: Graph knowledge: latest emails, files, OneNote notes involving the participants.
- AI prompt: create a 5-bullet briefing per meeting (context, latest touchpoints, open questions).
- Outlook: email with the daily briefing to the user.
Output: Briefing email at 07:30 without a single click.
DACH case: An account manager at a B2B agency starts the day prepared.
Blueprint 8: Compliance Triage for Incoming Emails
- AI prompt: classify the email (contract / data protection / complaint / spam / other).
- Condition:
- Contract → SP library “Contracts in Progress” + Adaptive Card to the legal lead.
- GDPR request → escalation to the data protection officer via Outlook, with a 30-day deadline reminder as a Schedule trigger.
- Complaint → ticket system.
- Spam → archive.
- Power Automate flow: send an acknowledgment of receipt to the sender (with AI personalization).
- Audit log in a dedicated Dataverse table.
Output: The mailbox no longer overflows, and critical topics are caught.
DACH case: An agency with GDPR obligations and a manually staffed compliance mailbox.
Best Practices
▼- Start with Classic Orchestration for regulated use cases. Generative is powerful but less predictable, and compliance loves deterministic paths.
- Every agent in its own solution. Otherwise ALM deployments turn into a jumble with unintended co-deployments.
- Environment variables for everything environment-specific. API endpoints, group IDs, SharePoint URLs: the solution then moves cleanly between environments.
- Enable SSO as soon as you connect knowledge to SharePoint/Graph/Dataverse. Otherwise everything runs in the maker context and users see things they are not allowed to see.
- In Generative Orchestration, topic descriptions matter as much as their content. Describe precisely when a topic should be selected, not what it does.
- At most one clear task per tool. “Helper tool that can also do X” → Generative Orchestration mixes them up. Split it.
- Build in HITL from the very first step if the agent is autonomous. Better too many approval gates at the start; removing them is easier than cleaning up incidents after the fact.
- Conversation boosting off + Generative Answers only from configured knowledge sources. Otherwise the agent hallucinates “creatively” about topics you do not control.
- Power Fx is your friend for logic, but do not overuse it. Move more complex logic into an agent flow (easier to test).
- Test in multi-channel mode, not just in the Studio pane. Adaptive Cards, SSO, and auth tokens behave differently in Teams/web/Direct Line than in the test bot.
Troubleshooting & Pitfalls
▼Top 5 Failure Patterns
| # | Failure Pattern | Likely Cause | Fix |
|---|---|---|---|
| 1 | “Agent unavailable, try later” | Tenant throttling or capacity exhaustion | Purview/Admin Center: check credit consumption; set up a PAYG backup if needed. |
| 2 | “Authentication failed” in Direct Line / custom channel | “No Authentication” in Studio, but the channel expects an auth token | Studio → Security → Authentication → switch to Entra v2 + regenerate the Direct Line secret. |
| 3 | Knowledge returns “I don’t know” even though the documentation is there | (a) SharePoint > 7 MB without M365 Copilot. (b) SSO not active, maker account has no SharePoint access. (c) Indexing not finished yet. | Check the license; turn SSO on; allow 30 to 60 minutes of indexing time after configuration. |
| 4 | Generative Orchestration picks the wrong topic | Topic descriptions too similar; too many topics | Sharpen the descriptions, reduce the number of topics, consolidate topics into a single tool if needed. |
| 5 | Solution deploy Test → Prod fails with “missing dependency” | Connection References or Environment Variables missing in the target environment | Create the connection in the target environment beforehand; set the environment variables in the deploy step. |
Common Pitfalls
Pitfall 1: “Topic Found, but Nothing Happens”
Usually connector auth: Connection References with a broken credential mean silent failures. Check the connection first, then the topic.
Pitfall 2: Adaptive Card Looks Fine in Studio, Broken in Teams
Teams uses an older card schema version plus a 28 KB limit. Always test in Teams, not just in Studio.
Pitfall 3: Generative Orchestration “Loses” Topics
Once you have 50+ topics, the descriptions become too similar and the LLM picks the wrong one. Fix: sharper descriptions, or go back to Classic.
Pitfall 4: SharePoint Knowledge Shows Only Snippets, Not the Whole File
If you only have an M365 E3 license (no M365 Copilot), the 7 MB limit applies. Larger files? Split them or upgrade the license.
Pitfall 5: “Why Is My Agent Answering Things It Shouldn’t?”
Conversation Boosting is set to On (default). Toggle it off and turn on “Restrict to defined topics”.
Pitfall 6: Publishing to Teams Hangs for Weeks
The Teams admin has to approve the app catalog entry. Often there is no approval process in place. Clarify the process first, then deploy.
Pitfall 7: Power Automate Flow Does Nothing in the Run Log
If you use an old Power Automate cloud flow as a tool, it runs under a different service account: permissions may be missing where they worked in your own test.
Pitfall 8: MCP over SSE Breaks After August 2025
SSE was deprecated in August 2025. Streamable HTTP is now mandatory for connecting MCP servers.
Pitfall 9: “My Autonomous Agent Doesn’t Fire.”
Generative Orchestration has to be on; otherwise event triggers are not visible in the UI.
Pitfall 10: “Agent Disabled, Billing Issue”
You have exceeded 125% of your prepaid capacity → overage enforcement kicks in. Confirm in the Power Platform Admin Center whether you want to reallocate capacity or activate PAYG. For Agent Flows: separate enforcement, blocks only new runs.
Pitfall 11: Real-time Voice Does Not Work in an EU Tenant
Real-time Agents are hosted only in North America (GPT-Realtime) and, since June 2026, in Australia (GPT-Realtime-Mini). EU Data Boundary tenants cannot use the feature, because the cross-geo processing this requires is prohibited in the EU. Outside NA/Australia, cross-geo processing must be explicitly allowed.
Pitfall 12: “Generative Answers Returns Nothing Even Though the SharePoint File Exists”
Likely cause: the document carries an MIP sensitivity label confidential or highly confidential. These files show as “ready” but do not return any content.
Pitfall 13: Generative Orchestration Ignores the Conversational Boosting System Topic
Known limitation: in Generative Orchestration, modifications to the Conversational Boosting system topic are not taken into account. Custom data sources and Bing Custom Search are likewise only available via the Classic data option in the Generative Answers node.
Pitfall 14: Multiple Topics Matched System Topic Does Not Disambiguate
Generative Orchestration currently does not invoke the Multiple Topics Matched system topic. Turn the topic off while testing; turn it back on once Microsoft ships the disambiguation fix.
Pitfall 15: The Agent Answers Twice, or Not at All
At the end of August 2026 Microsoft documented why this happens, and the cause is structural, not a bug. The Standard harness distributes context across the components involved. Each component works from its own context, and the orchestration layer does not reconcile the context at the top level. As long as a component is running, the orchestration layer does not see its messages to the user. Result: a request looks unanswered, so someone answers it a second time.
Context flows in on two paths (explicit inputs plus implicitly passed conversation context) and back out on two paths (explicit outputs plus implicit context). Whatever a component only shows to the user or only keeps in its own variables never reaches the orchestration layer. According to Microsoft, around half of the cases with duplicate or missing answers are due to this implicit passing.
| Perspective | Has in active context | May write to the chat | Returns as context |
|---|---|---|---|
| Orchestration layer | User request, conversation context, component, input and output descriptions, plan status, implicit answers, but not whether the user has seen them | Yes, its own follow-up questions and answers | Its own questions, answers, reasoning and plan |
| Topic | Topic variables, current node status | Yes, via message nodes, question nodes and Ask with Adaptive Card | Topic outputs and implicit messages, which can still trigger duplicates |
| Tool / Flow | Only the inputs generated by the orchestration | No | Tool or flow outputs |
| Knowledge step | User request plus active context of its agent | No, writes to its agent, not to the chat | Its answer |
| Generative Answers node (in the topic) | Whatever is in the input plus agent context | Yes, directly or into a topic variable | Not explicitly, can be repeated |
| Sub-agent (child or connected) | Initial request, the parent’s inputs and, if passed, parent context, in its own orchestration context | Yes, if configured or instructed | Answer and outputs |
Adaptive Cards are the most common trigger. Only plain text comes back implicitly from topics (message nodes, question nodes, card content, typed user answers), and without the information whether the user has seen it. Action buttons of an Adaptive Card and the clicks on them never reach the context of the Standard harness at all. So never rely on card content as context: return everything a later step needs as a topic output and additionally set an output that records the answered status.
Sub-agents are the second trigger. A child agent runs inside the parent and always receives its conversation context, with no way to switch that off. For a connected agent you control this via a setting. If the passed context contains a request that looks unanswered, the sub-agent tries to compensate and answers a second time.
Pitfall 16: Activity.Text is empty although the user wrote something
Anyone using Activity.Text for logging will find gaps in production, and the cause is not a bug. When the agent calls a knowledge source for lack of context, Activity.Text stays empty for that turn: the agent constructs no natural-language response of its own because it delegates the decision to the knowledge source. The same happens with tools that are activities by design. The variable picks up any activity handed to the agent, not the previous user message. The documented fix is simple: use LastMessage.Text when you need the last user message, and Activity.Text only where you really mean the activity.
Two aggravations on top. The OnPlanComplete trigger executes only after the tool has finished. If a knowledge source was used, its output is written straight into the activity – and because Activity.Text was empty beforehand, what ends up there is the tool usage details rather than a conversational message. With intent-based or natural-language triggers this does not happen, because they fire earlier and the activity already contains a constructed message. And in Teams it is far more visible than in Copilot Studio, because Teams surfaces activity objects directly while Copilot Studio normalizes them. The same agent therefore behaves visibly differently depending on the channel, without anything in its logic having changed.
Glossary
▼| Term | Definition |
|---|---|
| Copilot / Agent | The top-level unit in Studio: persona + instructions + topics + tools + knowledge + channels. Microsoft has largely replaced “Copilot” with “Agent.” |
| Topic | A dialog segment with a trigger (phrases or description) and a sequence of nodes. Comparable to an intent-flow unit. |
| Action / Tool | Something the agent does: connector action, Power Automate flow or agent flow, AI prompt, REST call, MCP tool. |
| Connector | Power Platform wrapper around an API (1,400+ available): standard and custom connectors. |
| Knowledge Source | What the agent “knows”: files, SharePoint, websites, Dataverse, Graph, Azure AI Search, MCP resources. |
| Slot / Entity | Structured information the agent extracts from user input (date, email, city, custom entity). |
| Variable | Data container with scope Topic / Global / System / Environment. |
| Generative Orchestration | Mode in which the agent, driven by the LLM, selects the appropriate topic/tool/knowledge based on descriptions rather than trigger phrases. |
| Classic Orchestration | Mode in which a topic is selected by trigger-phrase matching (classic NLU). |
| Generative Answer | Answer to a user question that the agent builds from knowledge sources through search + synthesis. |
| Power Automate Flow | Classic cloud flow; can be added as a tool in Studio. Requires its own Power Automate license. |
| Agent Flow | Studio-native flow, technically similar to Power Automate, but credit-billed and with native HITL actions. |
| Adaptive Card | JSON-based structured UI card with buttons / inputs / layouts. |
| Power Fx | Excel-like formula language of the Power Platform; used in Studio for variable logic, condition expressions, Set Variable. |
| Channel | Endpoint where the agent runs: Teams, M365 Copilot, web, custom (Direct Line), voice, Slack, etc. |
| Direct Line | REST API for custom channel integration. |
| Environment | Power Platform environment (Dev/Test/Prod). Each has its own DLP, connectors, Dataverse. |
| Solution | Container for agents + flows + variables; the basis for ALM transport between environments. |
| DLP Policy | Data loss prevention rule: categorizes connectors as Business / Non-Business / Blocked. |
| Microsoft Entra ID | Microsoft’s identity provider (formerly Azure AD); v2 = OAuth2/OIDC. |
| Microsoft Purview | Microsoft’s compliance & audit platform; logs Studio agent activities. |
| MCP (Model Context Protocol) | Open standard for connecting AI apps to tools and resources; GA in Studio since 2025. |
| Deep Reasoning | Multi-step planning capability for complex tasks (Preview/GA, depending on the feature). |
| HITL (Human in the Loop) | Pattern in which a human confirms or corrects the agent at a defined point. |
| Handoff | Transfer of the conversation to a human agent (D365 Omnichannel or Generic Hub). |
| Computer Use / CUA | Computer-using-agent capability (Windows desktop & browser, US only). Vision + reasoning + virtual mouse/keyboard. Models: OpenAI CUA, Claude Sonnet 4.5/4.6, Claude Opus 4.6. |
| Cloud PC Pool | Pool of dedicated Windows machines for Computer Use runs (January 2026). Scales background automation. |
| A2A (Agent-to-Agent Protocol) | Open protocol for agent-to-agent communication; GA in Copilot Studio since April 2026. |
| Child Agent / Connected Agent | Sub-agents inside a main agent (child) or linked standalone agents (connected). Enables multi-agent architectures. |
| Microsoft Agent 365 | Central governance & control plane for enterprise agents tenant-wide (GA May 1, 2026, commercial segment). Since July 1, 2026 the license prerequisite for the agent security features of Copilot Studio. |
| Entra Agent ID | Microsoft Entra identity per agent; enables Conditional Access, audit logging and API permissions visibility. Mandatory for every new agent since July 2026, no more environment opt-out. Existing agents continue to run via app registrations for the time being. |
| Blueprint Principal | Tenant-wide parent principal under which all Copilot Studio agent identities hang as children (Microsoft Copilot Studio agent identity blueprint, ID 25664c89-cea5-4ab6-b924-a54fd8a19ae0). Created automatically with the first agent after the July 2026 rollout. |
| MCP Certification | Microsoft’s review program for MCP servers (Preview since July 2026): a verified publisher submits a package via the Partner Center offer type Apps and Agents for M365 and Copilot, and Microsoft reviews the package and its runtime behavior. Certified servers appear in Copilot Studio and Azure Foundry. |
| Environment-Level Telemetry | Export of the agent traces of an entire Managed Environment to Azure Application Insights (Preview since July 2026). Spans InvokeAgent, ExecuteTool, OutputMessages in the dependencies table, OpenTelemetry semantics via gen_ai.* keys. |
| Created File | File that the agent generates itself during the conversation (report, spreadsheet, chart, code) and attaches as a download card below the answer. Max 10 MB, 28 days retention. GitHub Copilot harness only. |
| Work IQ | Semantic-index-based knowledge retrieval from M365 Copilot. Required for SharePoint files > 7 MB (up to 200 MB / 512 MB for PDF/DOCX/PPTX). Requires an M365 Copilot license in the same tenant + SSO. |
| Tenant Graph Grounding | RAG across the tenant-wide Microsoft Graph, including external data synced via connectors. Costs 10 credits per message for users without an M365 Copilot license. |
| Tool Groups | Curated tool sets (Outlook/SharePoint) that can be added in a single step (Preview November 2025). |
| Bing Custom Search | Curated web search via a Custom Configuration ID; available as a knowledge source since March 2026. |
| Fabric Data Agent / Foundry Agent / M365 Agent SDK | External agents that can be linked as connected agents (Preview). |
| Agent Evaluations | Test-set-based automated QA for agents (GA March 2026). Custom Graders, multi-turn tests, REST API (Preview April 2026) for CI/CD. |
| Custom Graders | Self-defined pass/fail criteria in evaluation test cases. |
| Copilot Agent Kit (until July 2026 Copilot Studio Kit) | Power CAT tooling for testing, validation, governance and CSAT KPIs (since October 2025). Renamed in July 2026 and extended by Agent Debugger (step-by-step diagnosis of recorded conversations), Agent Library (catalog of prebuilt agent templates and components), Agent Insights Hub (central analytics from App Insights and transcripts), Power Shield (approval workflow for connector access in DLP policies) and Agent Review Pipeline. Not part of the product but community tooling from the Power CAT team. |
| Harness | The runtime between agent and model. It decides when the model is called, which components are passed along and which tools run. Three variants: GitHub Copilot harness (agentic, skills and memory, Copilot Credits), Standard harness (rule-based, classic licensing) and Copilot Chat harness (knowledge for M365 Copilot Chat). |
| Foundry IQ | Preconfigured knowledge base from Azure AI Foundry that is added as a tool to an agent on the GitHub Copilot harness. One connection per agent; tuning happens in Foundry. The preview label was dropped without announcement in September 2026. |
| Skill (new experience) | Reusable instruction building block made of SKILL.md with YAML front matter and Markdown instructions, optionally as a ZIP package with scripts and templates. Not to be confused with the classic Bot Framework Skill. |
| Real-time Agent | Voice-first conversational agent in D365 Contact Center; since July 2026 the preview label applies only to digital messaging channels. Hosted only in North America and Australia; the EU Data Boundary blocks the feature. |
| Agent Viewer | Sharing role for evaluations: may view, start, rename, cancel and delete other makers’ test sets, but may not change the agent, publish it or manage sharing. Not to be confused with the Analytics Viewer role. |
| Copilot Tuning | Fine-tuning a model on enterprise content. Until August 20, 2026 via Agent Builder templates in M365 Copilot, then paused and moving to Copilot Studio on a skill-based architecture (Public Preview from September 2026, GA announced for December 2026). |
| App (Copilot Studio) | Public Preview since September 2026: a full-stack application on open standards, described in natural language, with Git version control, deployment stages and version isolation. Runs on the GitHub Copilot harness and is accordingly billed by consumption in Copilot Credits. Not to be confused with a Power Apps canvas app. |
| Copilot Managed Runtime | Microsoft-operated runtime for apps from Copilot Studio, Copilot Cowork and the CLI (public preview since 09/25/2026), formerly "Microsoft-managed host". Provides Entra sign-in, connectors, a Git repository, automatic policy enforcement and an app inventory in the Microsoft 365 admin center. Running apps is billed per user in Copilot Credits. |
| Copilot Cowork | Dedicated Microsoft 365 surface in which Copilot carries out tasks autonomously and works via skills. The App skill there builds the same apps as Copilot Studio but is tied to the Frontier program. |
| Microsoft Frontier Program | Early access program for the latest Copilot features. Must be applied for separately; availability and feature scope of the Frontier previews can change at any time. Prerequisite for the App skill in Copilot Cowork. |
| Power Apps vibe experience | AI-native app building surface at vibe.powerapps.com (Preview). Since September 8, 2026 Microsoft’s documentation recommends Copilot Cowork and Copilot Studio instead. Was only usable in the US, Australia, Asia and India regions, only in English and not in the default environment. |
| MIP Label | Microsoft Information Protection sensitivity label. Confidential / Highly Confidential files deliver no Generative Answers content. |