
Microsoft Agent Framework review
Microsoft's framework for agents and multi-agent workflows in Python and .NET, the successor to AutoGen and Semantic Kernel
Verdict
Microsoft Agent Framework replaces both AutoGen and Semantic Kernel, and it is the natural choice for .NET shops and teams already on Azure. It reached 1.0 in April 2026 and covers workflows, checkpoints, approvals and tracing without a paid tier. Many samples assume Azure, and the DevUI is still in beta.
Best for
.NET and Python teams on Azure, and anyone moving off AutoGen or Semantic Kernel
Not for
TypeScript teams, or teams that want a hosted visual builder
Pros
- Python and .NET with consistent APIs
- Graph workflows with checkpointing, human-in-the-loop and time travel
- OpenTelemetry tracing built in, with no paid service needed
- Migration guides from AutoGen and Semantic Kernel
Cons
- Most samples and quickstarts start from Azure and Foundry
- DevUI is still a beta package
- No TypeScript version, and Go is in preview
Is Microsoft Agent Framework right for your project?
Describe what you need and AI will check the fit against this review.
Microsoft Agent Framework features and capabilities
Graph workflows
Agents and functions connect through typed edges in sequential, concurrent, handoff and group patterns, so multi-agent processes run in a fixed, testable order.
Checkpoints and time travel
Workflows save checkpoints you can resume from or rewind to, which helps with long processes and with debugging a bad step.
Tools, MCP and approvals
Agents call functions and MCP servers, and calls can wait for a person's approval, which keeps risky actions under control.
OpenTelemetry tracing
Agent runs, model calls and tool calls are emitted as OpenTelemetry spans, so they show up in Azure Monitor, Aspire or any OTel backend you already run.
DevUI for local testing
A local web UI lets developers chat with agents, run workflows and inspect events while they build.
- Any model providerWorks with OpenAI, Anthropic, Google and local models, not one vendor
- Yes
- Multi-agentSeveral agents can hand off or work together
- YesSequential, concurrent, handoff and group chat patterns
- MCP toolsCan use tools from MCP servers
- Yes
- Durable stateSaves progress so a run can resume after a crash or a pause
- YesWorkflow checkpoints
- Human approvalCan pause for a person to approve or edit before continuing
- Yes
- TracingShows each step, tool call and token use
- YesOpenTelemetry to any backend
- Visual studioA UI to build, run or debug agents
- YesDevUI, a local web UI, in beta
At a glance
- Type
- Agent and workflow framework
- Stack
- Python 3.10+ / .NET
- SSO
- No
- Roles and permissions
- No
- Audit logs
- No
Free vs paid editions
What you get when you self-host, and what needs a paid plan.
Everything in the framework is free under MIT, including workflows with checkpoints, human-in-the-loop, OpenTelemetry tracing and the DevUI. There is no paid edition. Microsoft sells hosting through Foundry, where hosted agents are billed by container compute and you pay for models separately.
Self-hosting Microsoft Agent Framework
The Python packages need Python 3.10 or later, and the .NET packages install from NuGet.
New cloud server to ready
1 min 38 s
Research task, median of 3
20.3 s, 362 MB peak
Version tested
1.22.0 · Oct 19, 2026
- Installing the full agent-framework package took 78 seconds and peaked at 362 MB, the longest install of the seven.
- The default OpenAIChatClient calls OpenAI's stateful Responses API, so OpenRouter rejected it with previous_response_id is not supported. OpenAIChatCompletionClient, from the same package, works with any OpenAI-compatible provider.
- With that client all three runs passed in about 20 seconds, at $0.0007 to $0.0023 each. The answer text also kept the agent's interim remarks, such as saying it would check another page, ahead of the final answer.
# tools.py holds the shared web_search and read_page functions over Geekflare's APIs,
# common.py the model name, OpenRouter key, system prompt and task.
import asyncio
from agent_framework.openai import OpenAIChatCompletionClient
import tools
from common import BASE_URL, KEY, MODEL, SYSTEM
# OpenAIChatClient uses OpenAI's stateful Responses API, which OpenRouter doesn't
# support; the Chat Completions client works with any OpenAI-compatible provider.
client = OpenAIChatCompletionClient(MODEL, api_key=KEY, base_url=BASE_URL)
agent = client.as_agent(name="Researcher", instructions=SYSTEM, tools=[tools.web_search, tools.read_page])
loop = asyncio.new_event_loop()
def run(task: str) -> str:
result = loop.run_until_complete(agent.run(task, options={"temperature": 0, "max_tokens": 1024}))
return result.textThe latest stable release is Scrapy 2.19.0, released 10 September 2026 (the docs list it as 2026-09-10). The GitHub releases page marks it as "Latest."
Two notable changes:
- A new RemoteControl extension lets you inspect and control a running crawl over HTTP.
- The default priority queue is now DownloaderAwarePriorityQueue.
Sources: https://docs.scrapy.org/en/latest/news.html and https://github.com/scrapy/scrapy/releases. I could only see part of the release notes, so the second change comes from a search snippet of the GitHub release page rather than the full notes.