| title | Copilot Studio |
|---|---|
| description | Learn how to use Copilot Studio with Agent Framework. |
| zone_pivot_groups | programming-languages |
| author | eavanvalkenburg |
| ms.topic | reference |
| ms.author | edvan |
| ms.date | 02/09/2026 |
| ms.service | agent-framework |
Copilot Studio integration enables you to use Copilot Studio agents within the Agent Framework.
:::zone pivot="programming-language-csharp"
The following example shows how to create an agent using Copilot Studio:
using System;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.CopilotStudio;
// Create a Copilot Studio agent using the IChatClient pattern
// Requires: dotnet add package Microsoft.Agents.AI.CopilotStudio --prerelease
var copilotClient = new CopilotStudioChatClient(
environmentId: "<your-environment-id>",
agentIdentifier: "<your-agent-id>",
credential: new AzureCliCredential());
AIAgent agent = copilotClient.AsAIAgent(
instructions: "You are a helpful enterprise assistant.");
Console.WriteLine(await agent.RunAsync("What are our company policies on remote work?"));:::zone-end
:::zone pivot="programming-language-python"
Note
Python support for Copilot Studio agents is available through the agent-framework-copilotstudio package.
pip install agent-framework-copilotstudio --preSet the following environment variables for automatic configuration:
COPILOTSTUDIOAGENT__ENVIRONMENTID="<your-environment-id>"
COPILOTSTUDIOAGENT__SCHEMANAME="<your-agent-schema-name>"
COPILOTSTUDIOAGENT__AGENTAPPID="<your-client-id>"
COPILOTSTUDIOAGENT__TENANTID="<your-tenant-id>"CopilotStudioAgent reads connection settings from environment variables automatically:
import asyncio
from agent_framework.microsoft import CopilotStudioAgent
async def main():
agent = CopilotStudioAgent()
result = await agent.run("What are our company policies on remote work?")
print(result)
asyncio.run(main())async def streaming_example():
agent = CopilotStudioAgent()
print("Agent: ", end="", flush=True)
async for chunk in agent.run("What is the largest city in France?", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print():::zone-end
[!div class="nextstepaction"] Custom Provider