Skip to content

Prerequisites

Every 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 exercise
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 The Python lab only
uv latest uv --version The Python lab only
Node.js 20.10 node --version The 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.

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 these 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.

The licences your tenant needs

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 200 and 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

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 labs start from a research assistant that answers questions about Microsoft products by searching the Microsoft Learn MCP server. Clone the runbook repository and work in the folder that matches your stack:

git clone https://github.com/qmatteoq/agent365-runbook
cd agent365-runbook/01-scenarios/Web-App-Agent-User-OBO/0.Resources/Starting-point
Lab Folder
A365-01A (.NET) dotnet/
A365-01B (Python) python/
A365-01C (Node.js) nodejs/

You can bring your own agent instead. The 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

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:

  1. The endpoint, under Resource Management and then Keys and Endpoint.
  2. 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 all four sections check out, open the lab for your stack: