The runtime inside one call

Microsoft Agent Framework now provides a supported runtime that can use one binary across local development, containers, and hosted deployment. Function invocation, per-call history, context compaction, a planning list, file memory, skills, web search, tool approval, and OpenTelemetry arrive enabled by default and can be removed individually. Shell tools, file access, background sub-agents, and automatic looping are opt-in and issue warnings when enabled. The builder's gain is avoiding a fresh implementation of these tedious but decisive pieces for every agent.[1]

The comparison reported by InfoQ makes the layer difference visible because it holds the model and task constant and begins with a deterministic mock. Both runtimes reach the same answer in the same number of steps; the difference appears when a loop runs away. Agent Framework stops at its own limit after 40 round trips and returns a warning, while the GitHub Copilot SDK continues to 300 steps when host-side stopping controls are disabled. The contribution here is stronger engineering rather than stronger reasoning: the brake ships inside the runtime instead of becoming another failure boundary the developer must implement.[1]

Unified control does not guarantee an open exit

The GitHub Copilot and Claude Agent SDK connectors preserve identity, content-safety, and observability policies and send events into the same OpenTelemetry traces and Foundry dashboards. That gives separate agents one operational view. The framework is available on GitHub for .NET and Python, while Foundry Hosted Agents use consumption billing. Open code gives teams the option to change the harness itself; the hosted target's identity setup, trace history, and billing create another dependency layer. A unified control surface and an easy provider exit are different properties.[1]

A meaningful builder test goes beyond launching the sample agent. Run the same task locally, in a container, and on the hosted target, then compare which tool approvals, loop limits, context-compaction rules, and traces remain unchanged. Next, remove one connector and observe whether identity and observability data remain portable. General availability moves the runtime onto a serious product rung. For a team, the practical option value lies in how completely the brakes and traces travel to a different deployment target.[1]