Microsoft Agent Framework 1.25: Python 3.11 and scoped sessions
Microsoft Agent Framework 1.25 for Python drops 3.10, caps MCP discovery and blocks shared sessions across users. Build one session per customer.
Microsoft's Agent Framework now refuses to let one customer's agent session run under another customer's identity. Version 1.25.0 for Python, released today, ships seven breaking changes. Most of them close gaps where agent state could leak between users or workflows. If you serve more than one customer from the same agent code, this release is about you.
What actually happened
Microsoft published agent-framework python-1.25.0 on GitHub on November 7. The changes that matter most:
- Python 3.11 or later. Every package drops Python 3.10. Old environments won't install the release.
- Sessions bound to one authorization scope. Live workflow executors and their sessions now belong to one caller. Cross-scope reuse fails with
WORKFLOW_SCOPE_CONFLICTbefore any model call. Microsoft's migration note: use a factory that builds a fresh workflow and session for each call, and setsingle_user=Trueonly when every caller is the same person. - No shared MCP sessions. Declarative workflows now open and close a new MCP protocol session for every handler call. The release notes call this a security fix that stops MCP state from crossing between workflows.
- Limits on MCP discovery. Tool and prompt discovery stops at 100 pages and 1,000 items per catalog. Framework-owned requests time out after 30 seconds by default.
- Tighter approvals. A bare approve-for-session on a URL prompt in the GitHub Copilot integration now means one-time approval, not a whole hostname. The MCP hosting package validates tool arguments before it calls the tool. Sandboxed code no longer sees raw host exception details by default.
- Renamed telemetry. Workflow spans now follow the OpenTelemetry GenAI conventions:
workflow.runfilters becomegen_ai.operation.name == "invoke_workflow".
Why scoped agent sessions matter for your business
A small business with an agent usually means one agent serving many people: customers in a support chat, staff in a portal, clients in a dashboard. The bug this release blocks is easy to write. You build the workflow once at startup, cache it, and every request shares it. Then one user's context, tools or MCP state ends up in another user's run.
Microsoft's fix is the right default: one session per customer, built per request. The framework guard covers live executors and sessions. It does not cover state you load from shared storage or custom tools that call workflows, so check those yourself.
Before you upgrade:
- Move to Python 3.11+ in every environment, CI included.
- Find any cached workflow shared across users and switch it to a
workflow_factory. - Fix your dashboards. Alerts that filter on
workflow.runspan names will go quiet without an error. - Check big MCP servers. Raise
max_discovery_itemsif a trusted server lists more than 1,000 tools.
Key takeaways
- Agent Framework python-1.25.0 requires Python 3.11 or later
- Workflow sessions are now bound to one authorization scope; cross-user reuse fails before the model call
- Declarative workflows open a fresh MCP session per call to stop state sharing
- MCP discovery is capped at 100 pages and 1,000 items, with a 30-second default timeout
- Workflow telemetry span names changed; update dashboards and alerts
One agent, many customers, zero crossover. We build multi-user agents with per-request sessions, scoped credentials and telemetry you can actually alert on. See what we've shipped, or ask us to audit how your agent separates users.
Sources: Microsoft Agent Framework python-1.25.0 release notes, Microsoft Agent Framework repository.
- #microsoft-agent-framework
- #ai-agents
- #mcp
- #python
- #multi-tenant
Tommy Rush — Founder, Rush Commerce
Operator turned builder. 15+ years running operations — now shipping the systems businesses run on. More
Get The Rush Report weekly — one email, zero fluff.
Keep reading
WordPress CVE-2026-119977: the patch update itself is exposed
WordPress CVE-2026-119977 is exploited and the 7.1.4 fix can expose your site one last time. Block wp-content/upgrade first, then update, then check.
Read itSageMaker GPU partitioning with NVIDIA MIG: up to 7 models per GPU
SageMaker Inference now splits one GPU into up to seven MIG partitions. AWS measured 18-34% lower cost per million tokens, but only above a crossover.
Read it