Skip to content

.NET: [BREAKING] Hosting OpenAI Responses protocol helpers and optional execution state - #7000

Merged
Roger Barreto (rogerbarreto) merged 29 commits into
microsoft:mainfrom
rogerbarreto:channels-protocol-extensions
Jul 22, 2026
Merged

.NET: [BREAKING] Hosting OpenAI Responses protocol helpers and optional execution state#7000
Roger Barreto (rogerbarreto) merged 29 commits into
microsoft:mainfrom
rogerbarreto:channels-protocol-extensions

Conversation

@rogerbarreto

@rogerbarreto Roger Barreto (rogerbarreto) commented Jul 8, 2026

Copy link
Copy Markdown
Member

Motivation & Context

ADR-0027 refocused the hosting design toward protocol conversion helpers plus optional execution state: Agent Framework owns protocol-native <-> run conversion, while the application owns HTTP routing, authentication, middleware, and storage. The Python slice landed in #6891.

This PR realizes that direction for .NET. A first-principles gap analysis showed .NET already covers most of the capability, and more richly, but bundled behind the route-owning MapOpenAIResponses server. The only genuine gap is the ownership model: an application cannot own its own route and call just the conversion primitives. So this change un-bundles the existing conversion rather than reinventing it. No new package, no OpenAI-SDK-typed reimplementation, and MapOpenAIResponses public behavior is unchanged.

Description & Review Guide

  • What are the major changes?
    • New public facade OpenAIResponses in Microsoft.Agents.AI.Hosting.OpenAI (JsonElement/SSE boundary; wire DTOs stay internal), delegating to the existing internal converters:
      • ToAgentRunRequest(JsonElement) -> messages + AgentRunOptions?
      • WriteResponse(AgentResponse, responseId, sessionId?) -> Responses JSON
      • WriteResponseStreamAsync(IAsyncEnumerable<AgentResponseUpdate>, responseId, ...) -> Responses SSE frames
      • GetSessionId(JsonElement) -> previous_response_id/conversation id (kept separate so the trust boundary stays visible)
      • CreateResponseId() -> resp_*
    • Protocol-neutral execution state in Microsoft.Agents.AI.Hosting:
      • AgentSessionStore.DeleteSessionAsync (added as an abstract method so every store makes a conscious choice: implement deletion or throw NotSupportedException itself; the in-box stores implement it). Hosting is still preview, so this tightens the contract now rather than shipping a silent default.
      • No agent-side holder: applications use AgentSessionStore directly (GetSessionAsync creates on miss, SaveSessionAsync persists post-run including under a newly minted id, DeleteSessionAsync removes). ADR-0032 records why per-run instance and async target setup are left to the DI container in .NET.
      • HostedWorkflowState + HostedWorkflowRunResult (workflow instance or factory + CheckpointManager + an internal sessionId -> CheckpointInfo head cursor; RunOrResumeAsync/RunOrResumeStreamingAsync)
    • Two samples under dotnet/samples/04-hosting/af-hosting/: local_responses (app-owned route, sync + SSE) and local_responses_workflow (checkpoint resume).
    • ADR 0032-dotnet-hosting-protocol-helpers.md and spec 003-dotnet-hosting-protocol-helpers.md.
  • What is the impact of these changes?
    • Breaking (preview package): adds a new abstract member (AgentSessionStore.DeleteSessionAsync) to a public abstract type and renames the store id parameter to sessionStoreId, so external subclasses must implement the new member. The net-new helpers are otherwise additive. MapOpenAIResponses, IResponsesService, ChatCompletions, and Conversations are untouched.
    • Applications can now expose an agent or workflow over OpenAI Responses while owning their own routing, auth, and storage.
  • What do you want reviewers to focus on?
    • The public helper shape and the JsonElement boundary decision (recorded in ADR-0032, alongside why not the OpenAI SDK Responses types).
    • The decision to reuse the richer existing AgentSessionStore instead of cloning Python's in-memory SessionStore, and the abstract (implement-or-throw) DeleteSessionAsync.
    • The HostedWorkflowState head-cursor approach for per-session checkpoint resume.

Related Issue

N/A. This is the .NET realization of the accepted ADR-0027; it adds ADR-0032 and its spec. It supersedes the earlier channel-model draft in #6151 (closed). Opening as a draft for design feedback.

Contribution Checklist

  • The code builds clean without any errors or warnings
  • All unit tests pass, and I have added new tests where possible
  • The PR follows the Contribution Guidelines
  • This PR is linked to an issue and there is no other open PR for this issue (see Related Issue above).
  • This is a breaking change (preview package): a new abstract member is added to AgentSessionStore and the store id parameter is renamed to sessionStoreId. The breaking change label is applied.

Copilot AI review requested due to automatic review settings July 8, 2026 18:06
@giles17 Giles Odigwe (giles17) added documentation Usage: [Issues, PRs], Target: documentation in the code base and learn docs .NET Usage: [Issues, PRs], Target: .Net labels Jul 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR implements the ADR-0027 “helper-first” hosting direction for .NET by exposing a public OpenAI Responses protocol conversion facade (OpenAIResponses) and adding optional, protocol-neutral execution state helpers for agent session continuity and workflow checkpoint resume, plus new samples and design docs.

Changes:

  • Adds Microsoft.Agents.AI.Hosting.OpenAI.OpenAIResponses public helper facade and OpenAIResponsesRunRequest for JsonElement-bound request/response conversions (JSON + SSE).
  • Adds protocol-neutral execution state helpers in Microsoft.Agents.AI.Hosting (HostedAgentState, HostedWorkflowState, HostedWorkflowRunResult) and introduces AgentSessionStore.DeleteSessionAsync with in-box store overrides.
  • Adds new hosting samples (agent + workflow) plus unit tests and ADR/spec documentation for the helper-first hosting shape.

Reviewed changes

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

Show a summary per file
File Description
dotnet/tests/Microsoft.Agents.AI.Hosting.UnitTests/InMemoryAgentSessionStoreTests.cs New tests covering AgentSessionStore.DeleteSessionAsync behavior across in-box stores.
dotnet/tests/Microsoft.Agents.AI.Hosting.UnitTests/HostedWorkflowStateTests.cs New tests for HostedWorkflowState argument validation and checkpoint lookup behavior.
dotnet/tests/Microsoft.Agents.AI.Hosting.UnitTests/HostedAgentStateTests.cs New tests for HostedAgentState store delegation and optional per-session locking.
dotnet/tests/Microsoft.Agents.AI.Hosting.OpenAI.UnitTests/OpenAIResponsesTests.cs New tests for OpenAIResponses request mapping, session id extraction, id creation, and response rendering.
dotnet/src/Microsoft.Agents.AI.Hosting/NoopAgentSessionStore.cs Implements no-op DeleteSessionAsync override.
dotnet/src/Microsoft.Agents.AI.Hosting/Local/InMemoryAgentSessionStore.cs Implements DeleteSessionAsync by removing stored session content.
dotnet/src/Microsoft.Agents.AI.Hosting/IsolationKeyScopedAgentSessionStore.cs Pass-through implementation for DeleteSessionAsync with scoped conversation ids.
dotnet/src/Microsoft.Agents.AI.Hosting/HostedWorkflowState.cs Adds in-memory per-session checkpoint “head cursor” and RunOrResumeAsync.
dotnet/src/Microsoft.Agents.AI.Hosting/HostedWorkflowRunResult.cs Adds run result wrapper carrying session id, emitted events, and head checkpoint.
dotnet/src/Microsoft.Agents.AI.Hosting/HostedAgentState.cs Adds helper that pairs an agent with a session store plus optional per-session locking.
dotnet/src/Microsoft.Agents.AI.Hosting/DelegatingAgentSessionStore.cs Pass-through implementation for new DeleteSessionAsync API.
dotnet/src/Microsoft.Agents.AI.Hosting/AgentSessionStore.cs Adds new virtual DeleteSessionAsync with throwing default.
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/OpenAIResponsesRunRequest.cs Adds public run request carrier (messages + optional run options).
dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/OpenAIResponses.cs Adds public conversion facade for Responses JSON and SSE rendering.
dotnet/samples/04-hosting/HostingResponsesWorkflow/README.md New sample README for app-owned workflow route + checkpoint resume.
dotnet/samples/04-hosting/HostingResponsesWorkflow/Program.cs New minimal API workflow sample using OpenAIResponses + HostedWorkflowState.
dotnet/samples/04-hosting/HostingResponsesWorkflow/HostingResponsesWorkflow.csproj New workflow sample project.
dotnet/samples/04-hosting/HostingResponsesAgent/README.md New sample README for app-owned agent route (sync + SSE).
dotnet/samples/04-hosting/HostingResponsesAgent/Program.cs New minimal API agent sample using OpenAIResponses + HostedAgentState.
dotnet/samples/04-hosting/HostingResponsesAgent/HostingResponsesAgent.csproj New agent sample project.
dotnet/agent-framework-dotnet.slnx Includes the new hosting samples in the solution.
docs/specs/003-dotnet-hosting-protocol-helpers.md Adds accepted spec describing the new helper + state surface and samples.
docs/decisions/0032-dotnet-hosting-protocol-helpers.md Adds accepted ADR capturing the decision and rationale for the new surface.

Comment thread dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/OpenAIResponses.cs
Comment thread dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/OpenAIResponses.cs Outdated
Comment thread dotnet/samples/04-hosting/HostingResponsesWorkflow/Program.cs Outdated
Comment thread dotnet/samples/04-hosting/HostingResponsesWorkflow/README.md Outdated
Comment thread docs/specs/003-dotnet-hosting-protocol-helpers.md Outdated

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Automated Code Review

Reviewers: 5 | Confidence: 88%

✓ Correctness

The framework code (OpenAIResponses facade, HostedAgentState, HostedWorkflowState, DeleteSessionAsync additions) is well-designed and correct. The one correctness issue is in the HostingResponsesAgent sample, which passes responseId as the sessionId parameter to WriteResponse and WriteResponseStreamAsync, whereas the spec's own E2E sample (docs/specs/003-dotnet-hosting-protocol-helpers.md lines 183, 194) correctly passes sessionId. This causes the rendered response's conversation.id to equal the response id rather than the actual conversation/session id, breaking the OpenAI Responses conversation-grouping semantic.

✓ Security Reliability

The PR is well-designed with clear trust boundary documentation and proper input validation. Two issues found: (1) the session locking dictionary in HostedAgentState grows without bound, creating a resource leak for long-lived services; (2) the HostingResponsesAgent sample passes responseId where the spec (in the same PR) passes sessionId as the conversation identifier, causing conversation.id in the response to be per-turn rather than stable.

✓ Test Coverage

The PR adds good unit tests for guard clauses, delegation, and basic conversion paths. However, three significant behaviors lack test coverage: (1) the WriteResponseStreamAsync streaming facade has zero tests — the SSE frame formatting logic is entirely untested; (2) HostedWorkflowState.RunOrResumeAsync only tests argument validation, not the actual run-or-resume logic, event collection, or cursor recording; (3) IsolationKeyScopedAgentSessionStore.DeleteSessionAsync (new code) has no test verifying it applies isolation-key scoping before delegating to the inner store.

✓ Failure Modes

The PR is well-structured from a failure-mode perspective. Disposal patterns for Run are correct (await using), the semaphore releaser is safe against double-release via Interlocked.Exchange, argument validation gates all state operations, and the NotSupportedException default for DeleteSessionAsync is documented, tested, and maintains backward compatibility. No silent failure paths, swallowed exceptions, or partial-write scenarios were found in the new code. The in-memory cursor limitation in HostedWorkflowState is explicitly documented as a v1 trade-off.

✓ Design Approach

I found one production-surface design issue and one sample-level design issue. The new OpenAIResponses helper path no longer enforces the existing OpenAI Responses invariant that conversation and previous_response_id are mutually exclusive, so invalid requests are silently accepted and resolved differently from MapOpenAIResponses. Separately, the new agent sample collapses conversation.id and previous_response_id into a single storage key, which breaks stable conversation.id continuity for callers following the documented protocol shape.


Automated review by rogerbarreto's agents

Comment thread dotnet/src/Microsoft.Agents.AI.Hosting.OpenAI/OpenAIResponses.cs Outdated
…workflow resume

Migrate HostingResponsesAgent and HostingResponsesWorkflow samples from
Azure.AI.OpenAI to Azure.AI.Projects (AIProjectClient.AsAIAgent), using the
FOUNDRY_PROJECT_ENDPOINT/FOUNDRY_MODEL convention.

Fix HostedWorkflowState.RunOrResumeAsync: on subsequent turns, restore the
session's latest checkpoint and run the workflow forward with the new turn's
input (mirroring the Python hosting host's restore-then-run semantics) instead
of resuming a halted run with no input, which waited on input indefinitely.
Add round-trip resume tests and update ADR-0032/spec-003 wording.
…ests

On resume, HostedWorkflowState.RunOrResumeAsync drained the workflow with the
blocking WatchStreamAsync overload, so a workflow that halts at an unserviced
RequestInfoEvent (human-in-the-loop / approval) blocked forever — asymmetric
with the first-turn RunAsync path, which returns at the same halt. Break the
drain when a superstep completes with HasPendingRequests, restoring symmetry
with turn 1. Add a HITL approval-gate workflow and a resume-does-not-block test.
Add an optional ILoggerFactory to HostedWorkflowState and log a warning when a
resumed turn produces no events, mirroring the Python host's zero-event restore
warning (a stale checkpoint or an input that does not match the workflow's
expected type leaves session state unprogressed). Add a non-chat string workflow
helper, a capturing logger, and a red/green test.
Add CheckpointManager.GetLatestCheckpointAsync(sessionId) and have
HostedWorkflowState fall back to it when its in-memory head cursor misses, so a
durable CheckpointManager resumes a session across a process restart or a new
holder instead of restarting from the workflow's start executor. Mirrors the
Python host's per-turn get_latest read-through. Add a counting workflow that
proves resume-vs-fresh via accumulated state, plus a red/green test, and update
ADR-0032/spec-003 and the XML remarks.
A single workflow instance backs the holder and workflow instances do not
support concurrent runs (the runner throws "already owned by another runner"),
so concurrent turns could fault or race the head cursor. Serialize all turns
through one SemaphoreSlim (mirroring the Python host's workflow lock) and make
HostedWorkflowState IDisposable to own it. Add a gated workflow and a
deterministic concurrency red/green test.
Add tests for HostedWorkflowState resuming a non-chat-protocol workflow (no
TurnToken) and for a third turn continuing to advance the head checkpoint,
closing the coverage gaps the parity review flagged.
Add HostedWorkflowState.RunOrResumeStreamingAsync, which yields the turn's
WorkflowEvents as they occur (fresh run or checkpoint resume) under the same
serialization lock and records the head checkpoint after the stream drains,
keeping the blocking and streaming workflow paths in lockstep with the Python
host. Honor stream:true in the HostingResponsesWorkflow sample by projecting
AgentResponseUpdateEvent updates over the Responses SSE wire. Add a streaming
resume test and update the README/spec.
…utor

Demonstrate that HostedWorkflowState's generic RunOrResumeAsync<TInput> is the
input-adaptation seam (parity with Python's ResponsesChannel run hook): the app
adapts the Responses input into the workflow start executor's own type at the
call site. Add a typed-brief workflow and a test, and note the seam in spec-003.
The resume drain used a SuperStepCompletedEvent{HasPendingRequests} proxy over
the blocking public WatchStreamAsync. That proxy (a) truncated a resumed turn
when a superstep both emitted a request and queued downstream work, and (b)
could fail to fire at all — re-introducing the indefinite hang — when a resume
input drove no superstep (e.g. a rejected non-chat input).

Make StreamingRun.WatchStreamAsync(bool blockOnPendingRequest, CancellationToken)
public and drain both the blocking and streaming resume paths with
blockOnPendingRequest:false, exactly matching the first-turn RunAsync semantics
(Run.RunToNextHaltAsync). Add guard tests: resume with a rejected input does not
hang, and a resume superstep with a request plus downstream work is not
truncated (verified red against the old proxy).
CheckpointManager.GetLatestCheckpointAsync takes the last entry of a store's
index as the head checkpoint. FileSystemJsonCheckpointStore backed its index
with a HashSet, whose enumeration order is not contractual: after a rollback
frees and reuses a slot, enumeration can diverge from commit order, so the
durable read-through could resume a stale checkpoint. Mirror the HashSet with an
insertion-ordered list and enumerate it from RetrieveIndexAsync so 'latest' is
reliable. Add a CheckpointManager.GetLatestCheckpointAsync contract test over the
file store.

Note: the HashSet disorder is only reachable via the internal rollback path, so
the test locks the ordering contract rather than reproducing the rare disorder.
RunOrResumeStreamingAsync recorded the head checkpoint only after the stream was
fully enumerated. If an SSE consumer disconnected mid-turn after supersteps had
committed, the in-memory cursor kept the previous turn's head; because the next
turn is then a cursor hit, durable read-through could not self-heal, so it
resumed pre-disconnect state. Record the run's last committed checkpoint in a
finally so an abandoned stream still advances the cursor. Add a red/green test.
ExtractUpdates streamed every agent's updates, so the sequential Writer->Reviewer
sample streamed the intermediate draft and the final answer over SSE, differing
from the non-streaming response (final message only). Filter the streamed updates
to the final agent so streaming and non-streaming produce the same response.
Live-verified against Foundry: one output item streamed instead of two.
The concurrency test asserted the second same-session turn did not enter the
workflow, which also passes via the engine's concurrent-run ownership guard
(which faults) rather than the holder lock (which waits). Assert instead that the
second turn is not completed while the first holds the lock: a fault would
complete the task, so a pending task isolates the holder lock from the engine
guard. Verified red with the lock removed.
@giles17 Giles Odigwe (giles17) added the workflows Usage: [Issues, PRs], Target: Workflows label Jul 9, 2026
Mohammed Sanaullah (sanaullahmohammed) added a commit to sanaullahmohammed/NexusOps that referenced this pull request Aug 31, 2026
Updated
[Microsoft.Agents.AI](https://github.com/microsoft/agent-framework) from
1.9.0 to 1.19.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Agents.AI's
releases](https://github.com/microsoft/agent-framework/releases)._

## 1.19.0

## What's Changed
* .NET: Add session-persisted chat client routing by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7641
* .NET: Fix snake_case argument names in Harness file tool descriptions
by @​westey-m with @​Copilot in
https://github.com/microsoft/agent-framework/pull/7731
* .NET: Pass IServiceProvider to ChatClientAgent in AddAIAgent overloads
by @​westey-m in https://github.com/microsoft/agent-framework/pull/7737
* .NET: Python: Clarify PR review comment resolution by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7746
* .NET: Update AG-UI samples for latest MAF + AG-UI SDK and align with
docs by @​danroth27 in
https://github.com/microsoft/agent-framework/pull/7295
* .NET: Migrate remaining Foundry hosted samples to source deployment by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7668
* .NET: agent-hooks interception contract as a first-class experimental
feature by @​MohammadHaroonAbuomar in
https://github.com/microsoft/agent-framework/pull/7564
* .NET: Forward AG-UI context and additional properties by @​javiercn in
https://github.com/microsoft/agent-framework/pull/7742
* .NET: Suppress Swagger UI CodeQL alert in AgentWebChat sample by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7764
* .NET: Remove AGUI history special cases from ChatClientAgent by
@​javiercn in https://github.com/microsoft/agent-framework/pull/7741
* .NET: Fix A2A streaming artifact updates by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7722
* Python: Harness blog part4 samples by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7698
* .NET: Clarify compaction provider and chat reducer choices by
@​ravikiranpagidi in
https://github.com/microsoft/agent-framework/pull/7678
* .NET: Add Azure Blob Storage session persistence by @​DeagleGross in
https://github.com/microsoft/agent-framework/pull/1893
* .NET: Persist hosted agent state in Foundry by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7649
* .NET: [BREAKING] Migrate MCP long-running task support to the
2026-07-28 Tasks extension by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7774
* .NET: Add feature-usage bitmask by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7709
* Bump Anthropic from 12.35.1 to 12.42.0 by @​dependabot[bot] in
https://github.com/microsoft/agent-framework/pull/7778
* .NET: Fix ReasoningSummary passthrough in GitHub Copilot resume config
by @​chandramouleswaran in
https://github.com/microsoft/agent-framework/pull/6441
* .NET: Bump AgentMemory from 1.3.0 to 1.4.1 by @​dependabot[bot] in
https://github.com/microsoft/agent-framework/pull/7639
* .NET: Add support for Resilient long-running and Steerable Foundry
Hosted Agents by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7370
* .NET: Update version for 1.19.0 release by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7814

## New Contributors
* @​danroth27 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7295
* @​manjunathshiva made their first contribution in
https://github.com/microsoft/agent-framework/pull/7755
* @​alexliluz made their first contribution in
https://github.com/microsoft/agent-framework/pull/7766
* @​danfiedler-msft made their first contribution in
https://github.com/microsoft/agent-framework/pull/7768
* @​ravikiranpagidi made their first contribution in
https://github.com/microsoft/agent-framework/pull/7678
* @​cr-sbarbouche made their first contribution in
https://github.com/microsoft/agent-framework/pull/7734
* @​ranst91 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7423
* @​qmuntal made their first contribution in
https://github.com/microsoft/agent-framework/pull/7754

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.18.0...dotnet-1.19.0

## 1.18.0

## What's Changed
* .NET: [Experimental] Extend A2A task store with isolation key scoping
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7504
* .NET: Add CodeQL suppression for DevUI proxy validation by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7505
* .NET: Bound the tool-approval auto-approval loop (#​7472) by @​atty57
in https://github.com/microsoft/agent-framework/pull/7474
* .NET: Harden file skill discovery by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7540
* .NET: Give a hosted agent a single source of conversation history by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7525
* .NET: Aggregate usage across looping agents and chat clients by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7539
* .NET: Store executable function calls bypassed by declaration-only
tool calls by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7388
* .NET: [BREAKING] Rename to AgentIsolationKeyProvider by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7567
* .NET: Improve string parsing in declarative workflows by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7535
* .NET: Add Cosmos NoSQL vector memory sample by @​nos-redacted in
https://github.com/microsoft/agent-framework/pull/7552
* .NET: Fix misleading workflow protocol attribute diagnostics by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7609
* .NET: Prevent telemetry serialization failures from failing workflows
by @​peibekwe in https://github.com/microsoft/agent-framework/pull/7612
* .NET: Add Options for Hosted Agent to Allow Backend Storage by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7572
* .NET: Add BackgroundAgentsProvider.ReleaseSessionAsync to cancel and
release per-session background tasks by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7602
* .NET: Remove clear and package source mapping from nuget.config to
allow user level config inheritance by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7646
* .NET: Fix IDE0039 by using local functions in samples by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7666
* .NET: Allow agents to opt into concurrent tool invocation by
@​ump45nose in https://github.com/microsoft/agent-framework/pull/7650
* .NET: Add Foundry hosted session and user identity pass-through by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7648
* .NET: Add Cosmos chat history retrieval API by @​ilia-sokolov in
https://github.com/microsoft/agent-framework/pull/7412
* .NET: Fix declarative workflows deep research sample by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7674
* .NET: Update version for 1.18.0 release by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7713
* .NET: Fix release build analyzer failures by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7721

## New Contributors
* @​nos-redacted made their first contribution in
https://github.com/microsoft/agent-framework/pull/7552
* @​luisangelrod made their first contribution in
https://github.com/microsoft/agent-framework/pull/7509
* @​uuzzrm made their first contribution in
https://github.com/microsoft/agent-framework/pull/7597
* @​chinmayv095 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7470
* @​ump45nose made their first contribution in
https://github.com/microsoft/agent-framework/pull/7650
* @​ilia-sokolov made their first contribution in
https://github.com/microsoft/agent-framework/pull/7412
* @​LobsterQBA made their first contribution in
https://github.com/microsoft/agent-framework/pull/7606
* @​weed33834 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7557

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.17.0...dotnet-1.18.0

## 1.17.0

## What's Changed
* .NET and Python: Extract Durable Task and Azure Functions integrations
by @​cgillum in https://github.com/microsoft/agent-framework/pull/7465
* .NET: Fix Handoff orchestration sample not responding to user input by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7442
* .NET: Fail declarative workflows when an agent returns an error by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7497
* .NET: Updating version for dotnet release 1.17.0 by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7514

## 1.16.0

## What's Changed
* .NET: fix InMemoryChatHistoryProvider persisting when service stores
history by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7284
* .NET: Add TodoProvider and AgentModeProvider samples by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7262
* .NET: Graduate GitHub Copilot agent to stable by @​giles17 in
https://github.com/microsoft/agent-framework/pull/7313
* .NET: Create session for tool approval agent when none provided by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7310
* .NET: Add Microsoft.Agents.AI.LocalCodeAct to release solution filter
by @​westey-m with @​Copilot in
https://github.com/microsoft/agent-framework/pull/7343
* .NET: Preserve table state after declarative EditTable Add by @​KXHXK
in https://github.com/microsoft/agent-framework/pull/7324
* .NET: Forward A2A MessageSendParams.Configuration in the A2A adapter
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7365
* .NET: Workflows: quarantine flaky InputWaiter timeout test (#​7360) by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7361
* .NET: Preserve table state across declarative EditTable operations  by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7353
* .NET: Add GitHub Copilot BYOK sample by @​droideronline in
https://github.com/microsoft/agent-framework/pull/7337
* .NET: Add Anthropic-backed live tests for the OpenAI Responses hosting
helpers by @​ANcpLua in
https://github.com/microsoft/agent-framework/pull/7362
* .NET: Fix and re-enable flaky InputWaiter timeout test by @​peibekwe
in https://github.com/microsoft/agent-framework/pull/7377
* .NET: Add source (ZIP) deploy oriented hosted agent samples by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7372
* .NET: Bump .NET SDK from 10.0.301 to 10.0.302 by @​giles17 in
https://github.com/microsoft/agent-framework/pull/7376
* .NET: Add FileMemoryProvider sample to 02-agents/AgentWithMemory by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7401
* .NET: Add regression tests and sample guidance for stable agent IDs in
checkpointed workflows by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7415
* .NET: Updating version for dotnet release 1.16.0 by @​SergeyMenshykh
in https://github.com/microsoft/agent-framework/pull/7441

## New Contributors
* @​atty57 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7271
* @​sricursion made their first contribution in
https://github.com/microsoft/agent-framework/pull/7291
* @​KXHXK made their first contribution in
https://github.com/microsoft/agent-framework/pull/7324
* @​hsusul made their first contribution in
https://github.com/microsoft/agent-framework/pull/7333
* @​ANcpLua made their first contribution in
https://github.com/microsoft/agent-framework/pull/7362
* @​itjuba made their first contribution in
https://github.com/microsoft/agent-framework/pull/7127

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-github-copilot-1.0.0...dotnet-1.16.0

## 1.15.0

## What's Changed
* Python: Add MCPStreamableHTTPTool security guidance for custom http
client by @​TaoChenOSU in
https://github.com/microsoft/agent-framework/pull/7245
* Harden workflow credential selection by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7249
* Python: preserve Gemini 3 thought_signature across function-call
replays by @​giles17 in
https://github.com/microsoft/agent-framework/pull/7095
* .NET: [BREAKING] Hosting OpenAI Responses protocol helpers and
optional execution state by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7000
* .NET: Fix declarative autosend output by @​alliscode in
https://github.com/microsoft/agent-framework/pull/7217
* .NET: Updating dotnet version for release. by @​alliscode in
https://github.com/microsoft/agent-framework/pull/7265
* .NET: Added GettingStarted example demonstrating Dapr as an agent
provider by @​WhitWaldo in
https://github.com/microsoft/agent-framework/pull/1615
* Python: Support prompt cache breakpoints for GPT-5.6 models in OpenAI
clients by @​Mordris in
https://github.com/microsoft/agent-framework/pull/7163
* .NET: Fix expensive logging by @​alliscode in
https://github.com/microsoft/agent-framework/pull/7268
* Python: Fix stateless replay of reasoning-paired tool calls by
@​moonbox3 in https://github.com/microsoft/agent-framework/pull/7233
* Reduce workflow credential exposure by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7270

## New Contributors
* @​WhitWaldo made their first contribution in
https://github.com/microsoft/agent-framework/pull/1615
* @​Mordris made their first contribution in
https://github.com/microsoft/agent-framework/pull/7163

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.12.0...dotnet-1.15.0

## 1.14.0

## What's Changed
* .NET: Fix CosmosChatHistoryProvider: omit ttl when MessageTtlSeconds
is nul… by @​TheovanKraay in
https://github.com/microsoft/agent-framework/pull/7030
* .NET: Fix CompactionMessageIndex.IsSummaryMessage by @​pwoosam in
https://github.com/microsoft/agent-framework/pull/7042
* .NET: Fix workflow session bug by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7032
* .NET: Enable Valkey NuGet package publishing by @​westey-m with
@​Copilot in https://github.com/microsoft/agent-framework/pull/7059
* .NET: [BREAKING] Graduate message injection out of experimental by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7044
* .NET: [BREAKING] Graduate todo and agent mode providers out of
experimental by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7052
* Update issue triage by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7098
* .NET: Add name collision warnings for auto-approvals by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7089
* .NET: Update Microsoft Foundry branding by @​nicholasdbrady in
https://github.com/microsoft/agent-framework/pull/6999
* .NET: [BREAKING] Harness: Switch FileAccess to opt-in by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7093
* fix typos in XML doc comments, ADR docs, and test comments by
@​rinceyuan in https://github.com/microsoft/agent-framework/pull/7085
* .NET: [BREAKING] Graduate ToolApprovalAgent and add
ToolAutoApprovalRuleContext by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7107
* Harden manual integration test trust boundary by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7081
* CI: resolve PR author in community team check by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7129
* Fix message ordering in workflow-hosted agents by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7123
* .NET: [BREAKING] Graduate FileMemoryProvider by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7114
* .NET: Preserve UTF-8 order in HeadTailBuffer by @​jstar0 in
https://github.com/microsoft/agent-framework/pull/7128
* .NET: [Feature]: .NET Improve ChatClientAgentSession constructor by
@​feiyun0112 in https://github.com/microsoft/agent-framework/pull/7142
* .NET: Fix LocalCodeAct validation and package checks by
@​eavanvalkenburg in
https://github.com/microsoft/agent-framework/pull/7138
* samples: add AgentMemory (Neo4j-agent memory reimplemented in NET )
shopping assistant sample by @​joslat in
https://github.com/microsoft/agent-framework/pull/7096
* .NET: Honor terminal workflow outputs in Workflow.AsAIAgent responses
by @​ssccinng in https://github.com/microsoft/agent-framework/pull/6212
* .NET: Refactor Workflows MessageMerger to preserve message order and
structure by @​marcominerva in
https://github.com/microsoft/agent-framework/pull/6826
* .NET: Populate AgentResponse metadata in CopilotStudioAgent by
@​anneheartrecord in
https://github.com/microsoft/agent-framework/pull/6791
* .NET: [BREAKING] Bind tool-approval responses to surfaced approval
requests by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7111
* .NET: [BREAKING] Graduate HarnessAgent by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7119
* .NET: Version bump for .net release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7237
* .NET: Cover source-type-agnostic toolbox consent parsing (a2a_preview)
by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7229
* [BREAKING] Python: add Responses conversation ID helper by
@​eavanvalkenburg in
https://github.com/microsoft/agent-framework/pull/7234
* The legacy .NET package Microsoft.Agents.AI.AGUI has been split into
external AG-UI SDK packages: AGUI.Client, AGUI.Server,
AGUI.Abstractions, AGUI.Protobuf (optional transport), and
AGUI.Formatting. The ASP.NET Core hosting integration remains in this
repository as Microsoft.Agents.AI.Hosting.AGUI.AspNetCore, now layered
on top of AGUI.Server. If you are upgrading, replace
Microsoft.Agents.AI.AGUI with the relevant AGUI.* packages and rename
AddAGUI()/MapAGUI() to AddAGUIServer()/MapAGUIServer().

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.11.0...dotnet-1.14.0

## 1.13.0

## What's Changed
* .NET: Harden dotnet-format workflow shell handling by @​SergeyMenshykh
in https://github.com/microsoft/agent-framework/pull/6796
* .NET: Add AgentSkillsSourceContext to AgentSkillsSource.GetSkillsAsync
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6797
* .NET: Foundry Hosting per-user session isolation and Responses v2
protocol fast-fail by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6832
* .NET: Pin patched OpenAPI dependencies to unblock NU1903 in sample
restores by @​rogerbarreto with @​Copilot in
https://github.com/microsoft/agent-framework/pull/6853
* Make skills source classes public with Experimental attribute by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6838
* .NET: Consolidate skill-source caching and make skill sources
disposable by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6827
* .NET: Add skill approval options by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6843
* .NET: [BREAKING] Add file editing tools and align
FileAccess/FileMemory store API by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6807
* .NET: [BREAKING] Refactor OpenAI Hosting OptionsMapping to disallow
passing options by default by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6855
* .NET: Remove Experimental attribute from Skills API in
Microsoft.Agents.AI by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6861
* .NET: Foundry Hosting gracefully tolerates lacking user identity when
run locally by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6870
* .NET: Bump Azure.AI.Projects to 2.1.0-beta.4 by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6795
* .NET: Make default-approval harness features configurable +
customizable shell tool by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6880
* .NET: Improving DotNet samples by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6869
* .NET: fix: Require explicit TokenCredential in AddFoundryToolboxes by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6877
* .NET: Update .NET version to 1.13.0 by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6900

## New Contributors
* @​VectorPeak made their first contribution in
https://github.com/microsoft/agent-framework/pull/6818

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.12.0...dotnet-1.13.0

## 1.12.1

## [1.12.1] - 2026-07-22

### Added
- **agent-framework-openai**: Add explicit prompt cache breakpoints for
GPT-5.6 models and a usage sample
([#​7163](https://github.com/microsoft/agent-framework/pull/7163))

### Changed
- **agent-framework-ag-ui**: Promote the package from release candidate
to stable
- **agent-framework-core**: Add security guidance for custom MCP
Streamable HTTP clients
([#​7245](https://github.com/microsoft/agent-framework/pull/7245))

### Fixed
- **agent-framework-gemini**: Preserve Gemini 3 thought signatures
across function-call replays
([#​7095](https://github.com/microsoft/agent-framework/pull/7095))
- **agent-framework-core**, **agent-framework-foundry**,
**agent-framework-foundry-hosting**, **agent-framework-openai**: Fix
stateless replay of reasoning-paired tool calls
([#​7233](https://github.com/microsoft/agent-framework/pull/7233))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.12.0...python-1.12.1

## 1.12.0

## What's Changed
* .NET: Fix typo in XML doc comment for workflow outputs param by
@​marcominerva in https://github.com/microsoft/agent-framework/pull/6326
* .NET: Add BackgroundTaskCompletionLoopEvaluator for harness background
agents by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6736
* .NET: Foundry hosted-agent toolbox OAuth consent support by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/6718
* .NET: [BREAKING] Align Foundry.Hosting experimental flags to MAAI001
for MAF-specific APIs by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6743
* .NET: Prefer HTTPS Aspire DevUI backends by @​tommasodotNET in
https://github.com/microsoft/agent-framework/pull/6772
* .NET: Disable failing DurableTask and AzureFunctions integration tests
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6774
* .NET: Sample fix by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6773
* .NET: [BREAKING] Extract caching from AgentSkillsProvider into
CachingAgentSkillsSource by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6768
* .NET: Add description attribute to resource and script elements in
skill body by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6759
* .NET: Enforce ApprovalRequiredAIFunction in GitHub Copilot provider
via OnPreToolUse hook by @​giles17 in
https://github.com/microsoft/agent-framework/pull/6674
* .NET: Improve proxy target validation in DevUI aggregator by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6771
* .NET: [BREAKING] Bump Azure.AI.AgentServer to 2.0.0 protocol and
migrate Foundry.Hosting by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6800
* .NET: fix: resolve CA1873 in GitHubCopilotAgent by using LoggerMessage
sour… by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6814
* .NET: fix: resolve CA1873 in GitHubCopilotAgent by using LoggerMessage
sour… by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6815
* .NET: Bumping version for dotnet release. by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6816
* Update NuGet package icon to new Microsoft Agent Framework logo by
@​chetantoshniwal in
https://github.com/microsoft/agent-framework/pull/6812

## New Contributors
* @​marcominerva made their first contribution in
https://github.com/microsoft/agent-framework/pull/6326

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.11.1...dotnet-1.12.0

## 1.11.1



## Changes:

* d9ec5eaab4918612ae0f7ddf11499576bdb510bf update package version
(#​6752)
* e3b64fdc4749256fa2d559be18a41f1a008dd7f6 .NET: [BREAKING] Make all
AgentSkillsProvider tools require approval by default (#​6729) [ #​6727
]
* 3a5bbb5f8e3991d06fc3fe67fe3b01f2441cab0a .NET: Add
DeclarativeWorkflowJsonOptions for AOT-safe declarative workflow
checkpointing (#​6745)
* a7332d69a8ffac3ad6039466d60761c970d7c367 .NET: Fix issue with resuming
checkpoint after package version upgrade (#​6670)
* e57e9455b367b1b83526fdaa21257125baac5d5d Build(deps): Bump
hyperlight-sandbox-python-guest in /python (#​6737)
* d97bc4fe3912cc32b99d654336e543d0ca5ff446 Build(deps): Bump
huggingface-hub from 1.20.1 to 1.21.0 in /python (#​6738)
* 5d57b10b9f2161ed765cbe4b8336604d6db7a6c2 Build(deps): Bump
google-genai from 1.75.0 to 2.10.0 in /python (#​6739)
* 8cd71dd4f62c35d2f868ac1b5d08956e9116f599 Build(deps): Bump fastapi
from 0.124.4 to 0.138.0 in /python (#​6740)
* 5e5dd87c91f0941ad69d247fe00b484644c125f6 Update .NET SDK to 10.0.301
(#​6730)
* d0be98d649f97ee2b723730ae63ddc1567bb87dc Remove
{resource_instructions} and {script_instructions} placeholder mechanism
(#​6706)
<details><summary><b>See More</b></summary>

* 802fe13053d379d68cb21aed108fa55aaf65ed38 Disable failing durable
function integration tests (#​6731)
* d75f2286f4c234d860919a78bcaf4040b91db0c4 Python: Add Telegram channel
for agent-framework-hosting (#​6698) [ #​6588, #​6265 ]
* ce74c84bdb1f2647fe8a484744ea359bc42e6e0f Python: Preserve OTel parent
context for deferred streams (#​6709)
* 4fb1fb615a1729f5cf1d017427f7fd12ee2ed8d2 Python: Fix Hyperlight
CodeAct span parenting (#​6712)
* 41a9c54bbee3c0724c14d4975b3f0630e0f0d28f Add Foundry project
environment variables (#​6721)
* 9f1ee23a4bcdb92dd9011a1ce778dc25d2dc5f16 Python: [BREAKING] Refactor
FileSkillsSource for depth-based discovery and predicate filters
(#​6488) [ #​6109 ]
* 336a19fd326fd3e2d8c580096ca3e5d13a4e1342 .NET: .NET samples: migrate
coding samples to Foundry-first AIProjectClient (#​6557)
* 0283fd00a12af27ad0a7a72b70ce4f2fc8c34629 .NET: Fix hosted agent crash
after tool call by rooting session store under $HOME (#​6231) (#​6714)
* 5627dc0493e525e948e9985adf37baff21574569 docs: Add Python session
identity ADR (#​6630)
* 1df47667eadf0283637cd73b99cda63f13a28df5 Python: surface cache and
reasoning token counts for the Bedrock and Gemini connectors (#​6640)
* 91f639a694f9b70b79328058f284400897b2d0d3 Python: Explicitly emit
available_resources and available_scripts in skill content (#​6694) [
#​6348 ]
* a9e5f6d7985a555d042ff807995da7ca908f86d2 .NET: .NET Foundry: add
CreateMcpTool projectConnectionId overload (#​6703)
* ea7ae1cc00e02918a231cc97e2794b02fcfbb87c .NET: [BREAKING] Support
archive-type skills in AgentMcpSkillsSource (#​6631)
* e049bb569179384f11eb8a1b41d8a987fa416203 .NET: Add
IncludeDetailedErrors option for skill script execution (#​6680) [
#​6304 ]
* dd4b7ff475e467ac4490090eb2436e80b898dd5c .NET: Fix
SearchDirectoriesForSkills to stop recursing after finding SKILL.md
(#​6686) [ #​6683 ]
* d5c15f2fe15f00118d818f79b1b532ee4ec52f03 .NET/Python: Purview: prefer
token principal for user identity (#​6693)
* 4cf7ace4463d0b4aa4a320d9671325485433f3a7 Python: track dependency
maintenance PR creation (#​6665)
* 5fff0df2afda58e4898f6cbe1a18ef4f054b11ff Python: Add load_dotenv to
get-started samples and fix chat_response_… (#​6691)
* acb28a63b5b739f5fdba4d8ac46d8c805f30b56a Python: Fix MCP metadata and
tool name handling (#​6656)
* f2d02e58b3b0e7f7d87353e2c9bf36a5834da665 Python: Add hosting core and
Responses channel (#​6580)
* 36420c515eb80015de1a5ff2098db5f6ce041aab Python: Align serialized tool
format to OTel GenAI tool def format (#​6556)

This list of changes was [auto
generated](https://msdata.visualstudio.com/Vienna/_build/results?buildId=224595233&view=logs).</details>

## 1.11.0



## Changes:

* 1109d0bf64f3d1dd1e1f2bcaf3b38912ec7e833b Get date suffix up to date
with release date (#​6690)
* e030fb53ded912d0ce71bd80fe4c0455bc9d5478 .NET: Replace the symlink
index entries with regular file entries (#​6687)
* e6ebba1884238134628ad081249b451c0eb15df9 Add ADR 0029: Skills over MCP
implementation design options (#​6679)
* 7051a4920d87387587a32ab217a2cf35433bece8 Python: Add MCP as a hard dep
in Foundry Hosting (#​6634)
* 15df1152fc8d0617c6e6cfc439a260cfa09fea14 .NET: Add sample for per-run
refreshable MCP authentication headers (#​6624) [ #​1631 ]
* a2018b40f907c012bc5398e9ff36d69897d35d6f Python: [BREAKING] Require
approval for file-access tools with read-only auto-approval (#​6599)
* e4b89373f1cdc2fe6a047fd74d48bf9ab74b951b .NET: Explicitly emit
available_resources and available_scripts in skill content (#​6672)
* 88f0b23fb022b0adf33f5772b4b56a41289db748 .NET: Change A2A default
session store to NoopAgentSessionStore (#​6635)
* 9ba6b3a94e40dd90765719e44f5807a4aed4209e Remove unnecessary
declarative logging (#​6677)
* 2999f7416f7f171e0a8ae78a8d6c747a7174e71c Update package release
version (#​6673)
<details><summary><b>See More</b></summary>

* 09791533cfc5aa4b862c1d2790d91a1881b222a0 .NET: Emit execute_tool spans
by placing OpenTelemetry below FunctionInvokingChatClient (#​6667)
* 7f2e19ca2ffd2c11047099f853b7b7a3e46cf0b9 Python: Ensure spans created
inside sync preparations in streaming call are correctly nested (#​6552)
* 7b6f582b13436a034ec293d6f663f98dde772076 Python: Agent Harness blog
post accompanying samples part 1 (#​6605)
* dc60722cee1b208b7e91482d3ecc661542cbd342 .NET: Project ToolExecution
events as FunctionCallContent/FunctionResultContent in
GitHubCopilotAgent streaming (#​6228) [ #​4734, #​5897 ]
* 2f5a76ab1de1bb4f4710f320bc1074240802bfc2 Fix issue with resuming
checkpoint after package version upgrade (#​6636)
* a7381d8bef5cdffe4b9417a530989616aad4e760 Python: stabilize dependency
maintenance final checks (#​6662)
* d108d4b54937346eb56fa65a7455d1f26fdbd4a7 Python: [BREAKING] Integrate
looping into HarnessAgent (#​6607)
* fd160a77824e98a50661109c12eba981c8b0f16a Python: fix dependency
maintenance cutoff (#​6658)
* ad3c1535c4cdb4b898161a1e95c4f5bab8c01917 fix: propagate
EnableSensitiveData to auto-wired inner OpenTelemetryChatClient (#​6096)
[ #​5873 ]
* 10b7d08bff96502229e102f5c3f0474940871124 .NET: fix(hosting): emit
url_citation annotation events from streamed AI Search responses
(#​6649) [ #​6641 ]
* fc3111c391afd5451c055a86d5cfd37ffab59617 Python: Add FoundryAgent
conversation session helper (#​6623)
* 098e52158655561c18a9e2afadea6b63374c45e3 .NET: Bring Hosted-Toolbox
sample to parity with sibling hosting samples (#​6633)
* 7435dd48d0e13811ade0f112f1a1aa2afc4b469d Python: harden Hyperlight
output capture against symlinks (#​6601)
* 148f57020aaa9aabf797cdd5f0a42249972cd7ce Python: host MAF workflows on
a standalone Durable Task worker (#​6418) [ #​6608 ]
* 89d19a23704713b1f214e3e229b800cba9ac84bd .NET: Migrate 01-get-started
samples to Foundry as canonical default (#​6555)
* c81590234413c3ece097c486ebdf9e2c6339b41b .NET: InProcessRunnerContext
bugfix for workflows (#​6551)
* 074ac68a6c284ec9532f118a6593d3a300ef1693 .NET: Harden fan-in barrier
checkpoint state and extend resume coverage (#​6574)
* d049d94b4997782c4aa59ac86eddc8dcdb22dfef Python: consolidate
dependency maintenance workflow (#​6570)
* 41995e265de4183eea07ca14a0cb74baf9337442 Build(deps): Bump anthropic
from 0.80.0 to 0.107.1 in /python (#​6396)
* 2adacb3034013de1f5bb9ccc35af34705a03a92b Bump aiohttp from 3.13.4 to
3.14.1 in /python (#​6395)
* 6e3836698bcb67db5da4f47cd101ef5868efdcdd Bump Anthropic.Foundry from
0.5.0 to 0.6.0 (#​6057)
* 0d3e3504f0db55b4826f9efb05cd1f4c57009847 Build(deps): Bump mistralai
from 2.4.2 to 2.4.9 in /python (#​6393)
* 2ba97ebcca7f62764ccc03f5d82f0bdc00386119 Bump openai from 2.24.0 to
2.43.0 in /python (#​6394)
* 2d0555c5375ba42eb92fb8d783669ffe4bba4b14 Python: re-role trailing
assistant message to user for Anthropic compatibility (fixes #​5008)
(#​6207) [ #​5934 ]
* 5145d50be803830e5710592b0e3879a88b264cc7 Python: Fix AG-UI tool
history replay sanitization  (#​6581)
* 7f7c88bfa5b45fd9039837e205d79e08917a3b23 Build(deps): Bump
python-multipart from 0.0.26 to 0.0.32 in /python (#​6406)
* bcef77af6a5e811380d77db731989256b2940cdb .NET: (Durable): Scope
workflow status/respond endpoints to route workflow name (#​6608)
* 54a30571aa62a3c87b1a4ed924796d5d6e553b9c Dotnet - Add support for
Foundry Adaptive evals (#​6267) [ #​6101 ]
* dc445592ed4f4776b98e0e04cff3712dceb02746 Python: [BREAKING] Port
FileMemoryProvider and integrate FileMemoryProvider & FileAccess into
the harness agent (#​6547)
* 92823e9e61e6233d049fce925cf4d075f504a0cf .NET: [BREAKING] Require
approval for FileAccessProvider tools with auto-approval rules (#​6521)
* 7a491f8e766a508fef37f3189bbc0a79ff4be3aa Python: Add hosting channel
ADRs and spec (#​6578)
* 015e3bcd3b05f998b9a6a1fe5eb81ed42c2a4c2e .NET: Enabling sequential
orchestration to pass entire conversation or only previous output.
(#​6554)
* 6e95517659c34623f6249a52feaf615955a0826b Python: Split type checkers
by target (pyright source, 5 checkers on tests/samples) (#​6443) [
#​6275 ]
* 97bb1d588a074437e5b264a9e98779220ebbc906 Migrate to using issue type
bug instead of label bug. (#​6595)
 ... (truncated)

## 1.10.0


## Changes:

* dd29f9aa654257ad807ef7fdcd25fcc7ded109f6 .NET: Hosted Agent Sample -
Toolbox with various Auth (#​5777) (#​6018)
* a5f4e0078e1c0d1d8fcd580a1bcccc8836093b98 .NET: Fix .NET Copilot
integration tests for SDK v1.0.0 (#​6424)
* 3c0c12cd463601c451130884b5442dc42b12cf1e .NET: Update release version
for 2026-06-10 release and switch GH.CP Agent to RC (#​6454)
* cea83bd8d543713ae81e57513732c2a51ee1927b .NET: Bump
Microsoft.Extensions.AI packages to 10.6.0, align transitive dependency
floor, and update Merge Gatekeeper ignores (#​6148)
* 7ae73a68d66423c19a1401197db824e6fa0ec9c1 Remove broken Atomic Agents
docs link (#​6442)
* 5e097276a0292c50cc00f59d3b687edf4551b3e8 .NET: Add Foundry Deployment
docs to HA sample READMEs (#​6365)
<details><summary><b>See More</b></summary>

* 383d551b86fb227a22cbd666c0ed0a7c7e59affc Purview: Parallelize PSPC
cold-cache scope refresh (#​5832)
* 2a345e5d3b2ba3096bde727256faa1ed544b9895 .NET: Fix Magentic to share
agent replies across team (#​6222)
* 5e6eb6f121bf3c414734fd8edc2047e1c92c86ad New logo in banner (#​6380)
* dbfacbfc4aa676aca1c0a866e78e4da08ea2d2de New Microsoft Agent Framework
logos (#​6378)
* 96d242fa7f47abfa322b5413ec5b7cd0b9a37531 .NET: Remove required token
params from HarnessAgent, make compaction opt-in (#​6409) [ #​6333 ]
* 9486c76ef80225a1dca590eb606733a963b96719 .NET: Add Reasoning to
ChatClientAgent ChatOptions merging (#​5463)
* d222079df9b672abe96c58ba04e78f8499b7b819 .NET: fix: preserve AG-UI
session history (#​5904)
* af772997af971268ce48ce4e99d48aab4fc286e0 .NET: [BREAKING] Migrate .NET
GitHub Copilot SDK to v1.0.0 (#​6381) [ #​6402, #​6404 ]
* b343625c1ff54b344e7facdf59b51003bd787921 .NET: Add approval bypassing
to harness as the default (#​6387)
* 9bc7b27813010d60ce643c05d07c27d3b0c55821 Match AG-UI approval
responses to requested arguments (#​6376)
* 6a2efeae7ceb7ae111df76b00cd1cb9d4e25a5b8 .NET: [BREAKING] Fix hosting
bugs (#​6388)
* 331201294bfda427b44dc49cfd730a1b41e4dedf .NET: Fix single-column value
unwrap in declarative workflow (#​6367)
* fa9e08657618a6cf50818f7069ee4af3d5c725e6 fix: preserve foreach record
values (#​6208)
* 6bd2cfec03a3f4cd6599da9f0b314e9de2786f60 .NET: [BREAKING] Add
auto-approval rules (heuristics) to ToolApprovalAgent (#​6335)
* ab8ba8fc6193f907aff519f875786f5c8bfbb924 .NET: Allow storage of
auto-approved functions (#​4950)
* bbccb7c28c86a0c2712d65e367fa8029065294eb .NET: Bump
ModelContextProtocol from 1.1.0 to 1.2.0 (#​3956) (#​6239)
* bb9ed63a347b3e437106b27ff7547bd388fd5bbe .NET: Restructure skill
script schemas XML and remove resources from body (#​6343)
* bc0e65d7162e9195249b43d869c6361789d73202 fix: drop hosted MCP calls
when reasoning is stripped (#​6210)
* c3901a4ddda0c0467472de786b21aad66ff138bf Fix
Observability/WorkflowAsAnAgent sampl (#​6316)
* ba617fc3b5028605e55dc56050871ef918913f5e Don't count dependabot prs as
part of the limit (#​6317)

This list of changes was [auto
generated](https://msdata.visualstudio.com/Vienna/_build/results?buildId=222622287&view=logs).</details>

Commits viewable in [compare
view](https://github.com/microsoft/agent-framework/compare/dotnet-1.9.0...dotnet-1.19.0).
</details>

Updated
[Microsoft.Agents.AI.OpenAI](https://github.com/microsoft/agent-framework)
from 1.9.0 to 1.19.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Agents.AI.OpenAI's
releases](https://github.com/microsoft/agent-framework/releases)._

## 1.19.0

## What's Changed
* .NET: Add session-persisted chat client routing by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7641
* .NET: Fix snake_case argument names in Harness file tool descriptions
by @​westey-m with @​Copilot in
https://github.com/microsoft/agent-framework/pull/7731
* .NET: Pass IServiceProvider to ChatClientAgent in AddAIAgent overloads
by @​westey-m in https://github.com/microsoft/agent-framework/pull/7737
* .NET: Python: Clarify PR review comment resolution by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7746
* .NET: Update AG-UI samples for latest MAF + AG-UI SDK and align with
docs by @​danroth27 in
https://github.com/microsoft/agent-framework/pull/7295
* .NET: Migrate remaining Foundry hosted samples to source deployment by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7668
* .NET: agent-hooks interception contract as a first-class experimental
feature by @​MohammadHaroonAbuomar in
https://github.com/microsoft/agent-framework/pull/7564
* .NET: Forward AG-UI context and additional properties by @​javiercn in
https://github.com/microsoft/agent-framework/pull/7742
* .NET: Suppress Swagger UI CodeQL alert in AgentWebChat sample by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7764
* .NET: Remove AGUI history special cases from ChatClientAgent by
@​javiercn in https://github.com/microsoft/agent-framework/pull/7741
* .NET: Fix A2A streaming artifact updates by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7722
* Python: Harness blog part4 samples by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7698
* .NET: Clarify compaction provider and chat reducer choices by
@​ravikiranpagidi in
https://github.com/microsoft/agent-framework/pull/7678
* .NET: Add Azure Blob Storage session persistence by @​DeagleGross in
https://github.com/microsoft/agent-framework/pull/1893
* .NET: Persist hosted agent state in Foundry by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7649
* .NET: [BREAKING] Migrate MCP long-running task support to the
2026-07-28 Tasks extension by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7774
* .NET: Add feature-usage bitmask by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7709
* Bump Anthropic from 12.35.1 to 12.42.0 by @​dependabot[bot] in
https://github.com/microsoft/agent-framework/pull/7778
* .NET: Fix ReasoningSummary passthrough in GitHub Copilot resume config
by @​chandramouleswaran in
https://github.com/microsoft/agent-framework/pull/6441
* .NET: Bump AgentMemory from 1.3.0 to 1.4.1 by @​dependabot[bot] in
https://github.com/microsoft/agent-framework/pull/7639
* .NET: Add support for Resilient long-running and Steerable Foundry
Hosted Agents by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7370
* .NET: Update version for 1.19.0 release by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7814

## New Contributors
* @​danroth27 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7295
* @​manjunathshiva made their first contribution in
https://github.com/microsoft/agent-framework/pull/7755
* @​alexliluz made their first contribution in
https://github.com/microsoft/agent-framework/pull/7766
* @​danfiedler-msft made their first contribution in
https://github.com/microsoft/agent-framework/pull/7768
* @​ravikiranpagidi made their first contribution in
https://github.com/microsoft/agent-framework/pull/7678
* @​cr-sbarbouche made their first contribution in
https://github.com/microsoft/agent-framework/pull/7734
* @​ranst91 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7423
* @​qmuntal made their first contribution in
https://github.com/microsoft/agent-framework/pull/7754

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.18.0...dotnet-1.19.0

## 1.18.0

## What's Changed
* .NET: [Experimental] Extend A2A task store with isolation key scoping
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7504
* .NET: Add CodeQL suppression for DevUI proxy validation by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7505
* .NET: Bound the tool-approval auto-approval loop (#​7472) by @​atty57
in https://github.com/microsoft/agent-framework/pull/7474
* .NET: Harden file skill discovery by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7540
* .NET: Give a hosted agent a single source of conversation history by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7525
* .NET: Aggregate usage across looping agents and chat clients by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7539
* .NET: Store executable function calls bypassed by declaration-only
tool calls by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7388
* .NET: [BREAKING] Rename to AgentIsolationKeyProvider by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7567
* .NET: Improve string parsing in declarative workflows by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7535
* .NET: Add Cosmos NoSQL vector memory sample by @​nos-redacted in
https://github.com/microsoft/agent-framework/pull/7552
* .NET: Fix misleading workflow protocol attribute diagnostics by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7609
* .NET: Prevent telemetry serialization failures from failing workflows
by @​peibekwe in https://github.com/microsoft/agent-framework/pull/7612
* .NET: Add Options for Hosted Agent to Allow Backend Storage by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7572
* .NET: Add BackgroundAgentsProvider.ReleaseSessionAsync to cancel and
release per-session background tasks by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7602
* .NET: Remove clear and package source mapping from nuget.config to
allow user level config inheritance by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7646
* .NET: Fix IDE0039 by using local functions in samples by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7666
* .NET: Allow agents to opt into concurrent tool invocation by
@​ump45nose in https://github.com/microsoft/agent-framework/pull/7650
* .NET: Add Foundry hosted session and user identity pass-through by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7648
* .NET: Add Cosmos chat history retrieval API by @​ilia-sokolov in
https://github.com/microsoft/agent-framework/pull/7412
* .NET: Fix declarative workflows deep research sample by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7674
* .NET: Update version for 1.18.0 release by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7713
* .NET: Fix release build analyzer failures by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7721

## New Contributors
* @​nos-redacted made their first contribution in
https://github.com/microsoft/agent-framework/pull/7552
* @​luisangelrod made their first contribution in
https://github.com/microsoft/agent-framework/pull/7509
* @​uuzzrm made their first contribution in
https://github.com/microsoft/agent-framework/pull/7597
* @​chinmayv095 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7470
* @​ump45nose made their first contribution in
https://github.com/microsoft/agent-framework/pull/7650
* @​ilia-sokolov made their first contribution in
https://github.com/microsoft/agent-framework/pull/7412
* @​LobsterQBA made their first contribution in
https://github.com/microsoft/agent-framework/pull/7606
* @​weed33834 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7557

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.17.0...dotnet-1.18.0

## 1.17.0

## What's Changed
* .NET and Python: Extract Durable Task and Azure Functions integrations
by @​cgillum in https://github.com/microsoft/agent-framework/pull/7465
* .NET: Fix Handoff orchestration sample not responding to user input by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7442
* .NET: Fail declarative workflows when an agent returns an error by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7497
* .NET: Updating version for dotnet release 1.17.0 by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7514

## 1.16.0

## What's Changed
* .NET: fix InMemoryChatHistoryProvider persisting when service stores
history by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7284
* .NET: Add TodoProvider and AgentModeProvider samples by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7262
* .NET: Graduate GitHub Copilot agent to stable by @​giles17 in
https://github.com/microsoft/agent-framework/pull/7313
* .NET: Create session for tool approval agent when none provided by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7310
* .NET: Add Microsoft.Agents.AI.LocalCodeAct to release solution filter
by @​westey-m with @​Copilot in
https://github.com/microsoft/agent-framework/pull/7343
* .NET: Preserve table state after declarative EditTable Add by @​KXHXK
in https://github.com/microsoft/agent-framework/pull/7324
* .NET: Forward A2A MessageSendParams.Configuration in the A2A adapter
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/7365
* .NET: Workflows: quarantine flaky InputWaiter timeout test (#​7360) by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7361
* .NET: Preserve table state across declarative EditTable operations  by
@​peibekwe in https://github.com/microsoft/agent-framework/pull/7353
* .NET: Add GitHub Copilot BYOK sample by @​droideronline in
https://github.com/microsoft/agent-framework/pull/7337
* .NET: Add Anthropic-backed live tests for the OpenAI Responses hosting
helpers by @​ANcpLua in
https://github.com/microsoft/agent-framework/pull/7362
* .NET: Fix and re-enable flaky InputWaiter timeout test by @​peibekwe
in https://github.com/microsoft/agent-framework/pull/7377
* .NET: Add source (ZIP) deploy oriented hosted agent samples by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/7372
* .NET: Bump .NET SDK from 10.0.301 to 10.0.302 by @​giles17 in
https://github.com/microsoft/agent-framework/pull/7376
* .NET: Add FileMemoryProvider sample to 02-agents/AgentWithMemory by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7401
* .NET: Add regression tests and sample guidance for stable agent IDs in
checkpointed workflows by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7415
* .NET: Updating version for dotnet release 1.16.0 by @​SergeyMenshykh
in https://github.com/microsoft/agent-framework/pull/7441

## New Contributors
* @​atty57 made their first contribution in
https://github.com/microsoft/agent-framework/pull/7271
* @​sricursion made their first contribution in
https://github.com/microsoft/agent-framework/pull/7291
* @​KXHXK made their first contribution in
https://github.com/microsoft/agent-framework/pull/7324
* @​hsusul made their first contribution in
https://github.com/microsoft/agent-framework/pull/7333
* @​ANcpLua made their first contribution in
https://github.com/microsoft/agent-framework/pull/7362
* @​itjuba made their first contribution in
https://github.com/microsoft/agent-framework/pull/7127

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-github-copilot-1.0.0...dotnet-1.16.0

## 1.15.0

## What's Changed
* Python: Add MCPStreamableHTTPTool security guidance for custom http
client by @​TaoChenOSU in
https://github.com/microsoft/agent-framework/pull/7245
* Harden workflow credential selection by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7249
* Python: preserve Gemini 3 thought_signature across function-call
replays by @​giles17 in
https://github.com/microsoft/agent-framework/pull/7095
* .NET: [BREAKING] Hosting OpenAI Responses protocol helpers and
optional execution state by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7000
* .NET: Fix declarative autosend output by @​alliscode in
https://github.com/microsoft/agent-framework/pull/7217
* .NET: Updating dotnet version for release. by @​alliscode in
https://github.com/microsoft/agent-framework/pull/7265
* .NET: Added GettingStarted example demonstrating Dapr as an agent
provider by @​WhitWaldo in
https://github.com/microsoft/agent-framework/pull/1615
* Python: Support prompt cache breakpoints for GPT-5.6 models in OpenAI
clients by @​Mordris in
https://github.com/microsoft/agent-framework/pull/7163
* .NET: Fix expensive logging by @​alliscode in
https://github.com/microsoft/agent-framework/pull/7268
* Python: Fix stateless replay of reasoning-paired tool calls by
@​moonbox3 in https://github.com/microsoft/agent-framework/pull/7233
* Reduce workflow credential exposure by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7270

## New Contributors
* @​WhitWaldo made their first contribution in
https://github.com/microsoft/agent-framework/pull/1615
* @​Mordris made their first contribution in
https://github.com/microsoft/agent-framework/pull/7163

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.12.0...dotnet-1.15.0

## 1.14.0

## What's Changed
* .NET: Fix CosmosChatHistoryProvider: omit ttl when MessageTtlSeconds
is nul… by @​TheovanKraay in
https://github.com/microsoft/agent-framework/pull/7030
* .NET: Fix CompactionMessageIndex.IsSummaryMessage by @​pwoosam in
https://github.com/microsoft/agent-framework/pull/7042
* .NET: Fix workflow session bug by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7032
* .NET: Enable Valkey NuGet package publishing by @​westey-m with
@​Copilot in https://github.com/microsoft/agent-framework/pull/7059
* .NET: [BREAKING] Graduate message injection out of experimental by
@​westey-m in https://github.com/microsoft/agent-framework/pull/7044
* .NET: [BREAKING] Graduate todo and agent mode providers out of
experimental by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7052
* Update issue triage by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7098
* .NET: Add name collision warnings for auto-approvals by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7089
* .NET: Update Microsoft Foundry branding by @​nicholasdbrady in
https://github.com/microsoft/agent-framework/pull/6999
* .NET: [BREAKING] Harness: Switch FileAccess to opt-in by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7093
* fix typos in XML doc comments, ADR docs, and test comments by
@​rinceyuan in https://github.com/microsoft/agent-framework/pull/7085
* .NET: [BREAKING] Graduate ToolApprovalAgent and add
ToolAutoApprovalRuleContext by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7107
* Harden manual integration test trust boundary by @​moonbox3 in
https://github.com/microsoft/agent-framework/pull/7081
* CI: resolve PR author in community team check by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7129
* Fix message ordering in workflow-hosted agents by @​peibekwe in
https://github.com/microsoft/agent-framework/pull/7123
* .NET: [BREAKING] Graduate FileMemoryProvider by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7114
* .NET: Preserve UTF-8 order in HeadTailBuffer by @​jstar0 in
https://github.com/microsoft/agent-framework/pull/7128
* .NET: [Feature]: .NET Improve ChatClientAgentSession constructor by
@​feiyun0112 in https://github.com/microsoft/agent-framework/pull/7142
* .NET: Fix LocalCodeAct validation and package checks by
@​eavanvalkenburg in
https://github.com/microsoft/agent-framework/pull/7138
* samples: add AgentMemory (Neo4j-agent memory reimplemented in NET )
shopping assistant sample by @​joslat in
https://github.com/microsoft/agent-framework/pull/7096
* .NET: Honor terminal workflow outputs in Workflow.AsAIAgent responses
by @​ssccinng in https://github.com/microsoft/agent-framework/pull/6212
* .NET: Refactor Workflows MessageMerger to preserve message order and
structure by @​marcominerva in
https://github.com/microsoft/agent-framework/pull/6826
* .NET: Populate AgentResponse metadata in CopilotStudioAgent by
@​anneheartrecord in
https://github.com/microsoft/agent-framework/pull/6791
* .NET: [BREAKING] Bind tool-approval responses to surfaced approval
requests by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7111
* .NET: [BREAKING] Graduate HarnessAgent by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7119
* .NET: Version bump for .net release by @​westey-m in
https://github.com/microsoft/agent-framework/pull/7237
* .NET: Cover source-type-agnostic toolbox consent parsing (a2a_preview)
by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/7229
* [BREAKING] Python: add Responses conversation ID helper by
@​eavanvalkenburg in
https://github.com/microsoft/agent-framework/pull/7234
* The legacy .NET package Microsoft.Agents.AI.AGUI has been split into
external AG-UI SDK packages: AGUI.Client, AGUI.Server,
AGUI.Abstractions, AGUI.Protobuf (optional transport), and
AGUI.Formatting. The ASP.NET Core hosting integration remains in this
repository as Microsoft.Agents.AI.Hosting.AGUI.AspNetCore, now layered
on top of AGUI.Server. If you are upgrading, replace
Microsoft.Agents.AI.AGUI with the relevant AGUI.* packages and rename
AddAGUI()/MapAGUI() to AddAGUIServer()/MapAGUIServer().

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.11.0...dotnet-1.14.0

## 1.13.0

## What's Changed
* .NET: Harden dotnet-format workflow shell handling by @​SergeyMenshykh
in https://github.com/microsoft/agent-framework/pull/6796
* .NET: Add AgentSkillsSourceContext to AgentSkillsSource.GetSkillsAsync
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6797
* .NET: Foundry Hosting per-user session isolation and Responses v2
protocol fast-fail by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6832
* .NET: Pin patched OpenAPI dependencies to unblock NU1903 in sample
restores by @​rogerbarreto with @​Copilot in
https://github.com/microsoft/agent-framework/pull/6853
* Make skills source classes public with Experimental attribute by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6838
* .NET: Consolidate skill-source caching and make skill sources
disposable by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6827
* .NET: Add skill approval options by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6843
* .NET: [BREAKING] Add file editing tools and align
FileAccess/FileMemory store API by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6807
* .NET: [BREAKING] Refactor OpenAI Hosting OptionsMapping to disallow
passing options by default by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6855
* .NET: Remove Experimental attribute from Skills API in
Microsoft.Agents.AI by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6861
* .NET: Foundry Hosting gracefully tolerates lacking user identity when
run locally by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6870
* .NET: Bump Azure.AI.Projects to 2.1.0-beta.4 by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6795
* .NET: Make default-approval harness features configurable +
customizable shell tool by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6880
* .NET: Improving DotNet samples by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6869
* .NET: fix: Require explicit TokenCredential in AddFoundryToolboxes by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6877
* .NET: Update .NET version to 1.13.0 by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6900

## New Contributors
* @​VectorPeak made their first contribution in
https://github.com/microsoft/agent-framework/pull/6818

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.12.0...dotnet-1.13.0

## 1.12.1

## [1.12.1] - 2026-07-22

### Added
- **agent-framework-openai**: Add explicit prompt cache breakpoints for
GPT-5.6 models and a usage sample
([#​7163](https://github.com/microsoft/agent-framework/pull/7163))

### Changed
- **agent-framework-ag-ui**: Promote the package from release candidate
to stable
- **agent-framework-core**: Add security guidance for custom MCP
Streamable HTTP clients
([#​7245](https://github.com/microsoft/agent-framework/pull/7245))

### Fixed
- **agent-framework-gemini**: Preserve Gemini 3 thought signatures
across function-call replays
([#​7095](https://github.com/microsoft/agent-framework/pull/7095))
- **agent-framework-core**, **agent-framework-foundry**,
**agent-framework-foundry-hosting**, **agent-framework-openai**: Fix
stateless replay of reasoning-paired tool calls
([#​7233](https://github.com/microsoft/agent-framework/pull/7233))

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/python-1.12.0...python-1.12.1

## 1.12.0

## What's Changed
* .NET: Fix typo in XML doc comment for workflow outputs param by
@​marcominerva in https://github.com/microsoft/agent-framework/pull/6326
* .NET: Add BackgroundTaskCompletionLoopEvaluator for harness background
agents by @​westey-m in
https://github.com/microsoft/agent-framework/pull/6736
* .NET: Foundry hosted-agent toolbox OAuth consent support by
@​rogerbarreto in https://github.com/microsoft/agent-framework/pull/6718
* .NET: [BREAKING] Align Foundry.Hosting experimental flags to MAAI001
for MAF-specific APIs by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6743
* .NET: Prefer HTTPS Aspire DevUI backends by @​tommasodotNET in
https://github.com/microsoft/agent-framework/pull/6772
* .NET: Disable failing DurableTask and AzureFunctions integration tests
by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6774
* .NET: Sample fix by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6773
* .NET: [BREAKING] Extract caching from AgentSkillsProvider into
CachingAgentSkillsSource by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6768
* .NET: Add description attribute to resource and script elements in
skill body by @​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6759
* .NET: Enforce ApprovalRequiredAIFunction in GitHub Copilot provider
via OnPreToolUse hook by @​giles17 in
https://github.com/microsoft/agent-framework/pull/6674
* .NET: Improve proxy target validation in DevUI aggregator by
@​SergeyMenshykh in
https://github.com/microsoft/agent-framework/pull/6771
* .NET: [BREAKING] Bump Azure.AI.AgentServer to 2.0.0 protocol and
migrate Foundry.Hosting by @​rogerbarreto in
https://github.com/microsoft/agent-framework/pull/6800
* .NET: fix: resolve CA1873 in GitHubCopilotAgent by using LoggerMessage
sour… by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6814
* .NET: fix: resolve CA1873 in GitHubCopilotAgent by using LoggerMessage
sour… by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6815
* .NET: Bumping version for dotnet release. by @​alliscode in
https://github.com/microsoft/agent-framework/pull/6816
* Update NuGet package icon to new Microsoft Agent Framework logo by
@​chetantoshniwal in
https://github.com/microsoft/agent-framework/pull/6812

## New Contributors
* @​marcominerva made their first contribution in
https://github.com/microsoft/agent-framework/pull/6326

**Full Changelog**:
https://github.com/microsoft/agent-framework/compare/dotnet-1.11.1...dotnet-1.12.0

## 1.11.1



## Changes:

* d9ec5eaab4918612ae0f7ddf11499576bdb510bf update package version
(#​6752)
* e3b64fdc4749256fa2d559be18a41f1a008dd7f6 .NET: [BREAKING] Make all
AgentSkillsProvider tools require approval by default (#​6729) [ #​6727
]
* 3a5bbb5f8e3991d06fc3fe67fe3b01f2441cab0a .NET: Add
DeclarativeWorkflowJsonOptions for AOT-safe declarative workflow
checkpointing (#​6745)
* a7332d69a8ffac3ad6039466d60761c970d7c367 .NET: Fix issue with resuming
checkpoint after package version upgrade (#​6670)
* e57e9455b367b1b83526fdaa21257125baac5d5d Build(deps): Bump
hyperlight-sandbox-python-guest in /python (#​6737)
* d97bc4fe3912cc32b99d654336e543d0ca5ff446 Build(deps): Bump
huggingface-hub from 1.20.1 to 1.21.0 in /python (#​6738)
* 5d57b10b9f2161ed765cbe4b8336604d6db7a6c2 Build(deps): Bump
google-genai from 1.75.0 to 2.10.0 in /python (#​6739)
* 8cd71dd4f62c35d2f868ac1b5d08956e9116f599 Build(deps): Bump fastapi
from 0.124.4 to 0.138.0 in /python (#​6740)
* 5e5dd87c91f0941ad69d247fe00b484644c125f6 Update .NET SDK to 10.0.301
(#​6730)
* d0be98d649f97ee2b723730ae63ddc1567bb87dc Remove
{resource_instructions} and {script_instructions} placeholder mechanism
(#​6706)
<details><summary><b>See More</b></summary>

* 802fe13053d379d68cb21aed108fa55aaf65ed38 Disable failing durable
function integration tests (#​6731)
* d75f2286f4c234d860919a78bcaf4040b91db0c4 Python: Add Telegram channel
for agent-framework-hosting (#​6698) [ #​6588, #​6265 ]
* ce74c84bdb1f2647fe8a484744ea359bc42e6e0f Python: Preserve OTel parent
context for deferred streams (#​6709)
* 4fb1fb615a1729f5cf1d017427f7fd12ee2ed8d2 Python: Fix Hyperlight
CodeAct span parenting (#​6712)
* 41a9c54bbee3c0724c14d4975b3f0630e0f0d28f Add Foundry project
environment variables (#​6721)
* 9f1ee23a4bcdb92dd9011a1ce778dc25d2dc5f16 Python: [BREAKING] Refactor
FileSkillsSource for depth-based discovery and predicate filters
(#​6488) [ #​6109 ]
* 336a19fd326fd3e2d8c580096ca3e5d13a4e1342 .NET: .NET samples: migrate
coding samples to Foundry-first AIProjectClient (#​6557)
* 0283fd00a12af27ad0a7a72b70ce4f2fc8c34629 .NET: Fix hosted agent crash
after tool call by rooting session store under $HOME (#​6231) (#​6714)
* 5627dc0493e525e948e9985adf37baff21574569 docs: Add Python session
identity ADR (#​6630)
* 1df47667eadf0283637cd73b99cda63f13a28df5 Python: surface cache and
reasoning token counts for the Bedrock and Gemini connectors (#​6640)
* 91f639a694f9b70b79328058f284400897b2d0d3 Python: Explicitly emit
available_resources and available_scripts in skill content (#​6694) [
#​6348 ]
* a9e5f6d7985a555d042ff807995da7ca908f86d2 .NET: .NET Foundry: add
CreateMcpTool projectConnectionId overload (#​6703)
* ea7ae1cc00e02918a231cc97e2794b02fcfbb87c .NET: [BREAKING] Support
archive-type skills in AgentMcpSkillsSource (#​6631)
* e049bb569179384f11eb8a1b41d8a987fa416203 .NET: Add
IncludeDetailedErrors option for skill script execution (#​6680) [
#​6304 ]
* dd4b7ff475e467ac4490090eb2436e80b898dd5c .NET: Fix
SearchDirectoriesForSkills to stop recursing after finding SKILL.md
(#​6686) [ #​6683 ]
* d5c15f2fe15f00118d818f79b1b532ee4ec52f03 .NET/Python: Purview: prefer
token principal for user identity (#​6693)
* 4cf7ace4463d0b4aa4a320d9671325485433f3a7 Python: track dependency
maintenance PR creation (#​6665)
* 5fff0df2afda58e4898f6cbe1a18ef4f054b11ff Python: Add load_dotenv to
get-started samples and fix chat_response_… (#​6691)
* acb28a63b5b739f5fdba4d8ac46d8c805f30b56a Python: Fix MCP metadata and
tool name handling (#​6656)
* f2d02e58b3b0e7f7d87353e2c9bf36a5834da665 Python: Add hosting core and
Responses channel (#​6580)
* …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change Usage: [PRs], Target: all PRs that introduce changes that are not backward compatible documentation Usage: [Issues, PRs], Target: documentation in the code base and learn docs .NET Usage: [Issues, PRs], Target: .Net workflows Usage: [Issues, PRs], Target: Workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants