Python: Add a BackgroundAgentsProvider for python#6069
Conversation
Python Test Coverage Report •
Python Unit Test Overview
|
||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Pull request overview
Adds a Python BackgroundAgentsProvider to the core harness so a “main” agent can start and manage concurrent background sub-agent runs (start, wait, fetch results, continue, clear), along with a dedicated test suite and public exports.
Changes:
- Introduces
BackgroundAgentsProvider,BackgroundTaskInfo, andBackgroundTaskStatusinagent_framework/_harness/_background_agents.py. - Exports the new provider/types (and default source IDs) from
agent_framework/__init__.py. - Adds comprehensive harness-level tests for tool injection and task lifecycle behaviors.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| python/packages/core/agent_framework/_harness/_background_agents.py | New harness provider implementing background task orchestration via injected tools and session state. |
| python/packages/core/agent_framework/init.py | Exposes the new provider/types and default IDs as part of the public Python surface. |
| python/packages/core/tests/core/test_harness_background_agents.py | New test suite covering constructor validation, tool injection, and task lifecycle operations. |
There was a problem hiding this comment.
Automated Code Review
Reviewers: 4 | Confidence: 91%
✓ Correctness
The implementation is generally well-structured, but contains a correctness bug in
_finalize_task: callingasyncio.Task.exception()on a cancelled task raisesCancelledErrorrather than returning it, making the cancellation-handling branch dead code and causing an unhandled exception if a task is ever cancelled.
✓ Security Reliability
The BackgroundAgentsProvider implementation has one concrete reliability bug:
_finalize_taskcallscompleted_task.exception()before checkingcompleted_task.cancelled(), but Python'sasyncio.Task.exception()raisesCancelledErroron cancelled tasks (per Python docs), making the cancellation branch unreachable and causing an unhandled exception to propagate. Additionally,self._runtimeentries are never cleaned up, causing a memory leak for long-lived applications with many sessions.
✓ Test Coverage
The test suite provides solid coverage of individual tool behaviors (start, wait, get results, continue, clear) including error cases and validation. However, for a feature whose core value proposition is concurrent background task execution, there are notable gaps: no test exercises multiple concurrent tasks with wait_for_first_completion (only a single task is ever awaited), no test covers the LOST task status path, no test verifies session isolation between different sessions sharing the same provider, and the continue_task test doesn't verify the continued task actually produces retrievable results.
✗ Design Approach
I found one design-level issue: the provider keeps child-agent session handles only in provider memory, so background tasks cannot survive the normal
AgentSessionpersistence/restore lifecycle that the rest of the framework is built around.
Flagged Issues
-
python/packages/core/agent_framework/_harness/_background_agents.pystores child sessions only in_runtime.background_sessionsand never persists a reconstructable handle. When that in-memory runtime is absent,_refresh_task_state()turns running tasks intoLOSTandbackground_agents_continue_task()hard-fails. This conflicts with the session contract that onlyAgentSession.stateis persisted across restores, and bypasses the existing recovery path viaget_session(service_session_id, ...).
Automated review by westey-m's agents
Updated [Microsoft.Agents.AI](https://github.com/microsoft/agent-framework) from 1.0.0 to 1.8.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Agents.AI's releases](https://github.com/microsoft/agent-framework/releases)._ ## 1.7.0 ## [1.7.0] - 2026-05-28 ### Added - **agent-framework-core**: Add `HarnessAgent` and background-agents harness provider ([#6041](https://github.com/microsoft/agent-framework/pull/6041), [#6069](https://github.com/microsoft/agent-framework/pull/6069)) - **agent-framework-core**, **agent-framework-a2a**: Add `A2AAgentSession` with referenced task IDs and input-required support ([#5980](https://github.com/microsoft/agent-framework/pull/5980)) - **agent-framework-foundry**: Add experimental prompt-agent conversion and deployment APIs ([#5959](https://github.com/microsoft/agent-framework/pull/5959)) - **agent-framework-declarative**: Add Foundry Toolbox MCP invocation support and sample ([#5933](https://github.com/microsoft/agent-framework/pull/5933)) - **samples**: Add hosting samples overview README ([#5407](https://github.com/microsoft/agent-framework/pull/5407)) ### Changed - **agent-framework-core**: Align TodoProvider tool names with the C# implementation ([#6107](https://github.com/microsoft/agent-framework/pull/6107)) - **agent-framework-core**: Align ModeProvider tool names and instructions ([#6071](https://github.com/microsoft/agent-framework/pull/6071)) - **agent-framework-chatkit**: Raise the `openai-chatkit` dependency floor to `>=1.6.4` to match the current typed API usage. - **agent-framework-declarative**: [BREAKING] Remove Python-only declarative actions and rename alias kinds to C# canonical names ([#6126](https://github.com/microsoft/agent-framework/pull/6126)) - **tests**: Replace deprecated `asyncio.iscoroutinefunction` usage in DevUI cleanup-hook tests ([#4563](https://github.com/microsoft/agent-framework/pull/4563)) ### Fixed - **agent-framework-core**: Point `@experimental` warnings at user code ([#5996](https://github.com/microsoft/agent-framework/pull/5996)) - **agent-framework-declarative**: Fix Foreach body exit wiring ([#6050](https://github.com/microsoft/agent-framework/pull/6050)) - **agent-framework-devui**: Fix streaming memory growth regression ([#6038](https://github.com/microsoft/agent-framework/pull/6038)) - **agent-framework-foundry**: Pass default headers to Foundry agents ([#6040](https://github.com/microsoft/agent-framework/pull/6040)) - **agent-framework-foundry-hosting**: Fix hosted handoff argument serialization ([#5861](https://github.com/microsoft/agent-framework/pull/5861)) - **agent-framework-foundry-hosting**: Allow hosted checkpoints to restore `MessageRole` values ([#6049](https://github.com/microsoft/agent-framework/pull/6049)) - **agent-framework-openai**: Preserve citation `get_url` metadata ([#6037](https://github.com/microsoft/agent-framework/pull/6037)) - **agent-framework-openai**: Guard Chat Completions streaming against null deltas ([#5734](https://github.com/microsoft/agent-framework/pull/5734)) - **agent-framework-openai**: Read response headers defensively for stream wrappers without `.headers` ([#6028](https://github.com/microsoft/agent-framework/pull/6028), [#6029](https://github.com/microsoft/agent-framework/pull/6029)) - **samples**: Fix sequential workflow sample output handling ([#5976](https://github.com/microsoft/agent-framework/pull/5976)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.6.0...python-1.7.0 ## 1.6.1 ## What's Changed * .NET: Add hyperlight to release slnf by @westey-m in https://github.com/microsoft/agent-framework/pull/5695 * .NET: Update FoundryAgent to address HostedAgents strict URL routing by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5677 * .NET: Add IChatMessageInjector for message injection during function loop by @westey-m in https://github.com/microsoft/agent-framework/pull/5679 * .NET: Foundry.Hosting IT - eliminate MSBuild parallel-output races by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5725 * .NET: Hosted-Files sample + AgentSessionFiles SDK companion + integration test by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5698 * .NET: Simplify ClientHeadersScope to rely on AsyncLocal natural restoration by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5676 * .NET: Hosted Agents - RAG Sample with Azure AI Search (#5693) by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5701 * .NET: Fix/per service input persistence on stream error by @alliscode in https://github.com/microsoft/agent-framework/pull/5744 * .NET: Remove Foundry Toolbox server-side tools support by @alliscode in https://github.com/microsoft/agent-framework/pull/5753 * .NET: DevUI: add configurable access controls for the DevUI HTTP surface by @moonbox3 in https://github.com/microsoft/agent-framework/pull/5739 * .NET: Add A2A input-request content for human-in-the-loop scenarios by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5743 * .NET fix: Synthesized Handoff FunctionResult is never sent to agent by @lokitoth in https://github.com/microsoft/agent-framework/pull/5718 * .NET: Refactor harness console rendering by @westey-m in https://github.com/microsoft/agent-framework/pull/5751 * .NET: fix: align Anthropic Extensions AI version by @danyalahmed1995 in https://github.com/microsoft/agent-framework/pull/5709 * .NET: declare Magentic protocol messages by @he-yufeng in https://github.com/microsoft/agent-framework/pull/5778 * .NET: Feat/dotnet shell tool by @alliscode in https://github.com/microsoft/agent-framework/pull/5604 * .NET: Fix OpenAIResponsesAgentClient to include agentName in endpoint path by @giles17 in https://github.com/microsoft/agent-framework/pull/5748 * .NET: CI hardening — split Functions tests, re-enable skipped integration tests by @giles17 in https://github.com/microsoft/agent-framework/pull/5717 * .NET: Add harness agent package by @westey-m in https://github.com/microsoft/agent-framework/pull/5782 * .NET: [Breaking Change] Auto-wire ChatClient with OpenTelemetryChatClient in OpenTelemetryAgent by @Copilot in https://github.com/microsoft/agent-framework/pull/5750 * Dotnet: Fixing FoundryToolboxMcp sample to use created toolbox by @alliscode in https://github.com/microsoft/agent-framework/pull/5786 * .NET: fix: avoid mutating handoff message roles by @he-yufeng in https://github.com/microsoft/agent-framework/pull/5808 * .NET: feat(evals): add ground_truth/expected_output support for workflow evaluation by @alliscode in https://github.com/microsoft/agent-framework/pull/5755 * .NET: Update version for release. by @alliscode in https://github.com/microsoft/agent-framework/pull/5789 * .NET: Fix build issue CA1873 in DevUI by using LoggerMessage source generator by @alliscode in https://github.com/microsoft/agent-framework/pull/5831 * [BREAKING] Python: DevUI: tighten default access controls and CORS posture by @moonbox3 in https://github.com/microsoft/agent-framework/pull/5740 * [BREAKING] Python: Align file skill folder discovery with agentskills.io spec by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5807 * .NET: Filestore improvements by @westey-m in https://github.com/microsoft/agent-framework/pull/5842 * .NET: DevUI: quarantine flaky discovery integration test (#5845) by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5846 * .NET: Update version to 1.6.1 for release by @westey-m in https://github.com/microsoft/agent-framework/pull/5843 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.5.0...dotnet-1.6.1 ## 1.6.0 ## [1.6.0] - 2026-05-21 ### Added - **agent-framework-core**: Shell tool with support for local and Docker execution ([#5664](https://github.com/microsoft/agent-framework/pull/5664)) - **agent-framework-monty**: New Monty-backed CodeAct provider package ([#5915](https://github.com/microsoft/agent-framework/pull/5915)) - **agent-framework-foundry**: Add experimental hosted tool factories on `FoundryChatClient` ([#5958](https://github.com/microsoft/agent-framework/pull/5958)) - **agent-framework-foundry**: Include tool definitions for Foundry agent evals ([#5974](https://github.com/microsoft/agent-framework/pull/5974)) - **agent-framework-a2a**: Use non-streaming transport and `return_immediately` for background ops ([#5963](https://github.com/microsoft/agent-framework/pull/5963)) ### Changed - **agent-framework-core**, **agent-framework-foundry**: [BREAKING] Enable instrumentation by default ([#5865](https://github.com/microsoft/agent-framework/pull/5865)) - **agent-framework-foundry**: Show more authentication methods in Foundry Toolbox MCP ([#5719](https://github.com/microsoft/agent-framework/pull/5719)) ### Fixed - **agent-framework-core**: Skip MCP prompt loading when unsupported ([#5370](https://github.com/microsoft/agent-framework/pull/5370)) ## 1.5.0 ## What's Changed * .NET: feat: Implement message filtering to exclude non-portable content typ… by @tarockey in https://github.com/microsoft/agent-framework/pull/5410 * .NET: Add allow listing for WebBrowsingTool by @westey-m in https://github.com/microsoft/agent-framework/pull/5605 * .NET: fix: JSON Serialization issue with MultiPartyConversation by @lokitoth in https://github.com/microsoft/agent-framework/pull/5653 * .NET: Improve Todo multithreading and inject todos into message list by @westey-m in https://github.com/microsoft/agent-framework/pull/5655 * .NET: fix: Add missing Workflows "Shared" sources to solution by @lokitoth in https://github.com/microsoft/agent-framework/pull/5656 * .NET: Fix QuestionExecutor looping after GotoAction re-entry in declarative workflows by @peibekwe in https://github.com/microsoft/agent-framework/pull/5635 * .NET: Fix YAML block scalar parsing for file skills by @tejakusireddy in https://github.com/microsoft/agent-framework/pull/5610 * .NET: Add hosted agent observability sample by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5660 * .NET: Bump MEAI to 10.5.1 and add Foundry per-call x-client header support by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5652 * .NET: Fix flaky declarative test by @peibekwe in https://github.com/microsoft/agent-framework/pull/5669 * .NET: Add Foundry.Hosting.IntegrationTests by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5598 * .NET: Issue 5662 by @alliscode in https://github.com/microsoft/agent-framework/pull/5668 * .NET: Support reasoning events in AGUI by @jeffinsibycoremont in https://github.com/microsoft/agent-framework/pull/4953 * .NET: feat: Update Github Copilot SDK to 1.0.0-beta.2 by @lokitoth in https://github.com/microsoft/agent-framework/pull/5699 * .NET: feat: Implement Magentic Orchestration for .NET by @lokitoth in https://github.com/microsoft/agent-framework/pull/5595 * .NET: Foundry.Hosting IT - avoid MSB3026 in publish step by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5689 * .NET: Python: Add dotnet integration test report to CI by @giles17 in https://github.com/microsoft/agent-framework/pull/5515 * .NET: Non-thread-safe sequence number generation may cause duplicate or out-of-order IDs by @tuanaiseo in https://github.com/microsoft/agent-framework/pull/5320 * .NET: Fix typo: sesionElement -> sessionElement by @XiongHaoTrigger in https://github.com/microsoft/agent-framework/pull/5674 * .NET: Mark Magentic Orchestration Experimental by @lokitoth in https://github.com/microsoft/agent-framework/pull/5704 * .NET: Fix function_call_output.output to be a JSON string on the wire by @alliscode in https://github.com/microsoft/agent-framework/pull/5705 * .NET: Update version for release by @lokitoth in https://github.com/microsoft/agent-framework/pull/5703 ## New Contributors * @tarockey made their first contribution in https://github.com/microsoft/agent-framework/pull/5410 * @tejakusireddy made their first contribution in https://github.com/microsoft/agent-framework/pull/5610 * @jeffinsibycoremont made their first contribution in https://github.com/microsoft/agent-framework/pull/4953 * @tuanaiseo made their first contribution in https://github.com/microsoft/agent-framework/pull/5320 * @XiongHaoTrigger made their first contribution in https://github.com/microsoft/agent-framework/pull/5674 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.4.0...dotnet-1.5.0 ## 1.4.0 ## What's Changed * .NET: Bump OpenTelemetry packages to 1.15.3 by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5478 * .NET: Support returning durable workflow results from HTTP trigger endpoint by @kshyju in https://github.com/microsoft/agent-framework/pull/5321 * .NET: [Breaking] Support string[] arguments for file-based skill scripts by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5475 * .NET: Add HttpRequestAction support to declarative workflows by @peibekwe in https://github.com/microsoft/agent-framework/pull/5474 * .NET: Add declarative HttpRequestAction sample by @peibekwe in https://github.com/microsoft/agent-framework/pull/5572 * .NET: dotnet: Add hosted-agent User-Agent supplement to outgoing requests by @alliscode in https://github.com/microsoft/agent-framework/pull/5453 * .NET: Add dedicated Foundry.Hosting UnitTest project by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5592 * .NET: Harness Feature branch by @westey-m in https://github.com/microsoft/agent-framework/pull/5310 * .NET: Hosting updates to declarative workflows by @alliscode in https://github.com/microsoft/agent-framework/pull/5589 * docs: enhance README with 1.0 features and improved structure by @chetantoshniwal in https://github.com/microsoft/agent-framework/pull/5534 * .NET: Update version for release by @westey-m in https://github.com/microsoft/agent-framework/pull/5636 * .NET: Add Microsoft.Agents.AI.Hyperlight package for CodeAct integration (.NET) by @eavanvalkenburg in https://github.com/microsoft/agent-framework/pull/5329 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.3.0...dotnet-1.4.0 ## 1.3.0 ## What's Changed * .NET: Add dynamic tool expansion sample by @westey-m in https://github.com/microsoft/agent-framework/pull/5425 * .NET: Update Aspire package to be preview by @westey-m in https://github.com/microsoft/agent-framework/pull/5444 * .NET: Fix off-thread RunStatus race where GetStatusAsync can return Running after ResumeAsync halts by @peibekwe in https://github.com/microsoft/agent-framework/pull/5412 * .NET: Update versions for release by @westey-m in https://github.com/microsoft/agent-framework/pull/5449 * .NET: Add streaming support to A2A agent handler by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5427 * .NET: dotnet: Add server-side Foundry Toolbox support and fix SDK beta.4 br… by @alliscode in https://github.com/microsoft/agent-framework/pull/5450 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.2.0...dotnet-1.3.0 ## 1.2.2 ## [1.2.2] - 2026-04-29 ### Added - **agent-framework-azure-contentunderstanding**: New alpha package — Azure AI Content Understanding context provider that auto-analyzes file attachments (documents, images, audio, video) and injects structured results into the LLM context, with multi-document session state, configurable timeout, output filtering via `AnalysisSection`, and auto-registered `list_documents` / `get_analyzed_document` tools ([#4829](https://github.com/microsoft/agent-framework/pull/4829)) - **agent-framework-foundry-hosting**: Add hosted Durable Workflow support — propagate full conversation history to workflow agents and wire `Workflow.as_agent()` end-to-end via the foundry hosting layer ([#5531](https://github.com/microsoft/agent-framework/pull/5531)) ### Changed - **agent-framework-orchestrations**: [BREAKING] Standardize orchestration terminal outputs as `AgentResponse` so `Workflow.as_agent()` returns the final answer only; aligns sequential-approval (`with_request_info`) and concurrent (`intermediate_outputs=True`) flows on the same output contract ([#5301](https://github.com/microsoft/agent-framework/pull/5301)) - **agent-framework-core**, **agent-framework-declarative**: Preserve `Workflow.run()` shared state across calls so multi-turn `WorkflowAgent` invocations retain context, accept `list[Message]` input in the declarative start executor, and coerce `Enum` values when serializing PowerFx symbols ([#5531](https://github.com/microsoft/agent-framework/pull/5531)) - **dependencies**: Update workspace package dependencies and preserve `mcp[ws]` / `uvicorn[standard]` extras through override-dependencies in `/python` ([#5555](https://github.com/microsoft/agent-framework/pull/5555)) ### Fixed - **agent-framework-core**: Fix observability spans not being correctly nested when using streaming ([#5552](https://github.com/microsoft/agent-framework/pull/5552)) - **agent-framework-openai**: Fix `file_search` citations breaking the assistant-message history roundtrip — skip `hosted_file` content in the assistant role so the Responses API no longer rejects `input_file` ([#5557](https://github.com/microsoft/agent-framework/pull/5557)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.2.1...python-1.2.2 ## 1.2.1 ## [1.2.1] - 2026-04-28 ### Added - **agent-framework-foundry-hosting**: Add file data type support to hosted-agent Responses, refresh `foundry-hosted-agents` samples, and add response test coverage ([#5485](https://github.com/microsoft/agent-framework/pull/5485)) - **samples**: Add `requirements.txt` and `.env.example` to the `a2a/` hosting sample for pip-based setup ([#5510](https://github.com/microsoft/agent-framework/pull/5510)) ### Changed - **dependencies**: Update `rich` requirement from `<15.0.0,>=13.7.1` to `>=13.7.1,<16.0.0` in `/python` ([#5227](https://github.com/microsoft/agent-framework/pull/5227)) - **dependencies**: Bump `prek` from `0.3.8` to `0.3.9` in `/python` ([#5228](https://github.com/microsoft/agent-framework/pull/5228)) - **dependencies**: Bump `python-multipart` from `0.0.22` to `0.0.26` in `/python` ([#5286](https://github.com/microsoft/agent-framework/pull/5286)) - **dependencies**: Bump `pyasn1` from `0.6.2` to `0.6.3` in `/python` ([#4748](https://github.com/microsoft/agent-framework/pull/4748)) - **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in `/python/packages/ag-ui` ([#5461](https://github.com/microsoft/agent-framework/pull/5461)) - **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in `/python/packages/devui` ([#5492](https://github.com/microsoft/agent-framework/pull/5492)) - **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in `/python/packages/lab` ([#5470](https://github.com/microsoft/agent-framework/pull/5470)) - **dependencies**: Bump `uv` from `0.11.3` to `0.11.6` in `/python/packages/lab` ([#5469](https://github.com/microsoft/agent-framework/pull/5469)) - **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in `/python/packages/devui/frontend` ([#5127](https://github.com/microsoft/agent-framework/pull/5127)) - **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in `/python/samples/05-end-to-end/chatkit-integration/frontend` ([#5126](https://github.com/microsoft/agent-framework/pull/5126)) - **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in `/python/packages/devui/frontend` ([#5484](https://github.com/microsoft/agent-framework/pull/5484)) - **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in `/python/samples/05-end-to-end/chatkit-integration/frontend` ([#5491](https://github.com/microsoft/agent-framework/pull/5491)) - **dependencies**: Bump `postcss` from `8.5.6` to `8.5.12` in `/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend` ([#5527](https://github.com/microsoft/agent-framework/pull/5527)) - **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in `/python/packages/devui/frontend` ([#4921](https://github.com/microsoft/agent-framework/pull/4921)) - **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in `/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend` ([#4936](https://github.com/microsoft/agent-framework/pull/4936)) ### Fixed - **agent-framework-core**: Prevent `inner_exception` from being lost in `AgentFrameworkException` ([#5167](https://github.com/microsoft/agent-framework/pull/5167)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.2.0...python-1.2.1 ## 1.2.0 ## Changes: * f2b215a2f6d4767fd37b17dd33195100ea2e498f .NET [WIP] Foundry Hosted Agents Support (#5312) [ #5091, #5287, #5278, #5281, #5316, #5336, #5341, #5367, #5368, #5371, #5374, #5406, #5408 ] * 57fa8ea9022ac9ec39fb5ececb020aa042599c8f Python: Fix OpenAIEmbeddingClient to use AsyncOpenAI for /openai/v1 endpoints (#5137) [ #5068 ] * aa582d021d69dd3b047d7664ced090dcc08b56f2 Python: feat(evals): add ground_truth support for similarity evaluator (#5234) * 8f17067383154e87e3a3c8ae673c7b5f1cf71add .NET: Update .NET package version 1.2.0 (#5364) * 267351b7607595cfcb2d64c739587bc50a476e2f .NET: Expand Workflow Unit Test Coverage (#5390) * adcd2d33f5e32be85ea141fc8cc6fbe590aa0981 .NET: Declarative workflows - Gracefully handle agent scenarios when no response is returned (#5376) * d5777bc546ba48652d85cec6093b445965533a4a fix: Duplicate CallIds cause Handoff Message Filtering to fail (#5359) * b6b191ad9c2ddaaa8a647419135f01a2d3fce73a Python: Add second approval-required tool (set_stop_loss) to concurrent_builder_tool_approval sample (#4875) [ #4874 ] * 2c8036779c20e5fa2feb6304c01e28c594e801a9 Python: Bump versions for a release. Update CHANGELOG (#5385) * ce8b6305d8e7280ac9d22226a17e2e4f0828ef97 Python: Foundry hosted agent V2 (#5379) [ #5177, #5215, #5235, #5261, #5281, #5284, #5298, #5372, #5378 ] <details><summary><b>See More</b></summary> * 07f4c8a8d66d2fba40bdd086f16cc6dca059d054 Python: Expose forwardedProps to agents and tools via session metadata (#5264) [ #5239 ] * 04aaf0c1fe6023a579a334f9d2afe5b79ca497f0 Python: Add support for Foundry Toolboxes (#5346) * 3e54a689fc96d681a072fe7e7cfc445909dac74b Python: Add search tool content for OpenAI responses (#5302) * 60af59ba8b3c871065d0a288f21bfd7f0d6be3c1 .NET: Features/3768-devui-aspire-integration (#3771) * 69894eded89d6e8ebf7bdb75cd0d9da54ade8b21 Python: Flatten hyperlight execute_code output (#5333) * 495e1dad6bf3c62b14929805cfd5f0409c897876 Python: Fix CopilotStudioAgent to reuse conversation ID from existing session (#5299) [ #5285 ] * 5777ed26e62e721375f78c404b8df1dfbc322560 .NET: fix: Add session support for Handoff-hosted Agents (#5280) * 52303a8d07e8f9f2c3f056d969d99a9062c06219 .NET: Add Code Interpreter container file download samples (#5014) [ #3081 ] * c85d24da440ebe5266852f6356aecdadc41379c6 .NET: Fix declarative resume edge predicates to recognize both direct and PortableValue-wrapped forms after checkpoint restore (#5323) * b03cb324d5cc5e91a55b5eb9045b8ead244aaf11 Python: Add Hyperlight CodeAct package and docs (#5185) * dbf935b4e30cf9ae2553cad54f6bc09668f7eb62 .NET: fix: Foundry Agents without description in Handoff (#5311) * ca580a8316a904e947e48aaba8f3c00eb738ae36 .NET: Add error checking to workflow samples (#5175) * 101e07b0610e2a73e0c369be7e81907a44fb243f .NET: Add Handoff sample (#5245) * aee1acbf8baeb9fb3b3f196975aae9e7f7481096 .NET: Foundry Evals integration for .NET (#4914) [ #5269 ] * 91e34358eb4f2643b13537b470d8ea0aeaec7307 Python: Feat: Add finish_reason support to AgentResponse and AgentResponseUpdate (#5211) [ #4622 ] * 90a633967ca60601fc696d335d770f9f05e236e2 Python: Fix Gemini client support for Gemini API and Vertex AI (#5258) * c14beedb3af8bdee168e3a06a245a5b9d8fa5f75 test: Add Handoff composability test (#5208) * 43d98974d3994486a35602467efcffb85839ce66 fix: propagate A2A metadata with namespaced key in additional_properties (#5240) (#5256) * 60da0ffb4803e0db18d3d3bde8e008eb4277882c .NET: Improve local release build perf by only formatting for one build target framework (#5266) * a2044829b13659ac40f7f4112f74efcce15397cc .NET: Update Microsoft.Extensions.AI to 10.5.0 and OpenAI to 2.10.0 and remove unused refs (#5269) * 435c66e9c9f215fdea4b041da35e6ca774b63094 Python: Handle url_citation annotations in `FoundryChatClient` streaming responses (#5071) [ #5029 ] * 52d50be9e06456aa8dc4adb2525b0bbd4f60d4d3 Bump Anthropic SDK to 12.13.0 and Anthropic.Foundry to 0.5.0 (#5279) * d20f9b5f973b0b8f693f530a8e3c0f9d9c99bb94 Add AgentExecutorResponse.with_text() to preserve conversation history through custom executors (#5255) [ #5246 ] * 87a8fa2a9d0ffd3d0b4b31882e70c4f60462bb29 .NET: Fix intermittent checkpoint-restore race in in-process workflow runs (#5134) * 8f7fd9525d1bf24f9606779ba7f8d41b66ce2ff1 Python: Add OpenAI types to default checkpoint encoding allow list (#5297) * 69697065ab78502c5e58a7e6bc90ae14fdc46c20 Python: Add context_providers and description to `workflow.as_agent()` (#4651) * fe4cd3cddc99f157710296dad892bec427cae991 Revert to public MCP server and skip on transient upstream errors (#5296) * 611230cc8ebde031d6c15dbc15d7053ddf56b40c Python: improve misc-integration test robustness (#5295) * f112150cfbc4d514b21b60a81bbe5239b4b2c81f Python: bump misc-integration retry delay to 30s (#5293) * ff05c22c5853a51b83c05b6fdb3b8e982bbf3b31 Python: add experimental file history provider (#5248) * eab7f09d03387a2b393f9785963353c1a09e8b6b Forward provider config to SessionConfig in GitHubCopilotAgent (fixes #5190) (#5195) * 68b93641b6802abd2d00a5191cb16c6074d39fe1 Python: Bump agent-framework-devui to 1.0.0b260414 for release (#5259) * 2b251d904f1cb045ec3b7e13411cac3c1aa1e019 Python: Fix reasoning replay when store=False (#5250) * 485af07b8c21896b7f24a0313b5a226b3bd711f8 Python: Add GeminiChatClient (#4847) ... (truncated) ## 1.1.1 ## [1.1.1] - 2026-04-23 ### Added - **agent-framework-core**: Add `expected_output` ground-truth support to `evaluate_workflow` for similarity evaluators ([#5234](https://github.com/microsoft/agent-framework/pull/5234)) - **agent-framework-ag-ui**, **agent-framework-a2a**: Propagate `thread_id` and `forwarded_props` through AG-UI to A2A `context_id` ([#5383](https://github.com/microsoft/agent-framework/pull/5383)) - **samples**: Add second approval-required tool (`set_stop_loss`) to `concurrent_builder_tool_approval` sample ([#4875](https://github.com/microsoft/agent-framework/pull/4875)) - **agent-framework-core**: Add `SKIP_PARSING` sentinel for `FunctionTool.invoke` to bypass `Content`-wrapping and return raw function results ([#5424](https://github.com/microsoft/agent-framework/pull/5424)) ### Changed - **agent-framework-foundry-hosting**: Correct Development Status classifier from Beta (4) to Alpha (3) to match the package's lifecycle stage ([#5387](https://github.com/microsoft/agent-framework/pull/5387)) - **tests**: Add Python flaky test report workflow ([#5342](https://github.com/microsoft/agent-framework/pull/5342)) - **agent-framework-hyperlight**: Simplify host callback to pass raw Python results via `SKIP_PARSING`, switch `execute_code` input schema to a plain JSON-schema dict, and tighten public API surface ([#5424](https://github.com/microsoft/agent-framework/pull/5424)) ### Fixed - **agent-framework-openai**: Fix OpenAI Responses streaming to propagate `created_at` from the final `response.completed` event ([#5382](https://github.com/microsoft/agent-framework/pull/5382)) - **agent-framework-openai**: Fix `OpenAIEmbeddingClient` to use `AsyncOpenAI` for `/openai/v1` endpoints ([#5137](https://github.com/microsoft/agent-framework/pull/5137)) - **agent-framework-openai**: Exclude null `file_id` from `input_image` payload to prevent schema 400 errors ([#5125](https://github.com/microsoft/agent-framework/pull/5125)) - **agent-framework-foundry**: Reconcile Toolbox hosted-tool payloads with the Responses API ([#5414](https://github.com/microsoft/agent-framework/pull/5414)) - **agent-framework-ag-ui**: Pass client `thread_id` as `session_id` when constructing `AgentSession` ([#5384](https://github.com/microsoft/agent-framework/pull/5384)) - **agent-framework-hyperlight**: Thread-confine `WasmSandbox` interactions via per-entry `ThreadPoolExecutor` to eliminate the PyO3 `unsendable` panic when touched from asyncio worker threads ([#5424](https://github.com/microsoft/agent-framework/pull/5424)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.1.0...python-1.1.1 ## 1.1.0 ## Changes: * 3e864cdb4c6031cf93096fa6af4d927b31126d8a .NET: Update version to 1.1.0 (#5204) * 14d2ab3262580a383472b406d97b36cfd86b2787 Standardize file skills terminology on 'directory' (#5205) * e5f7b9c260961916e108ca10780988aeefd51662 .NET: Support reflection for discovery of resources and scripts in class-based skills (#5183) <details><summary><b>See More</b></summary> * 1dd828d25502a1d4b4facff8e278da0668b40d28 CHANGELOG Update with V1.0.0 Release (#5069) * 8348584ac29f91a2c5e5e3db05166add1bb7b2af VerifySamples: Filter projects to net10 only (#5184) * 6d6cb840aec8b85c6bb5e95dc680c8fdd6110394 .NET: Improve resilience of verify-samples by building separately and improving evaluation instructions (#5151) * 79afda1a6c4103baa5ae3a42b3004a9e1d28f892 Samples fixes (#5169) * a7a02c1abd87cdb69637aa6f51b98632b9b980c4 Fix test compat for entity key validation (#5179) * 7010dd7439d1fd8f377ad062c7483edb1da60118 .NET: Support custom types in skill resource and script functions (#5152) * e10d448ae29417f3aa107973ab7f7c2745cf7993 Fix handoff workflow context management and improve AG-UI demo (#5136) * 942cb04ccb5adb3726f292659a7b61b5d67681b6 .NET: Fix compaction chat history duplication bug (#5149) * e224f06e601a8ae16ea78c28f434848f332595a3 .NET: Update models used in dotnet samples to gpt-5.4-mini (#5080) * 826d8db84c25389defa7aa13caa2016689c1b975 .NET: fix: Concurrent Workflow Sample (#5090) * 4134c74060d37db60c600a5b748a4f7bfeb2ae41 Add CreateSessionAsync(conversationId) to FoundryAgent (#5144) [ #5138 ] * 86b49d800e9dc37df9d07f7924c9445ba5b8d2c2 Fix and simplify ComputerUse sample (#5075) * d73c06fa8c1bcb9dc3351d3c80f023d4192765b7 .NET: Align skill folder discovery with spec (#5078) * 746c7da216b9cf8d8affbfe40445fd6bcd3ae291 Revise agent examples in README.md (#5067) * d30103fee6b03e2322dc13d590ef43661692b7c9 .NET: Fix input signal issue during checkpoint restoration (#5085) * 55ae57c0ed403c10fc3520505198ca32e71e76d8 .NET: Add Message Delivery Callback Overloads to Executor (#5081) * d284d96a9ed6cbe9220837e139ccb7202e5b5659 fix: 04_MultiModelService sample (#5074) * d1a81159de1b51113c7a0357fdde14aebf1afb79 Bump Anthropic from 12.8.0 to 12.11.0 (#5055) * 9f0dbe5f8dc0c22861e761a26c4c6ed6e2436581 .NET: Improve workflow unit test coverage (#5072) * 3fc1d000265e0db1f434fa5617d6e641b58c61a7 .NET: skill as class (#5027) * e4defadc799cea13efa912e7ee21ce833a5a5c92 .NET: Add github actions workflow for verify-samples (#5034) This list of changes was [auto generated](https://msdata.visualstudio.com/Vienna/_build/results?buildId=214703013&view=logs).</details> ## 1.0.1 ## 1.0.1 - 2026-04-09 > [!IMPORTANT] > **Security hardening for `FileCheckpointStorage`:** Checkpoint deserialization now flows through a restricted unpickler by default, which only permits a built-in set of safe Python types and all `agent_framework` framework types. If your application stores custom types in checkpoints, pass their `"module:qualname"` identifiers via the new `allowed_checkpoint_types` constructor parameter — otherwise loads will raise `WorkflowCheckpointException`. See [Security Considerations](https://learn.microsoft.com/en-us/agent-framework/workflows/checkpoints?pivots=programming-language-python#security-considerations) for details and the opt-in format. ### Added - **samples**: Add sample documentation for two separate Neo4j context providers for retrieval and memory ([#4010](https://github.com/microsoft/agent-framework/pull/4010)) - **agent-framework-azure-cosmos**: Add Cosmos DB NoSQL checkpoint storage for Python workflows ([#4916](https://github.com/microsoft/agent-framework/pull/4916)) ### Changed - **docs**: Remove pre-release flag from agent-framework installation instructions ([#5082](https://github.com/microsoft/agent-framework/pull/5082)) - **samples**: Revise agent examples in `README.md` ([#5067](https://github.com/microsoft/agent-framework/pull/5067)) - **repo**: Update `CHANGELOG` with v1.0.0 release ([#5069](https://github.com/microsoft/agent-framework/pull/5069)) - **agent-framework-core**: [BREAKING] Fix handoff workflow context management and improve AG-UI demo ([#5136](https://github.com/microsoft/agent-framework/pull/5136)) - **agent-framework-core**: Restrict persisted checkpoint deserialization by default ([#4941](https://github.com/microsoft/agent-framework/pull/4941)) - **samples**: Bump `vite` from 7.3.1 to 7.3.2 in `/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend` ([#5132](https://github.com/microsoft/agent-framework/pull/5132)) - **python**: Bump `cryptography` from 46.0.6 to 46.0.7 ([#5176](https://github.com/microsoft/agent-framework/pull/5176)) - **python**: Bump `mcp` from 1.26.0 to 1.27.0 ([#5117](https://github.com/microsoft/agent-framework/pull/5117)) - **python**: Bump `mcp[ws]` from 1.26.0 to 1.27.0 ([#5119](https://github.com/microsoft/agent-framework/pull/5119)) ### Fixed - **agent-framework-core**: Raise clear handler registration error for unresolved `TypeVar` annotations ([#4944](https://github.com/microsoft/agent-framework/pull/4944)) - **agent-framework-openai**: Fix `response_format` crash on background polling with empty text ([#5146](https://github.com/microsoft/agent-framework/pull/5146)) - **agent-framework-foundry**: Strip tools from `FoundryAgent` request when `agent_reference` is present ([#5101](https://github.com/microsoft/agent-framework/pull/5101)) - **agent-framework-core**: Fix test compatibility for entity key validation ([#5179](https://github.com/microsoft/agent-framework/pull/5179)) - **agent-framework-openai**: Stop emitting duplicate reasoning content from `response.reasoning_text.done` and `response.reasoning_summary_text.done` events ([#5162](https://github.com/microsoft/agent-framework/pull/5162)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.0.0...python-1.0.1 Commits viewable in [compare view](https://github.com/microsoft/agent-framework/commits). </details> Updated [Microsoft.Agents.AI.OpenAI](https://github.com/microsoft/agent-framework) from 1.0.0 to 1.8.0. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Agents.AI.OpenAI's releases](https://github.com/microsoft/agent-framework/releases)._ ## 1.7.0 ## [1.7.0] - 2026-05-28 ### Added - **agent-framework-core**: Add `HarnessAgent` and background-agents harness provider ([#6041](https://github.com/microsoft/agent-framework/pull/6041), [#6069](https://github.com/microsoft/agent-framework/pull/6069)) - **agent-framework-core**, **agent-framework-a2a**: Add `A2AAgentSession` with referenced task IDs and input-required support ([#5980](https://github.com/microsoft/agent-framework/pull/5980)) - **agent-framework-foundry**: Add experimental prompt-agent conversion and deployment APIs ([#5959](https://github.com/microsoft/agent-framework/pull/5959)) - **agent-framework-declarative**: Add Foundry Toolbox MCP invocation support and sample ([#5933](https://github.com/microsoft/agent-framework/pull/5933)) - **samples**: Add hosting samples overview README ([#5407](https://github.com/microsoft/agent-framework/pull/5407)) ### Changed - **agent-framework-core**: Align TodoProvider tool names with the C# implementation ([#6107](https://github.com/microsoft/agent-framework/pull/6107)) - **agent-framework-core**: Align ModeProvider tool names and instructions ([#6071](https://github.com/microsoft/agent-framework/pull/6071)) - **agent-framework-chatkit**: Raise the `openai-chatkit` dependency floor to `>=1.6.4` to match the current typed API usage. - **agent-framework-declarative**: [BREAKING] Remove Python-only declarative actions and rename alias kinds to C# canonical names ([#6126](https://github.com/microsoft/agent-framework/pull/6126)) - **tests**: Replace deprecated `asyncio.iscoroutinefunction` usage in DevUI cleanup-hook tests ([#4563](https://github.com/microsoft/agent-framework/pull/4563)) ### Fixed - **agent-framework-core**: Point `@experimental` warnings at user code ([#5996](https://github.com/microsoft/agent-framework/pull/5996)) - **agent-framework-declarative**: Fix Foreach body exit wiring ([#6050](https://github.com/microsoft/agent-framework/pull/6050)) - **agent-framework-devui**: Fix streaming memory growth regression ([#6038](https://github.com/microsoft/agent-framework/pull/6038)) - **agent-framework-foundry**: Pass default headers to Foundry agents ([#6040](https://github.com/microsoft/agent-framework/pull/6040)) - **agent-framework-foundry-hosting**: Fix hosted handoff argument serialization ([#5861](https://github.com/microsoft/agent-framework/pull/5861)) - **agent-framework-foundry-hosting**: Allow hosted checkpoints to restore `MessageRole` values ([#6049](https://github.com/microsoft/agent-framework/pull/6049)) - **agent-framework-openai**: Preserve citation `get_url` metadata ([#6037](https://github.com/microsoft/agent-framework/pull/6037)) - **agent-framework-openai**: Guard Chat Completions streaming against null deltas ([#5734](https://github.com/microsoft/agent-framework/pull/5734)) - **agent-framework-openai**: Read response headers defensively for stream wrappers without `.headers` ([#6028](https://github.com/microsoft/agent-framework/pull/6028), [#6029](https://github.com/microsoft/agent-framework/pull/6029)) - **samples**: Fix sequential workflow sample output handling ([#5976](https://github.com/microsoft/agent-framework/pull/5976)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.6.0...python-1.7.0 ## 1.6.1 ## What's Changed * .NET: Add hyperlight to release slnf by @westey-m in https://github.com/microsoft/agent-framework/pull/5695 * .NET: Update FoundryAgent to address HostedAgents strict URL routing by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5677 * .NET: Add IChatMessageInjector for message injection during function loop by @westey-m in https://github.com/microsoft/agent-framework/pull/5679 * .NET: Foundry.Hosting IT - eliminate MSBuild parallel-output races by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5725 * .NET: Hosted-Files sample + AgentSessionFiles SDK companion + integration test by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5698 * .NET: Simplify ClientHeadersScope to rely on AsyncLocal natural restoration by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5676 * .NET: Hosted Agents - RAG Sample with Azure AI Search (#5693) by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5701 * .NET: Fix/per service input persistence on stream error by @alliscode in https://github.com/microsoft/agent-framework/pull/5744 * .NET: Remove Foundry Toolbox server-side tools support by @alliscode in https://github.com/microsoft/agent-framework/pull/5753 * .NET: DevUI: add configurable access controls for the DevUI HTTP surface by @moonbox3 in https://github.com/microsoft/agent-framework/pull/5739 * .NET: Add A2A input-request content for human-in-the-loop scenarios by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5743 * .NET fix: Synthesized Handoff FunctionResult is never sent to agent by @lokitoth in https://github.com/microsoft/agent-framework/pull/5718 * .NET: Refactor harness console rendering by @westey-m in https://github.com/microsoft/agent-framework/pull/5751 * .NET: fix: align Anthropic Extensions AI version by @danyalahmed1995 in https://github.com/microsoft/agent-framework/pull/5709 * .NET: declare Magentic protocol messages by @he-yufeng in https://github.com/microsoft/agent-framework/pull/5778 * .NET: Feat/dotnet shell tool by @alliscode in https://github.com/microsoft/agent-framework/pull/5604 * .NET: Fix OpenAIResponsesAgentClient to include agentName in endpoint path by @giles17 in https://github.com/microsoft/agent-framework/pull/5748 * .NET: CI hardening — split Functions tests, re-enable skipped integration tests by @giles17 in https://github.com/microsoft/agent-framework/pull/5717 * .NET: Add harness agent package by @westey-m in https://github.com/microsoft/agent-framework/pull/5782 * .NET: [Breaking Change] Auto-wire ChatClient with OpenTelemetryChatClient in OpenTelemetryAgent by @Copilot in https://github.com/microsoft/agent-framework/pull/5750 * Dotnet: Fixing FoundryToolboxMcp sample to use created toolbox by @alliscode in https://github.com/microsoft/agent-framework/pull/5786 * .NET: fix: avoid mutating handoff message roles by @he-yufeng in https://github.com/microsoft/agent-framework/pull/5808 * .NET: feat(evals): add ground_truth/expected_output support for workflow evaluation by @alliscode in https://github.com/microsoft/agent-framework/pull/5755 * .NET: Update version for release. by @alliscode in https://github.com/microsoft/agent-framework/pull/5789 * .NET: Fix build issue CA1873 in DevUI by using LoggerMessage source generator by @alliscode in https://github.com/microsoft/agent-framework/pull/5831 * [BREAKING] Python: DevUI: tighten default access controls and CORS posture by @moonbox3 in https://github.com/microsoft/agent-framework/pull/5740 * [BREAKING] Python: Align file skill folder discovery with agentskills.io spec by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5807 * .NET: Filestore improvements by @westey-m in https://github.com/microsoft/agent-framework/pull/5842 * .NET: DevUI: quarantine flaky discovery integration test (#5845) by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5846 * .NET: Update version to 1.6.1 for release by @westey-m in https://github.com/microsoft/agent-framework/pull/5843 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.5.0...dotnet-1.6.1 ## 1.6.0 ## [1.6.0] - 2026-05-21 ### Added - **agent-framework-core**: Shell tool with support for local and Docker execution ([#5664](https://github.com/microsoft/agent-framework/pull/5664)) - **agent-framework-monty**: New Monty-backed CodeAct provider package ([#5915](https://github.com/microsoft/agent-framework/pull/5915)) - **agent-framework-foundry**: Add experimental hosted tool factories on `FoundryChatClient` ([#5958](https://github.com/microsoft/agent-framework/pull/5958)) - **agent-framework-foundry**: Include tool definitions for Foundry agent evals ([#5974](https://github.com/microsoft/agent-framework/pull/5974)) - **agent-framework-a2a**: Use non-streaming transport and `return_immediately` for background ops ([#5963](https://github.com/microsoft/agent-framework/pull/5963)) ### Changed - **agent-framework-core**, **agent-framework-foundry**: [BREAKING] Enable instrumentation by default ([#5865](https://github.com/microsoft/agent-framework/pull/5865)) - **agent-framework-foundry**: Show more authentication methods in Foundry Toolbox MCP ([#5719](https://github.com/microsoft/agent-framework/pull/5719)) ### Fixed - **agent-framework-core**: Skip MCP prompt loading when unsupported ([#5370](https://github.com/microsoft/agent-framework/pull/5370)) ## 1.5.0 ## What's Changed * .NET: feat: Implement message filtering to exclude non-portable content typ… by @tarockey in https://github.com/microsoft/agent-framework/pull/5410 * .NET: Add allow listing for WebBrowsingTool by @westey-m in https://github.com/microsoft/agent-framework/pull/5605 * .NET: fix: JSON Serialization issue with MultiPartyConversation by @lokitoth in https://github.com/microsoft/agent-framework/pull/5653 * .NET: Improve Todo multithreading and inject todos into message list by @westey-m in https://github.com/microsoft/agent-framework/pull/5655 * .NET: fix: Add missing Workflows "Shared" sources to solution by @lokitoth in https://github.com/microsoft/agent-framework/pull/5656 * .NET: Fix QuestionExecutor looping after GotoAction re-entry in declarative workflows by @peibekwe in https://github.com/microsoft/agent-framework/pull/5635 * .NET: Fix YAML block scalar parsing for file skills by @tejakusireddy in https://github.com/microsoft/agent-framework/pull/5610 * .NET: Add hosted agent observability sample by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5660 * .NET: Bump MEAI to 10.5.1 and add Foundry per-call x-client header support by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5652 * .NET: Fix flaky declarative test by @peibekwe in https://github.com/microsoft/agent-framework/pull/5669 * .NET: Add Foundry.Hosting.IntegrationTests by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5598 * .NET: Issue 5662 by @alliscode in https://github.com/microsoft/agent-framework/pull/5668 * .NET: Support reasoning events in AGUI by @jeffinsibycoremont in https://github.com/microsoft/agent-framework/pull/4953 * .NET: feat: Update Github Copilot SDK to 1.0.0-beta.2 by @lokitoth in https://github.com/microsoft/agent-framework/pull/5699 * .NET: feat: Implement Magentic Orchestration for .NET by @lokitoth in https://github.com/microsoft/agent-framework/pull/5595 * .NET: Foundry.Hosting IT - avoid MSB3026 in publish step by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5689 * .NET: Python: Add dotnet integration test report to CI by @giles17 in https://github.com/microsoft/agent-framework/pull/5515 * .NET: Non-thread-safe sequence number generation may cause duplicate or out-of-order IDs by @tuanaiseo in https://github.com/microsoft/agent-framework/pull/5320 * .NET: Fix typo: sesionElement -> sessionElement by @XiongHaoTrigger in https://github.com/microsoft/agent-framework/pull/5674 * .NET: Mark Magentic Orchestration Experimental by @lokitoth in https://github.com/microsoft/agent-framework/pull/5704 * .NET: Fix function_call_output.output to be a JSON string on the wire by @alliscode in https://github.com/microsoft/agent-framework/pull/5705 * .NET: Update version for release by @lokitoth in https://github.com/microsoft/agent-framework/pull/5703 ## New Contributors * @tarockey made their first contribution in https://github.com/microsoft/agent-framework/pull/5410 * @tejakusireddy made their first contribution in https://github.com/microsoft/agent-framework/pull/5610 * @jeffinsibycoremont made their first contribution in https://github.com/microsoft/agent-framework/pull/4953 * @tuanaiseo made their first contribution in https://github.com/microsoft/agent-framework/pull/5320 * @XiongHaoTrigger made their first contribution in https://github.com/microsoft/agent-framework/pull/5674 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.4.0...dotnet-1.5.0 ## 1.4.0 ## What's Changed * .NET: Bump OpenTelemetry packages to 1.15.3 by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5478 * .NET: Support returning durable workflow results from HTTP trigger endpoint by @kshyju in https://github.com/microsoft/agent-framework/pull/5321 * .NET: [Breaking] Support string[] arguments for file-based skill scripts by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5475 * .NET: Add HttpRequestAction support to declarative workflows by @peibekwe in https://github.com/microsoft/agent-framework/pull/5474 * .NET: Add declarative HttpRequestAction sample by @peibekwe in https://github.com/microsoft/agent-framework/pull/5572 * .NET: dotnet: Add hosted-agent User-Agent supplement to outgoing requests by @alliscode in https://github.com/microsoft/agent-framework/pull/5453 * .NET: Add dedicated Foundry.Hosting UnitTest project by @rogerbarreto in https://github.com/microsoft/agent-framework/pull/5592 * .NET: Harness Feature branch by @westey-m in https://github.com/microsoft/agent-framework/pull/5310 * .NET: Hosting updates to declarative workflows by @alliscode in https://github.com/microsoft/agent-framework/pull/5589 * docs: enhance README with 1.0 features and improved structure by @chetantoshniwal in https://github.com/microsoft/agent-framework/pull/5534 * .NET: Update version for release by @westey-m in https://github.com/microsoft/agent-framework/pull/5636 * .NET: Add Microsoft.Agents.AI.Hyperlight package for CodeAct integration (.NET) by @eavanvalkenburg in https://github.com/microsoft/agent-framework/pull/5329 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.3.0...dotnet-1.4.0 ## 1.3.0 ## What's Changed * .NET: Add dynamic tool expansion sample by @westey-m in https://github.com/microsoft/agent-framework/pull/5425 * .NET: Update Aspire package to be preview by @westey-m in https://github.com/microsoft/agent-framework/pull/5444 * .NET: Fix off-thread RunStatus race where GetStatusAsync can return Running after ResumeAsync halts by @peibekwe in https://github.com/microsoft/agent-framework/pull/5412 * .NET: Update versions for release by @westey-m in https://github.com/microsoft/agent-framework/pull/5449 * .NET: Add streaming support to A2A agent handler by @SergeyMenshykh in https://github.com/microsoft/agent-framework/pull/5427 * .NET: dotnet: Add server-side Foundry Toolbox support and fix SDK beta.4 br… by @alliscode in https://github.com/microsoft/agent-framework/pull/5450 **Full Changelog**: https://github.com/microsoft/agent-framework/compare/dotnet-1.2.0...dotnet-1.3.0 ## 1.2.2 ## [1.2.2] - 2026-04-29 ### Added - **agent-framework-azure-contentunderstanding**: New alpha package — Azure AI Content Understanding context provider that auto-analyzes file attachments (documents, images, audio, video) and injects structured results into the LLM context, with multi-document session state, configurable timeout, output filtering via `AnalysisSection`, and auto-registered `list_documents` / `get_analyzed_document` tools ([#4829](https://github.com/microsoft/agent-framework/pull/4829)) - **agent-framework-foundry-hosting**: Add hosted Durable Workflow support — propagate full conversation history to workflow agents and wire `Workflow.as_agent()` end-to-end via the foundry hosting layer ([#5531](https://github.com/microsoft/agent-framework/pull/5531)) ### Changed - **agent-framework-orchestrations**: [BREAKING] Standardize orchestration terminal outputs as `AgentResponse` so `Workflow.as_agent()` returns the final answer only; aligns sequential-approval (`with_request_info`) and concurrent (`intermediate_outputs=True`) flows on the same output contract ([#5301](https://github.com/microsoft/agent-framework/pull/5301)) - **agent-framework-core**, **agent-framework-declarative**: Preserve `Workflow.run()` shared state across calls so multi-turn `WorkflowAgent` invocations retain context, accept `list[Message]` input in the declarative start executor, and coerce `Enum` values when serializing PowerFx symbols ([#5531](https://github.com/microsoft/agent-framework/pull/5531)) - **dependencies**: Update workspace package dependencies and preserve `mcp[ws]` / `uvicorn[standard]` extras through override-dependencies in `/python` ([#5555](https://github.com/microsoft/agent-framework/pull/5555)) ### Fixed - **agent-framework-core**: Fix observability spans not being correctly nested when using streaming ([#5552](https://github.com/microsoft/agent-framework/pull/5552)) - **agent-framework-openai**: Fix `file_search` citations breaking the assistant-message history roundtrip — skip `hosted_file` content in the assistant role so the Responses API no longer rejects `input_file` ([#5557](https://github.com/microsoft/agent-framework/pull/5557)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.2.1...python-1.2.2 ## 1.2.1 ## [1.2.1] - 2026-04-28 ### Added - **agent-framework-foundry-hosting**: Add file data type support to hosted-agent Responses, refresh `foundry-hosted-agents` samples, and add response test coverage ([#5485](https://github.com/microsoft/agent-framework/pull/5485)) - **samples**: Add `requirements.txt` and `.env.example` to the `a2a/` hosting sample for pip-based setup ([#5510](https://github.com/microsoft/agent-framework/pull/5510)) ### Changed - **dependencies**: Update `rich` requirement from `<15.0.0,>=13.7.1` to `>=13.7.1,<16.0.0` in `/python` ([#5227](https://github.com/microsoft/agent-framework/pull/5227)) - **dependencies**: Bump `prek` from `0.3.8` to `0.3.9` in `/python` ([#5228](https://github.com/microsoft/agent-framework/pull/5228)) - **dependencies**: Bump `python-multipart` from `0.0.22` to `0.0.26` in `/python` ([#5286](https://github.com/microsoft/agent-framework/pull/5286)) - **dependencies**: Bump `pyasn1` from `0.6.2` to `0.6.3` in `/python` ([#4748](https://github.com/microsoft/agent-framework/pull/4748)) - **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in `/python/packages/ag-ui` ([#5461](https://github.com/microsoft/agent-framework/pull/5461)) - **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in `/python/packages/devui` ([#5492](https://github.com/microsoft/agent-framework/pull/5492)) - **dependencies**: Bump `pytest` from `9.0.2` to `9.0.3` in `/python/packages/lab` ([#5470](https://github.com/microsoft/agent-framework/pull/5470)) - **dependencies**: Bump `uv` from `0.11.3` to `0.11.6` in `/python/packages/lab` ([#5469](https://github.com/microsoft/agent-framework/pull/5469)) - **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in `/python/packages/devui/frontend` ([#5127](https://github.com/microsoft/agent-framework/pull/5127)) - **dependencies**: Bump `vite` from `7.1.12` to `7.3.2` in `/python/samples/05-end-to-end/chatkit-integration/frontend` ([#5126](https://github.com/microsoft/agent-framework/pull/5126)) - **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in `/python/packages/devui/frontend` ([#5484](https://github.com/microsoft/agent-framework/pull/5484)) - **dependencies**: Bump `postcss` from `8.5.6` to `8.5.10` in `/python/samples/05-end-to-end/chatkit-integration/frontend` ([#5491](https://github.com/microsoft/agent-framework/pull/5491)) - **dependencies**: Bump `postcss` from `8.5.6` to `8.5.12` in `/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend` ([#5527](https://github.com/microsoft/agent-framework/pull/5527)) - **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in `/python/packages/devui/frontend` ([#4921](https://github.com/microsoft/agent-framework/pull/4921)) - **dependencies**: Bump `picomatch` from `4.0.3` to `4.0.4` in `/python/samples/05-end-to-end/ag_ui_workflow_handoff/frontend` ([#4936](https://github.com/microsoft/agent-framework/pull/4936)) ### Fixed - **agent-framework-core**: Prevent `inner_exception` from being lost in `AgentFrameworkException` ([#5167](https://github.com/microsoft/agent-framework/pull/5167)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.2.0...python-1.2.1 ## 1.2.0 ## Changes: * f2b215a2f6d4767fd37b17dd33195100ea2e498f .NET [WIP] Foundry Hosted Agents Support (#5312) [ #5091, #5287, #5278, #5281, #5316, #5336, #5341, #5367, #5368, #5371, #5374, #5406, #5408 ] * 57fa8ea9022ac9ec39fb5ececb020aa042599c8f Python: Fix OpenAIEmbeddingClient to use AsyncOpenAI for /openai/v1 endpoints (#5137) [ #5068 ] * aa582d021d69dd3b047d7664ced090dcc08b56f2 Python: feat(evals): add ground_truth support for similarity evaluator (#5234) * 8f17067383154e87e3a3c8ae673c7b5f1cf71add .NET: Update .NET package version 1.2.0 (#5364) * 267351b7607595cfcb2d64c739587bc50a476e2f .NET: Expand Workflow Unit Test Coverage (#5390) * adcd2d33f5e32be85ea141fc8cc6fbe590aa0981 .NET: Declarative workflows - Gracefully handle agent scenarios when no response is returned (#5376) * d5777bc546ba48652d85cec6093b445965533a4a fix: Duplicate CallIds cause Handoff Message Filtering to fail (#5359) * b6b191ad9c2ddaaa8a647419135f01a2d3fce73a Python: Add second approval-required tool (set_stop_loss) to concurrent_builder_tool_approval sample (#4875) [ #4874 ] * 2c8036779c20e5fa2feb6304c01e28c594e801a9 Python: Bump versions for a release. Update CHANGELOG (#5385) * ce8b6305d8e7280ac9d22226a17e2e4f0828ef97 Python: Foundry hosted agent V2 (#5379) [ #5177, #5215, #5235, #5261, #5281, #5284, #5298, #5372, #5378 ] <details><summary><b>See More</b></summary> * 07f4c8a8d66d2fba40bdd086f16cc6dca059d054 Python: Expose forwardedProps to agents and tools via session metadata (#5264) [ #5239 ] * 04aaf0c1fe6023a579a334f9d2afe5b79ca497f0 Python: Add support for Foundry Toolboxes (#5346) * 3e54a689fc96d681a072fe7e7cfc445909dac74b Python: Add search tool content for OpenAI responses (#5302) * 60af59ba8b3c871065d0a288f21bfd7f0d6be3c1 .NET: Features/3768-devui-aspire-integration (#3771) * 69894eded89d6e8ebf7bdb75cd0d9da54ade8b21 Python: Flatten hyperlight execute_code output (#5333) * 495e1dad6bf3c62b14929805cfd5f0409c897876 Python: Fix CopilotStudioAgent to reuse conversation ID from existing session (#5299) [ #5285 ] * 5777ed26e62e721375f78c404b8df1dfbc322560 .NET: fix: Add session support for Handoff-hosted Agents (#5280) * 52303a8d07e8f9f2c3f056d969d99a9062c06219 .NET: Add Code Interpreter container file download samples (#5014) [ #3081 ] * c85d24da440ebe5266852f6356aecdadc41379c6 .NET: Fix declarative resume edge predicates to recognize both direct and PortableValue-wrapped forms after checkpoint restore (#5323) * b03cb324d5cc5e91a55b5eb9045b8ead244aaf11 Python: Add Hyperlight CodeAct package and docs (#5185) * dbf935b4e30cf9ae2553cad54f6bc09668f7eb62 .NET: fix: Foundry Agents without description in Handoff (#5311) * ca580a8316a904e947e48aaba8f3c00eb738ae36 .NET: Add error checking to workflow samples (#5175) * 101e07b0610e2a73e0c369be7e81907a44fb243f .NET: Add Handoff sample (#5245) * aee1acbf8baeb9fb3b3f196975aae9e7f7481096 .NET: Foundry Evals integration for .NET (#4914) [ #5269 ] * 91e34358eb4f2643b13537b470d8ea0aeaec7307 Python: Feat: Add finish_reason support to AgentResponse and AgentResponseUpdate (#5211) [ #4622 ] * 90a633967ca60601fc696d335d770f9f05e236e2 Python: Fix Gemini client support for Gemini API and Vertex AI (#5258) * c14beedb3af8bdee168e3a06a245a5b9d8fa5f75 test: Add Handoff composability test (#5208) * 43d98974d3994486a35602467efcffb85839ce66 fix: propagate A2A metadata with namespaced key in additional_properties (#5240) (#5256) * 60da0ffb4803e0db18d3d3bde8e008eb4277882c .NET: Improve local release build perf by only formatting for one build target framework (#5266) * a2044829b13659ac40f7f4112f74efcce15397cc .NET: Update Microsoft.Extensions.AI to 10.5.0 and OpenAI to 2.10.0 and remove unused refs (#5269) * 435c66e9c9f215fdea4b041da35e6ca774b63094 Python: Handle url_citation annotations in `FoundryChatClient` streaming responses (#5071) [ #5029 ] * 52d50be9e06456aa8dc4adb2525b0bbd4f60d4d3 Bump Anthropic SDK to 12.13.0 and Anthropic.Foundry to 0.5.0 (#5279) * d20f9b5f973b0b8f693f530a8e3c0f9d9c99bb94 Add AgentExecutorResponse.with_text() to preserve conversation history through custom executors (#5255) [ #5246 ] * 87a8fa2a9d0ffd3d0b4b31882e70c4f60462bb29 .NET: Fix intermittent checkpoint-restore race in in-process workflow runs (#5134) * 8f7fd9525d1bf24f9606779ba7f8d41b66ce2ff1 Python: Add OpenAI types to default checkpoint encoding allow list (#5297) * 69697065ab78502c5e58a7e6bc90ae14fdc46c20 Python: Add context_providers and description to `workflow.as_agent()` (#4651) * fe4cd3cddc99f157710296dad892bec427cae991 Revert to public MCP server and skip on transient upstream errors (#5296) * 611230cc8ebde031d6c15dbc15d7053ddf56b40c Python: improve misc-integration test robustness (#5295) * f112150cfbc4d514b21b60a81bbe5239b4b2c81f Python: bump misc-integration retry delay to 30s (#5293) * ff05c22c5853a51b83c05b6fdb3b8e982bbf3b31 Python: add experimental file history provider (#5248) * eab7f09d03387a2b393f9785963353c1a09e8b6b Forward provider config to SessionConfig in GitHubCopilotAgent (fixes #5190) (#5195) * 68b93641b6802abd2d00a5191cb16c6074d39fe1 Python: Bump agent-framework-devui to 1.0.0b260414 for release (#5259) * 2b251d904f1cb045ec3b7e13411cac3c1aa1e019 Python: Fix reasoning replay when store=False (#5250) * 485af07b8c21896b7f24a0313b5a226b3bd711f8 Python: Add GeminiChatClient (#4847) ... (truncated) ## 1.1.1 ## [1.1.1] - 2026-04-23 ### Added - **agent-framework-core**: Add `expected_output` ground-truth support to `evaluate_workflow` for similarity evaluators ([#5234](https://github.com/microsoft/agent-framework/pull/5234)) - **agent-framework-ag-ui**, **agent-framework-a2a**: Propagate `thread_id` and `forwarded_props` through AG-UI to A2A `context_id` ([#5383](https://github.com/microsoft/agent-framework/pull/5383)) - **samples**: Add second approval-required tool (`set_stop_loss`) to `concurrent_builder_tool_approval` sample ([#4875](https://github.com/microsoft/agent-framework/pull/4875)) - **agent-framework-core**: Add `SKIP_PARSING` sentinel for `FunctionTool.invoke` to bypass `Content`-wrapping and return raw function results ([#5424](https://github.com/microsoft/agent-framework/pull/5424)) ### Changed - **agent-framework-foundry-hosting**: Correct Development Status classifier from Beta (4) to Alpha (3) to match the package's lifecycle stage ([#5387](https://github.com/microsoft/agent-framework/pull/5387)) - **tests**: Add Python flaky test report workflow ([#5342](https://github.com/microsoft/agent-framework/pull/5342)) - **agent-framework-hyperlight**: Simplify host callback to pass raw Python results via `SKIP_PARSING`, switch `execute_code` input schema to a plain JSON-schema dict, and tighten public API surface ([#5424](https://github.com/microsoft/agent-framework/pull/5424)) ### Fixed - **agent-framework-openai**: Fix OpenAI Responses streaming to propagate `created_at` from the final `response.completed` event ([#5382](https://github.com/microsoft/agent-framework/pull/5382)) - **agent-framework-openai**: Fix `OpenAIEmbeddingClient` to use `AsyncOpenAI` for `/openai/v1` endpoints ([#5137](https://github.com/microsoft/agent-framework/pull/5137)) - **agent-framework-openai**: Exclude null `file_id` from `input_image` payload to prevent schema 400 errors ([#5125](https://github.com/microsoft/agent-framework/pull/5125)) - **agent-framework-foundry**: Reconcile Toolbox hosted-tool payloads with the Responses API ([#5414](https://github.com/microsoft/agent-framework/pull/5414)) - **agent-framework-ag-ui**: Pass client `thread_id` as `session_id` when constructing `AgentSession` ([#5384](https://github.com/microsoft/agent-framework/pull/5384)) - **agent-framework-hyperlight**: Thread-confine `WasmSandbox` interactions via per-entry `ThreadPoolExecutor` to eliminate the PyO3 `unsendable` panic when touched from asyncio worker threads ([#5424](https://github.com/microsoft/agent-framework/pull/5424)) **Full Changelog**: https://github.com/microsoft/agent-framework/compare/python-1.1.0...python-1.1.1 ## 1.1.0 ## Changes: * 3e864cdb4c6031cf93096fa6af4d927b31126d8a .NET: Update version to 1.1.0 (#5204) * 14d2ab3262580a383472b406d97b36cfd86b2787 Standardize file skills terminology on 'directory' (#5205) * e5f7b9c260961916e108ca10780988aeefd51662 .NET: Support reflection for discovery of resources and scripts in class-based skills (#5183) <details><summary><b>See More</b></summary> * 1dd828d25502a1d4b4facff8e278da0668b40d28 CHANGELOG Update with V1.0.0 Release (#5069) * 8348584ac29f91a2c5e5e3db05166add1bb7b2af VerifySamples: Filter projects to net10 only (#5184) * 6d6cb840aec8b85c6bb5e95dc680c8fdd6110394 .NET: Improve resilience of verify-samples by building separately and improving evaluation instructions (#5151) * 79afda1a6…
Motivation and Context
It should be easy to have a main agent delegate to background agents, without blocking the main agent.
Description
Contribution Checklist