SDK requirements
Main flow: 1. Copilot Studio → 2. SDK requirements → 3. .NET
Complete this setup after Copilot Studio and before the .NET lab. These requirements also apply to the optional Python and JavaScript / Node.js labs; install their language-specific tools only if you plan to take them.
The first lab has its own Copilot Studio prerequisites. You do not need the SDK tools to complete that lab.
Every SDK lab in this repository requires the same three things: tools on your machine, licences in your tenant, and permissions on your account.
The tools you need on your machine
| Requirement | Minimum | Check it with | What needs it |
|---|---|---|---|
| .NET SDK | 8.0 | dotnet --version |
The Agent 365 CLI itself, and .NET agents |
| Agent 365 CLI | latest | a365 --version |
Every SDK lab |
| PowerShell | 7.0 | pwsh --version |
The consent scripts |
| Azure CLI | latest | az version |
Signing in to the tenant |
| Az PowerShell module | latest | Get-Module -ListAvailable Az.Accounts |
Granting permissions |
| Git | any | git --version |
Cloning the sample agents |
| Python | 3.12 | python --version |
Optional Python lab only |
| uv | latest | uv --version |
Optional Python lab only |
| Node.js | 20.10 | node --version |
Optional JavaScript / Node.js lab only |
The .NET 8 SDK is required even if your agent is written in Python or TypeScript. The Agent 365 CLI is distributed as a .NET global tool, so .NET must be installed to run it. This is unrelated to the language your agent is written in. This requirement is for the SDK labs only; Lab A365-01 does not use the CLI.
A key requirement for the labs is the Agent 365 CLI, which you can install with the following command:
dotnet tool install --global Microsoft.Agents365.CLI
a365 --version
The second command prints the installed version.
Installing the Agent 365 Skills
Most of the Agent 365 work in the SDK labs is done by asking an AI coding assistant to do it, using the Agent 365 Skills. The skills work with every major assistant, and each one installs them differently. Pick the row that matches the tool you use:
| Your assistant | How to install |
|---|---|
| Claude Code (app, web or CLI) | Run /plugin marketplace add https://github.com/microsoft/agent365-skills inside a session, then /plugin install agent365@agent365-skills |
| GitHub Copilot CLI, VS Code agent mode | gh skill add microsoft/agent365-skills |
Cursor, Windsurf, Codex CLI, Gemini CLI, or anything else that reads .agents/skills/ |
node /path/to/agent365-skills/scripts/install.js, run from your agent project directory |
Run the install from your agent's project folder, so the skills can see the code they are meant to change.
Lab A365-01 does not use these coding-assistant skills. It uses a native skill created inside the Copilot Studio browser authoring experience.
The licences your tenant needs for the SDK labs
| Requirement | What to know |
|---|---|
| Microsoft 365 tenant | With Agent 365 enabled |
| Agent 365 licence | At least one user in the tenant must hold one |
| Azure subscription | For the Azure OpenAI resource the agent reasons with |
If nobody in the tenant holds an Agent 365 licence, telemetry is accepted with
HTTP 200and then discarded. The logs report a successful export, Defender shows no data, and no error is raised. Verify the licence before you start.
The permissions you need on your account for the SDK labs
| Permission | Who needs it | What it is for |
|---|---|---|
| Application Developer (or higher) | You | Creating app registrations |
| Global Administrator | You or a colleague | Granting admin consent to the blueprint |
| Azure OpenAI access | You | The model the agent uses. For the Entra credential path you need the Cognitive Services OpenAI User role on the resource; for key auth, access to the resource keys |
You do not need to be a Global Administrator yourself. The CLI performs every action it is permitted to perform, then prints a PowerShell snippet for an administrator to run for the rest. Identify the person who will run it before you start.
The web on-behalf-of labs contain two of these handoffs: one when the agent is registered, and one when the sign-in app is given permission to call the agent's blueprint. Each takes an administrator about a minute.
Getting the sample agent
The SDK labs start from a research assistant that answers questions about Microsoft products by searching the Microsoft Learn MCP server. Clone the runbook repository and open the .NET sample for the main flow:
git clone https://github.com/qmatteoq/agent365-runbook
cd agent365-runbook/01-scenarios/Web-App-Agent-User-OBO/0.Resources/Starting-point/dotnet
The sample folders under Starting-point/ are:
| Lab | Folder |
|---|---|
| A365-02A (.NET, main flow) | dotnet/ |
| A365-02B (Python, optional) | python/ |
| A365-02C (JavaScript / Node.js, optional) | nodejs/ |
You can bring your own agent instead. The SDK labs assume two things about it: it runs as a web app with one HTTP request per turn, and there is a single place in the code where a turn begins and ends, which is where the instrumentation goes.
An Azure OpenAI resource for the SDK labs
The agent reasons with a model deployed in Azure OpenAI, so you need a resource with a chat deployment on it. Note down two values from the Azure portal, on the resource:
- The endpoint, under Resource Management and then Keys and Endpoint.
- The deployment name, under Model deployments.
Also note the id of the tenant that owns that resource. Without it, the credential returns a token from whichever tenant you last signed in to, and Azure OpenAI responds with HTTP 400 and Tenant provided in token does not match resource token.
Next steps
Once the requirements above are ready, continue to Lab A365-02A: .NET, the final step in the main flow.
The Python and JavaScript / Node.js labs are optional extensions after the main flow.