Microsoft 365 Agents SDK
Build one multichannel, trusted agent that ships to Microsoft 365 Copilot, Teams, web, and custom apps.
- Source repo
- microsoft/Agents
- Stars
- ★ 1.1k
- Last updated
- 5d ago
- License
- MIT
- Primary language
- TypeSpec
- FA score
- 34/100 · Major gaps
At a glance
- Works with
- Portable with changes
- You'll need
- Typical use
- An enterprise developer who already has agent logic and wants it reachable inside Microsoft Teams or Microsoft 365 Copilot, letting the SDK own channel communication and event dispatch.
- Main limitation
- The SDK source is not in this repository: implementations sit in Agents-for-net, Agents-for-js, and Agents-for-python, so you must identify your language repo first and then track two places.
- Source review
- 34/100 · Major gaps 2 safety controls not found
What does this agent do, and when should you use it?
The Microsoft 365 Agents SDK from Microsoft is a framework for building full stack, multichannel, trusted agents that deploy to channels such as Microsoft 365 Copilot, Microsoft Teams, Web & Custom Apps, and more, while the SDK handles the required channel communication scaffolding. This repository is deliberately a jumping-off point rather than a monolithic codebase: the client libraries live mostly in Agents-for-net (C#/.NET), Agents-for-js (JavaScript), and Agents-for-python (Python), and cross-cutting issues can be filed here while language-specific issues belong in those repos. The SDK gives you an agent 'container' with state, storage, and the ability to manage activities and events, and it stays agnostic about which AI you choose, so you can pick one or more services, models, or agents. The repo also hosts agent-plugins that give AI coding assistants deeper knowledge of the SDK's APIs, patterns, and common mistakes. Microsoft 365 Copilot is just one supported channel, and a subscription is not required to get started unless you target that or another subscription-gated channel.
The SDK lets you build an agent container that carries state and storage and manages activities and events, then deploy that container across channels including Microsoft 365 Copilot, Microsoft Teams, Web & Custom Apps and more, with the SDK providing the communication scaffolding each channel requires. Channel management capabilities are what publish the agent outward, and orchestration is left to the AI services, models, or agents you plug in yourself. At the repository level, this repo points to the language-specific implementations rather than containing them: Agents-for-net for C#/.NET, Agents-for-js for JavaScript, and Agents-for-python for Python, with cross-cutting issues accepted here. The repo also ships agent-plugins in four variants: agents-sdk-common covers Azure provisioning, identity credentials, and OAuth setup through the az CLI; agents-for-js covers building agents, debugging authentication and startup issues, and configuring OpenTelemetry observability; agents-for-net adds Bot Framework migration and ActivityHandler-to-AgentApplication migration; agents-for-python covers configuring and troubleshooting OpenTelemetry observability.
- An enterprise developer who already has agent logic and wants it reachable inside Microsoft Teams or Microsoft 365 Copilot, letting the SDK own channel communication and event dispatch.
- A team that refuses to lock into a single model vendor and wants one SDK whose orchestration layer accepts whichever AI services or models they pick.
- C#/.NET, JavaScript, or Python developers who want to start from the QuickStart and samples in their language's repository before committing to a framework.
- A builder on Copilot Studio who needs to embed an agent into an application or compose multi-agent patterns, starting from the Copilot Studio Client sample in the samples folder.
- A .NET team migrating off Bot Framework that wants the agents-for-net plugin's Bot Framework and ActivityHandler-to-AgentApplication migration skills to scope the rewrite.
- A developer working in GitHub Copilot CLI or Claude Code who wants SDK-specific guidance auto-activated by language and task.
How do you install or deploy this agent?
The README does not document installing the SDK itself; package installation must be looked up in the language-specific repositories. The only installation steps it does give are for the AI coding assistant plugins, explicitly for GitHub Copilot CLI or Claude Code:
- Add the plugin marketplace:
/plugin marketplace add microsoft/Agents- Install the common plugin:
/plugin install agents-sdk-common@microsoft-agents-sdk- Install the plugins for the SDKs you use:
/plugin install agents-for-js@microsoft-agents-sdk
/plugin install agents-for-net@microsoft-agents-sdk
/plugin install agents-for-python@microsoft-agents-sdk- Run /plugin to verify installation; skills activate automatically, and no manual loading is needed.
Be aware that beyond plugin installation the README gives no dependency list, runtime version requirements, or credential setup for the SDK itself. The agents-sdk-common plugin does cover Azure provisioning, identity credentials, and OAuth setup via the az CLI, but the README does not spell out those parameters.
How do you use this agent?
The README's recommended entry point is the samples folder in this repository: pick your language, review the samples list, and start with QuickStart, which is recommended for fundamentals. From there move to the repository for your language — Agents-for-net for C#/.NET, Agents-for-js for JavaScript, Agents-for-python for Python. To work with Copilot Studio, pick the Copilot Studio Client sample in your chosen language. One practical boundary: a Microsoft 365 Copilot subscription is not required to get started with or use this SDK unless you are working specifically with that channel or others that gate their client behind a subscription or service. The README also states that the SDK is agnostic about the AI you choose, so you select one or more services, models, or agents to meet your requirements. Official docs live at aka.ms/M365-Agents-SDK-Docs, with separate .NET, JavaScript, and Python API references.
What are this agent's strengths and limitations?
- Explicit channel coverage: Microsoft 365 Copilot, Microsoft Teams, Web & Custom Apps are named supported targets, and the SDK handles the required communication scaffolding, cutting down on per-channel plumbing.
- AI-agnostic by design: the README states the SDK does not restrict you to a technology stack and lets you select one or more services, models, or agents.
- Multi-language with clean separation: C#/.NET, JavaScript, and Python each live in their own repository, so teams pick their existing stack while cross-cutting issues stay centralized here.
- First-class tooling for coding assistants: four agent-plugins, with agents-sdk-common covering Azure provisioning and az CLI OAuth setup and the .NET plugin covering Bot Framework and ActivityHandler-to-AgentApplication migration.
- Low entry barrier on licensing: no Microsoft 365 Copilot subscription is needed to start unless you target that channel or another subscription-gated client.
- The SDK source is not in this repository: implementations sit in Agents-for-net, Agents-for-js, and Agents-for-python, so you must identify your language repo first and then track two places.
- Thin installation documentation: no package install commands, runtime version, or dependency list appear in the README, so onboarding requires the language repos and official docs.
- Deep ecosystem coupling: the primary channels are Microsoft products such as M365 Copilot, Teams, and Copilot Studio, so targeting other conversational platforms means evaluating migration or adaptation work.
- Some capability depends on external tooling: agents-sdk-common relies on the az CLI for identity credentials and OAuth setup, and plugin installation is only documented for GitHub Copilot CLI or Claude Code.
- Concept-level descriptions: the README speaks of state, storage, activities, and events without naming concrete APIs or failure handling, so a real evaluation has to go through the samples and official docs.
How does this agent compare with similar options?
The README names several related but distinct options. Semantic Kernel is an SDK that integrates LLMs such as OpenAI, Azure OpenAI, and Hugging Face with conventional languages like C#, Python, and Java by letting you define plugins that chain together in a few lines of code. Azure AI Foundry supplies the core backend agent functionality — reasoning, retrieval augmentation, observability, among other core functions — and developers can use the Azure AI Agent Service or assemble their own agent functionality from individual components. Copilot Studio is an agent building platform that can be combined with the Microsoft 365 Agents SDK to integrate your agent into applications and create multi-agent patterns. The README frames these as complementary: the Agents SDK gathers core components so developers can create, manage, and use AI Services and third-party SDKs for orchestration and custom agent logic.
Key facts side by side with the most closely related agents.
| Agent | Source review | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|
| Microsoft 365 Agents SDK This agent | 34 · Major gaps | ★ 1.1k | 5d ago | TypeSpec | — |
| Microsoft Agent Framework | 49 · Major gaps | ★ 14k | today | Python | OpenAI API |
| Rig | 70 · Some gaps | ★ 8.7k | today | Rust | OpenAI API |
| tRPC-Agent-Go | 53 · Major gaps | ★ 1.8k | 1d ago | Go | OpenAI API |
How does FollowAgents rate this agent?
Why each dimension lost points
least_privilege: CI workflows explicitly declare permissions: contents: read, and pullrequestlabeler grants only contents: read, pull-requests: write, issues: write, gated on github.repository_owner == 'microsoft' — good least-privilege practice, but only at workflow level; the SDK runtime permission model is not shown, so 1. user_confirmation: no statement anywhere about user confirmation for destructive actions, 0. data_flow_transparency: README says developers choose their own AI services and the SDK is AI-agnostic, but does not describe data flows, telemetry, or logging paths, 1. sensitive_data_handling: SECURITY.md provides a vulnerability reporting channel and coordinated disclosure policy, but no key, credential, or PII handling guidance, 1. dependency_security: devDependencies use ^ ranges with no lockfile evidence; CI actions are pinned by SHA (good), but dependencies themselves are not pinned, 1. external_effects: the SDK sends messages to Teams/M365 channels, an external side effect, with no idempotency or blast-radius discussion, 1. rollback: no rollback, undo, or recovery mechanism described, 0. source_attribution: LICENSE names Microsoft Corporation and README covers trademark policy, clear attribution, 2.
self_consistency: README claims this repo is a jumping-off point to language repos, yet it also contains samples, agent-plugins, and CI — a tension between stated positioning and actual structure, 1. dependency_availability: package.json lists only devDependencies with no pinned versions or lockfile; CI relies on npm ci and external registry availability, 1. failure_messages: no error messages, troubleshooting, or diagnostic output examples in any file, 0.
audience_and_scenarios: README clearly targets C#/JS/Python developers and lists M365 Copilot, Teams, Web/Custom Apps scenarios, noting no M365 Copilot subscription is required to start, 2. capability_boundaries: describes the SDK as an agent container and AI-agnostic, but does not define unsupported capabilities or boundary conditions, 1. trigger_precision: agent-plugins claim automatic activation by language and task, but no trigger conditions, precedence, or conflict rules are given, 1. environment_fit: states Node 20 and Python 3.10 minimums and recommends VS Code extensions, but omits OS, network, and region requirements, 1.
information_architecture: README is well structured with quick start, language repo table, plugins, docs, contributing, and trademarks sections, 2. install_notes: only plugin install commands and a pointer to samples; no SDK package install, build, or run steps, 1. naming_stability: repo name Agents and Agents-for-* language repos are consistent, but no version or API stability commitment, 1. examples_and_faq: points to the samples folder but provides no in-file example code or FAQ, 1. known_limitations: no known limitations, unsupported scenarios, or caveats section, 0. license: full MIT license text with clear copyright holder, 3. versioning_changelog: no CHANGELOG, version number, or release notes, 0. maintenance_responsibility: SECURITY.md gives MSRC reporting channel and 24-hour response commitment; README directs language-specific issues to the corresponding repos — responsibility is fairly clear, 2.
output_usability: README offers doc links and plugin install commands but no runnable end-to-end example, 1. marginal_value: as an entry-point repo for a multi-language SDK it provides plugin and samples navigation, but the core libraries live elsewhere, limiting marginal value, 1. cost_benefit: onboarding requires jumping across multiple repos and installing plugins; benefit roughly matches cost, 1.
claim_traceability: most README claims trace to concrete links (docs, language repos, plugin paths), but without version or commit anchors, 1. cross_source_corroboration: README, package.json, and CI workflows corroborate each other on languages and toolchain, but no tests or build artifacts back the claims, 1. fact_inference_separation: README is largely descriptive and does not explicitly separate fact from inference or flag unverified content, 1.
- Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- This repo is an entry/navigation hub; the core SDK code lives in Agents-for-net, Agents-for-js, and Agents-for-python, so these findings do not represent those language repos' implementation quality.
- package.json contains only devDependencies with ^ ranges and no lockfile, so dependency supply-chain reproducibility is weak.
- README does not describe data flows, telemetry, logging, or sensitive-data handling; verify independently before enterprise integration.
- No CHANGELOG, version number, or known-limitations section, so upgrade and compatibility risk must be assessed independently.
- This is a static source review with no build or execution performed; all conclusions carry low confidence.