Skip to content

Python: Fix file_search citations breaking assistant history roundtrip#5557

Merged
moonbox3 merged 2 commits into
microsoft:mainfrom
moonbox3:5556-fix
Apr 29, 2026
Merged

Python: Fix file_search citations breaking assistant history roundtrip#5557
moonbox3 merged 2 commits into
microsoft:mainfrom
moonbox3:5556-fix

Conversation

@moonbox3
Copy link
Copy Markdown
Contributor

Motivation and Context

Closes #5556. After the RC5 → 1.0 migration to the Responses API, multi-agent flows (SequentialBuilder, GroupChatBuilder) break with a 400 from the API whenever one agent uses file_search and its history is forwarded to another agent. The root cause is in OpenAIResponsesClient (inherited by FoundryChatClient):

  1. Outbound _prepare_content_for_openai maps hosted_file → input_file for any role, but input_file is an input-only content type that the Responses API rejects inside an assistant message.
  2. Streaming attaches file_citation / container_file_citation / file_path annotations as standalone HostedFileContent items, while the non-streaming path attaches them as text annotations. The asymmetry means streaming users always trip (1).
  3. Outbound output_text hardcodes "annotations": [], silently dropping citation context on every roundtrip even when (1) wouldn't fire.

This worked in RC5 because Chat Completions used flat text annotations and had no input/output content-type schema split.

Description

Three coordinated fixes in packages/openai/agent_framework_openai/_chat_client.py:

  • Skip hosted_file for assistant role in _prepare_content_for_openai. Hosted-file content on an assistant message is a citation reference, not a replayable input file; dropping it stops the 400.
  • Streaming attaches citations as text annotations, matching the non-streaming path. file_citation, container_file_citation, and file_path now produce Content.from_text(text="", annotations=[Annotation(type="citation", ...)]) instead of a standalone HostedFileContent. URL citations (which already used this pattern) are unchanged.
  • output_text preserves annotations on roundtrip via a new _annotations_to_output_text helper that converts framework Annotation objects back to Responses API annotation dicts (file_citation, url_citation, container_file_citation, file_path).

Built TDD-style: 4 new behavior tests plus an end-to-end regression test that exercises the exact streaming-citation → assistant-history-forwarding flow from the bug report. 3 existing streaming-annotation tests were updated to assert the new (consistent) behavior — they previously asserted the buggy split-content shape.

Verified locally: pytest packages/openai/tests/openai/, pytest packages/foundry/tests/foundry/, pytest packages/core/tests/, mypy, and ruff all clean.

Contribution Checklist

  • The code builds clean without any errors or warnings
  • The PR follows the Contribution Guidelines
  • All unit tests pass, and I have added new tests where possible
  • Is this a breaking change? If yes, add "[BREAKING]" prefix to the title of the PR.

The Responses API rejects 'input_file' inside an assistant message, but the
SDK was emitting it whenever an assistant Message contained a hosted_file
content (which is what file_search citations become). Three coordinated fixes:

1. _prepare_content_for_openai now skips hosted_file for the assistant role
   instead of mapping to input_file (which the API rejects there).

2. The streaming response.output_text.annotation.added handler attaches
   file_citation, container_file_citation, and file_path as annotations on
   text content, matching the non-streaming path. Previously streaming
   produced standalone HostedFileContent items that always tripped (1).

3. output_text serialization preserves Annotation objects on roundtrip via a
   new _annotations_to_output_text helper instead of hardcoding 'annotations'
   to []. file_search citations now survive multi-agent forwarding.

Closes microsoft#5556.
Copilot AI review requested due to automatic review settings April 29, 2026 02:15
@moonbox3
Copy link
Copy Markdown
Contributor Author

moonbox3 commented Apr 29, 2026

Python Test Coverage

Python Test Coverage Report •
FileStmtsMissCoverMissing
packages/openai/agent_framework_openai
   _chat_client.py96812387%263, 276, 601–604, 608–609, 615–616, 651–657, 678, 686, 709, 827, 926, 985, 987, 989, 991, 1057, 1071, 1151, 1161, 1166, 1209, 1325, 1506, 1511, 1515–1517, 1521–1522, 1588, 1624, 1630, 1640, 1646, 1651, 1657, 1662–1663, 1682, 1772, 1794–1795, 1810–1811, 1829–1830, 1873, 2039, 2077–2078, 2094, 2096, 2176–2184, 2214, 2324, 2359, 2374, 2394–2404, 2417, 2428–2432, 2446, 2460–2471, 2480, 2512–2515, 2525–2526, 2537–2539, 2553–2555, 2565–2566, 2572, 2587
TOTAL30554356288% 

Python Unit Test Overview

Tests Skipped Failures Errors Time
6139 30 💤 0 ❌ 0 🔥 1m 46s ⏱️

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a Responses API incompatibility where file_search citations (and other hosted-file citation artifacts) could be serialized back into assistant history as input_file, causing 400s when multi-agent workflows forward assistant messages.

Changes:

  • Preserve assistant output_text.annotations on serialization by converting framework Annotation(type="citation") back into Responses API annotation dicts.
  • Prevent hosted_file contents in assistant messages from roundtripping as input_file by dropping them during outbound preparation.
  • Make streaming citation events attach as text annotations (via empty text Content) rather than standalone HostedFileContent, aligning streaming with non-streaming behavior; update/add regression tests.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
python/packages/openai/agent_framework_openai/_chat_client.py Adds annotation roundtrip helper, drops assistant hosted_file on outbound, and changes streaming citation handling to produce text annotations.
python/packages/openai/tests/openai/test_openai_chat_client.py Adds/updates tests to cover citation roundtrip behavior and the streaming→history regression.

Comment thread python/packages/openai/agent_framework_openai/_chat_client.py Outdated
Comment thread python/packages/openai/agent_framework_openai/_chat_client.py Outdated
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated Code Review

Reviewers: 4 | Confidence: 90%

✓ Correctness

This PR fixes a roundtrip bug where streaming file_search citations were stored as HostedFileContent, then serialized as input_file items in assistant history — rejected by the Responses API. The fix correctly converts these to text annotations (matching the non-streaming path) and adds a helper to reconstruct API-format annotations on output. The branching logic in _annotations_to_output_text correctly maps all four annotation variants (file_path, file_citation, url_citation, container_file_citation) and the priority ordering of the elif chain prevents misclassification. Dropping hosted_file for assistant role returns {} which is properly filtered by the existing if prepared_content: guard in _prepare_message_for_openai. Tests are comprehensive and cover the main code paths.

✓ Security Reliability

This diff fixes a real bug where streaming file_search citations were represented as HostedFileContent, which then serialized as input_file in assistant history and was rejected by the Responses API. The fix converts these to text annotations that roundtrip cleanly. The new _annotations_to_output_text helper safely reshapes Annotation TypedDicts (all fields optional, accessed via .get()) into API-compatible dicts. The empty-dict guard for hosted_file on assistant messages is correctly filtered by existing calers (line 1352: if prepared_content: — empty dict is falsy). The getattr(content, "annotations", None) is slightly redundant since content.annotations is unconditionally set in Content.__init__, but is harmlessly defensive. No injection risks, resource leaks, secrets exposure, or unhandled failure modes found.

✓ Test Coverage

The PR adds four new tests and updates three existing streaming annotation tests to reflect the behavioral change from Content.from_hosted_file to Content.from_text with citation annotations. Test coverage is solid for the major paths: file_citation, url_citation, and container_file_citation roundtrips are all verified, as is the hosted_file{} guard for assistant role. However, the file_path branch of _annotations_to_output_text (the elif file_id: path on diff line ~300) has no roundtrip test, even though it is one of the three streaming annotation types that changed representation in this PR. The streaming-parse side is tested (test_streaming_annotation_added_with_file_path), but no test verifies that the resulting annotation serializes back to {"type": "file_path", "file_id": ...} via _annotations_to_output_text.

✓ Design Approach

The change fixes the immediate input_file rejection, but the streaming-side approach still breaks the underlying model of citations: it now emits annotation-added events as separate empty text contents instead of attaching them to the streamed text they annotate. Since assistant history serialization writes each Content as its own output_text item, the annotation offsets are no longer relative to the actual text, unlike the non-streaming path which keeps text and annotations together. That means the PR avoids one API error while still losing the text/citation relationship during round-trip.


Automated review by moonbox3's agents

Comment thread python/packages/openai/tests/openai/test_openai_chat_client.py
Comment thread python/packages/openai/agent_framework_openai/_chat_client.py
@moonbox3 moonbox3 self-assigned this Apr 29, 2026
@moonbox3 moonbox3 added the agents Issues related to single agents label Apr 29, 2026
- _annotations_to_output_text: fan out one entry per annotated_region for
  url_citation/container_file_citation (Annotation.annotated_regions is a
  Sequence; the API form carries one start/end per entry).
- Validate region span bounds are ints before emitting; skip otherwise.
- Add test for the file_path branch (annotation with file_id only).
- Add test verifying streamed citation events coalesce onto surrounding
  text via _finalize_response so span indices reference the merged text,
  not the empty-text streaming carrier.
@moonbox3
Copy link
Copy Markdown
Contributor Author

Pushed 4c67642 addressing all four review comments:

  • annotated_regions fan-out: _annotations_to_output_text now emits one Responses API entry per region for url_citation / container_file_citation, instead of collapsing to regions[0].
  • Span validation: regions whose start_index / end_index are not ints are skipped, so the helper can't produce malformed payloads when fed partial regions.
  • file_path test: added test_assistant_text_preserves_file_path_annotation covering the file_id-only branch that wasn't exercised before.
  • Streaming citation attachment: the concern that span indices would reference text == "" doesn't apply once _finalize_response runs — _coalesce_text_content merges consecutive text contents and unions their annotations, so the citation lands on the merged assistant text. Added test_streamed_file_citation_coalesces_onto_surrounding_text to lock that behavior in. Verified locally with the full chunk → ChatResponse.from_updates path: empty-text + annotation update gets merged into the preceding "Hello world." text content with the annotation attached.

@moonbox3 moonbox3 enabled auto-merge April 29, 2026 05:38
@moonbox3 moonbox3 added this pull request to the merge queue Apr 29, 2026
Merged via the queue into microsoft:main with commit 46ab47b Apr 29, 2026
33 checks passed
moonbox3 added a commit that referenced this pull request Apr 29, 2026
* Python: bump package versions for 1.2.2 release

PATCH bump (1.2.1 -> 1.2.2) for the released cohort. Five PRs land in this
window:

- agent-framework-openai: fix file_search citations breaking the assistant-
  message history roundtrip (#5557) — drives the released-tier PATCH
- agent-framework-orchestrations: [BREAKING] standardize orchestration
  terminal outputs as AgentResponse (#5301)
- agent-framework-core, agent-framework-declarative: preserve Workflow.run()
  shared state across calls, accept list[Message] in declarative start
  executor, and coerce Enum values when serializing PowerFx symbols (#5531)
- agent-framework-foundry-hosting: add hosted Durable Workflow support
  (#5531)
- agent-framework-azure-contentunderstanding: new alpha package — Azure AI
  Content Understanding context provider (#4829)
- dependencies: workspace package dependency refresh (#5555)

Per lockstep convention, all 21 beta packages stamp 1.0.0b260429 and all 4
alpha packages (now including the new contentunderstanding) stamp
1.0.0a260429. Date stamp reflects 2026-04-29 Pacific. Every non-core package
floor on agent-framework-core is raised to >=1.2.2; the new
contentunderstanding package's stale >=1.0.0 floor is brought into line.

Two follow-on fixes bundled to keep validate-dependency-bounds-test green
at lowest-direct resolution:
- Bump agent-framework-azure-contentunderstanding's azure-ai-content
  understanding lower bound from >=1.0.0 to >=1.0.1 (1.0.0 ships without
  proper typing — pyright reports 65 unknown-type errors)
- Add pyright ignore comments to core/foundry/__init__.pyi for the new
  alpha package's type-stub imports, since alpha packages are not in
  core's [all] extra and therefore aren't installed at lowest-direct

* Python: add #5552 to 1.2.2 CHANGELOG

Add the streaming-span observability fix to the Fixed section. PR is on
upstream/main but not yet pulled into origin/main; the code itself will
land via the PR merge.

* Python: address PR #5561 review feedback on dependency bounds

Two packaging fixes flagged in review:

1. agent-framework-azure-contentunderstanding: add agent-framework-foundry
   as a runtime dependency. The package's README directs users to
   `pip install agent-framework-azure-contentunderstanding --pre` and the
   basic example imports `FoundryChatClient` from `agent_framework.foundry`,
   so the documented install path was failing with ImportError. Pulling
   agent-framework-foundry into deps makes the advertised entry path
   self-contained.

2. agent-framework-foundry: bump agent-framework-openai lower bound from
   >=1.1.0 to >=1.2.2,<2. Foundry imports private modules from
   agent_framework_openai (`_chat_client.py:22`, `_agent.py:34`), so
   resolvers were free to pair foundry==1.2.2 with older OpenAI versions
   that lack this release's coordinated Responses/history fix. Lockstep the
   floor with the released cohort to prevent mismatched installs.

Both changes pass `validate-dependency-bounds-test` lower + upper at
their respective packages.
sanaullahmohammed pushed a commit to sanaullahmohammed/NexusOps that referenced this pull request May 28, 2026
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…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Issues related to single agents python

Projects

Status: Done

4 participants