Skip to content

Microsoft Agent Framework (Python)

Unified agent SDK that merges Semantic Kernel and AutoGen into one Pythonic library. Build single agents, multi-agent orchestration, cross-framework collaboration (A2A), and declarative workflows against the same primitives.

Install

Terminal window
pip install agent-framework

Version

Core 1.9.0 stable · agent-framework-foundry and agent-framework-openai bundled via agent-framework==1.9.0 · June 2026 · Python 3.10 – 3.13

Best for

Azure-native agents, multi-agent orchestration via WorkflowBuilder, cross-framework A2A, declarative YAML agents.

A guided reading order across the comprehensive guide, 2025 features, advanced and production docs. Each checkpoint is a section — read linearly or dive in wherever suits you.

What’s shipped (June 2026 introspection)

Section titled “What’s shipped (June 2026 introspection)”
  • Stable core APIsagent-framework-core 1.9.0. Upgraded from 1.8.1 on 2026-06-19. All public symbols verified against installed agent-framework==1.9.0; 275 total public symbols (+14 vs 1.8.1). New in 1.9.0: ToolApprovalMiddleware, ToolApprovalRule, ToolApprovalState, AgentLoopMiddleware, JudgeVerdict, todos_remaining, background_tasks_running, SamplingApprovalCallback, to_prompt_agent, FoundryEmbeddingClient, FoundryEmbeddingOptions, FoundryEmbeddingSettings, RawFoundryEmbeddingClient, plus 8 new FoundryChatClient hosted tool factory methods. See Class Deep Dives Vol. 17 for source-verified coverage of all new 1.9.0 symbols. Previously stable in 1.8.1: 261 total public symbols. Previously new in 1.8.0: AgentFileStore, FileSystemAgentFileStore, InMemoryAgentFileStore, FileAccessProvider, FileSearchResult, FileSearchMatch, MCPSkill, MCPSkillResource, MCPSkillsSource, ToolMode, AgentEvalConverter, CheckResult, ExpectedToolCall, RubricScore, ChatContext, WorkflowAgent, WorkflowContext, TruncationStrategy, HistoryProvider, InMemoryHistoryProvider, DelegatingSkillsSource, InMemorySkillsSource, FunctionInvocationContext, FunctionInvocationLayer. See Class Deep Dives Vol. 8 and Vol. 10 for source-verified coverage.
  • First-party chat clientsagent_framework.foundry.FoundryChatClient, agent_framework.openai.OpenAIChatClient, agent_framework.anthropic.AnthropicClient, plus Bedrock / Ollama in the 1.0.0b provider line.
  • Skills (experimental)MemoryStore, SkillResource, InlineSkillResource, ClassSkill, InlineSkill, FileSkill now emit ExperimentalWarning on import — do not depend on these APIs in production yet.
  • Middleware@chat_middleware / @agent_middleware / @function_middleware decorators and base classes; pass middleware=[...] (must be a list in 2026 releases).
  • WorkflowsWorkflowBuilder with .add_edge / .add_chain / .add_fan_in_edges / .add_fan_out_edges / .add_switch_case_edge_group / .add_multi_selection_edge_group; checkpoint via FileCheckpointStorage / InMemoryCheckpointStorage.
  • Functional workflows (experimental)@workflow / @step decorators and RunContext for HITL and state — write workflows as plain async Python functions without graph wiring.
  • Declarative agents (beta)agent_framework.declarative.AgentFactory / WorkflowFactory load from YAML.
  • A2A (beta) — one class, agent_framework.a2a.A2AAgent, wraps a remote A2A endpoint as a local Agent.
import asyncio
from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient
async def main():
agent = Agent(
client=OpenAIChatClient(), # positional or keyword
instructions="You are a helpful assistant.",
)
response = await agent.run("What is the Microsoft Agent Framework?")
print(response.text)
asyncio.run(main())

Previous drafts of this page used a ChatAgent(chat_client=...) minimal example. ChatAgent is not a public class in agent-framework-core 1.4.0 — the primary agent class is Agent and the keyword is client= (not chat_client=).

Ready for the full walk-through? Start with Core Fundamentals →


DateVersionChanges
2026-06-231.2.8Added Class Deep Dives Vol. 21 (source-verified at agent-framework==1.9.0): WorkflowContext[OutT, W_OutT] (per-executor execution context — send_message/yield_output/request_info API, state R/W with commit/discard, source_executor_ids fan-in list, is_streaming flag, current_agent_name); FanInEdgeGroup + FanOutEdgeGroup (converging/broadcasting edge groups — min_sources/min_targets positive-value validation, selection_func dynamic routing callback, to_dict/from_dict serialization round-trip); SwitchCaseEdgeGroup + SwitchCaseEdgeGroupCase + SwitchCaseEdgeGroupDefault (switch/case routing — sequential predicate evaluation, exactly-one-default invariant, missing-condition placeholder raises RuntimeError on call, condition re-registration pattern); TokenBudgetComposedStrategy (multi-strategy composition — early_stop short-circuit, annotate_message_groups pipeline pass-through, strict-budget double-fallback with final truncation); SelectiveToolCallCompactionStrategy + ToolResultCompactionStrategy (tool history reduction — exclude list vs inline summary replacement, keep_last_tool_call_groups sliding retention, exclude_tools/include_tools selector); SlidingWindowStrategy + SummarizationStrategy (sliding window + LLM-backed summarization — preserve_system, target_count+threshold trigger, bidirectional summary trace metadata injection); StepWrapper + FunctionalWorkflow + RunContext (functional workflow internals — per-step caching by call_index, executor_bypassed event on cache hit, checkpoint_storage per step, as_agent() wrapper, RunContext.set_state/get_state); MCPWebsocketTool + MCPStreamableHTTPTool (MCP network transports — WebSocket wss:// reconnect loop, streamable HTTP/SSE with header_provider ContextVar injection, shared MCPTool base); MCPTaskOptions (SEP-2663 long-running task lifecycle — tasks/calltasks/get polling → tasks/result, default_ttl positive-value validation, max_task_wait, cancel_remote_task_on_local_cancellation, fire-and-forget pattern); AgentResponseUpdate + ChatResponseUpdate + ContinuationToken (streaming chunk types — .text property, continuation_token for background polling resumption, author_name in multi-agent streams, finish_reason). Zero→Hero extended to step 43; Jump-to-topic, Zero→Hero, and Reference grids updated. Description bumped to 21 volumes / 220+ classes.
2026-06-221.2.7Added Class Deep Dives Vol. 20 (source-verified at agent-framework==1.9.0): 6 hosted-tool capability Protocols (SupportsCodeInterpreterTool, SupportsWebSearchTool, SupportsImageGenerationTool, SupportsMCPTool, SupportsFileSearchTool, SupportsShellTool — all @runtime_checkable, provider-agnostic isinstance guard + factory method call patterns, custom client satisfying multiple Protocols); SupportsGetEmbeddings (typed embedding duck-typing Protocol — get_embeddings with contravariant input TypeVar, covariant EmbeddingT, opaque EmbeddingProtocolOptionsT, additional_properties required attribute, isinstance guard); ReleaseCandidateFeature + FeatureStageWarning + ExperimentalWarning (feature staging system — _WARNED_FEATURES set deduplication per (category, feature_id), _install_feature_stage_formatter single-line formatter, ExperimentalWarning subclasses FeatureStageWarning subclasses FutureWarning, ReleaseCandidateFeature empty in 1.9.0, _FEATURE_STAGE_ATTR/_FEATURE_ID_ATTR runtime introspection, pytest filterwarnings("error", ...) CI pattern); EmbeddingGenerationOptions + Embedding[T] + GeneratedEmbeddings[T, O] (embedding DTO layer — EmbeddingGenerationOptions TypedDict with model/dimensions, Embedding Generic dimensions auto-computed from len(vector), GeneratedEmbeddings extends list[Embedding[T]] with options/usage/additional_properties, cosine similarity and int8 quantization examples); WorkflowEventSource (EXECUTOR vs FRAMEWORK str-Enum — travels in WorkflowEvent.source, OTel span attribute usage, match dispatch pattern); SubWorkflowRequestMessage + SubWorkflowResponseMessage (@dataclass hierarchical HITL bridge — create_response(data) validates isinstance(data, source_event.response_type) raises TypeError, executor_id for multi-instance parent routing, WorkflowExecutor auto-appends SubWorkflowRequestMessage to output types); RequestInfoMixin + response_handler decorator (_discover_response_handlers scans class at Executor.__init__, is_request_response_capable bool, is_request_supported(request_type, response_type), response_handler introspection vs explicit type mode with string forward reference support, duplicate (request_type, response_type) raises ValueError); WorkflowAgent.RequestInfoFunctionArgs (nested @dataclassrequest_id/request_event fields, to_dict()/from_dict() JSON round-trip, from_dict raises ValueError on missing fields or empty request_id, REQUEST_INFO_FUNCTION_NAME = "request_info" class constant, middleware interceptor pattern); EdgeGroupDeliveryStatus (Enum with 6 members: DELIVERED/BUFFERED/DROPPED_TYPE_MISMATCH/DROPPED_CONDITION_FALSE/DROPPED_TARGET_MISMATCH/EXCEPTION — OTel SpanProcessor aggregation, production exception delivery alert); IntegrityLabel + LabelTrackingFunctionMiddleware (@experimental(FIDES)IntegrityLabel.TRUSTED/UNTRUSTED str-Enum, 3-tier priority table for label propagation (embedded > source_integrity > input join), LabelTrackingFunctionMiddleware(default_integrity, default_confidentiality, auto_hide_untrusted=True, hide_threshold), get_context_label()/reset_context_label()/get_security_tools()/list_variables()/get_variable_metadata(var_id)); MiddlewareTermination + WorkflowConvergenceException (MiddlewareTermination(message, *, result=None) raises to short-circuit middleware chain with optional early-return payload; WorkflowConvergenceException(message, inner_exception, log_level=10) raised when runner exceeds max iterations — blocklist middleware example, production convergence guard). Zero→Hero extended to step 42; Jump-to-topic, Zero→Hero, and Reference grids updated. Description bumped to 20 volumes / 210+ classes.
2026-06-191.2.6Upgraded agent-framework 1.8.1 → 1.9.0 (275 total public symbols; +14 new). Added Class Deep Dives Vol. 17 (source-verified at agent-framework==1.9.0): ToolApprovalMiddleware + ToolApprovalRule + ToolApprovalState + helper functions (create_always_approve_tool_response, create_always_approve_tool_with_arguments_response) — interactive tool approval gate with standing rules, argument wildcard matching (arguments=None), no-argument rule (arguments={}), server_label scoping for hosted tools, SerializationMixin round-trip; AgentLoopMiddleware + JudgeVerdict + todos_remaining + background_tasks_running — LLM-judged self-improvement loop with DEFAULT_MAX_ITERATIONS=10, DEFAULT_JUDGE_MAX_ITERATIONS=5, JUDGE_VERDICT_DONE/JUDGE_VERDICT_MORE sentinels, fresh_context snapshot via to_dict(), inject_progress session vs. no-session behaviour, with_judge class method with CRITERIA_PLACEHOLDER="{{criteria}}", return_final_only=False aggregation; SamplingApprovalCallback + new MCP sampling security parameters — confused-deputy mitigation, deny-by-default, token cap, per-connection request counter, async callback support; to_prompt_agent (@experimental(feature_id=ExperimentalFeature.TO_PROMPT_AGENT)) — raises TypeError if client is not RawFoundryChatClient, model resolved from agent.default_options.get("model") or agent.client.model, local MCPTool instances raise ValueError; FoundryEmbeddingClient + FoundryEmbeddingOptions + FoundryEmbeddingSettings + RawFoundryEmbeddingClient — multimodal text+image embeddings, mixed batch split/reassemble, image detection via "image/" MIME prefix, image_model precedence, env vars FOUNDRY_EMBEDDING_MODEL/FOUNDRY_IMAGE_EMBEDDING_MODEL/FOUNDRY_MODELS_ENDPOINT; ContentUnderstandingContextProvider + AnalysisSection + DocumentStatus (agent-framework-azure-contentunderstanding package) — MEDIA_TYPE_ANALYZER_MAP auto-detect analyzer, DocumentStatus ANALYZING/UPLOADING/READY/FAILED enum, deferred=True for background analysis, auto-registered list_documents tool; FileSearchConfig + FileSearchBackend + OpenAIFileSearchBackend + FoundryFileSearchBackendFileSearchConfig.from_openai()/from_foundry() static factories, _OpenAICompatBackend shared upload/delete surface, create_and_poll indexing wait, custom backend ABC; AgentFrameworkTracer (agent_framework.lab.lightning) — AgentOpsTracer subclass, OBSERVABILITY_SETTINGS.enable_otel toggle in init()/teardown() lifecycle; TaskRunner + patch_env_set_state + unpatch_env_set_state (agent_framework.lab.tau2) — three-part conversation assembly (initial greeting + full message store + final user message), reinit() returns self, TerminationReason.MAX_STEPS/AGENT_STOP/USER_STOP/TOO_MANY_ERRORS, evaluate() via EvaluationType.ALL; 8 new FoundryChatClient hosted tool factory methods (get_mcp_tool, get_azure_ai_search_tool, get_sharepoint_tool, get_fabric_tool, get_memory_search_tool, get_computer_use_tool, get_browser_automation_tool, get_a2a_tool) — each with validation rules and hosted vs. local MCP distinction. Zero→Hero extended to step 39; Jump-to-topic and Reference grids updated. Version card and description bumped to 1.9.0.
2026-06-181.2.5Added Class Deep Dives Vol. 16 (source-verified at agent-framework==1.8.1): FoundryAgent + FoundryAgentOptions + RawFoundryAgent + RawFoundryAgentChatClient (agent_framework.foundry hosted agents — PromptAgent requires agent_version, HostedAgent uses allow_preview=True, isolation_key per-session typed option, client_type=RawFoundryAgentChatClient override pattern), FoundryLocalClient + FoundryLocalChatOptions + FoundryLocalSettings (on-device LLM via Foundry Local SDK — bootstrap, prepare_model, device NPU/GPU/CPU, FOUNDRY_LOCAL_MODEL env var, structured Pydantic output via response_format=), FoundryMemoryProvider (Azure AI Foundry Memory Store semantic memory context provider — memory_store_name/scope/update_delay, DEFAULT_SOURCE_ID="foundry_memory", before_run search + after_run async write lifecycle, async context manager for AIProjectClient ownership), FoundryEvals + GeneratedEvaluatorRef + evaluate_foundry_target + evaluate_traces (Foundry cloud eval harness — 19 source-verified built-in evaluator name constants across agent-behavior/tool-usage/quality/safety categories, smart default relevance+coherence+task_adherence, auto-add tool_call_accuracy when tools present, poll_interval=5.0/timeout=180.0, GeneratedEvaluatorRef(name=..., version=...) for rubric evaluators), BedrockChatClient + BedrockChatOptions + BedrockGuardrailConfig + BedrockSettings (Amazon Bedrock Converse API — BEDROCK_REGION default "us-east-1", BEDROCK_CHAT_MODEL env var, BedrockGuardrailConfig TypedDict: guardrailIdentifier/guardrailVersion/trace/streamProcessingMode; 8 unsupported options declared as None typed), BedrockEmbeddingClient + BedrockEmbeddingOptions + BedrockEmbeddingSettings (Bedrock Titan Embeddings v2 — OTEL_PROVIDER_NAME="aws.bedrock", BEDROCK_EMBEDDING_MODEL env var, normalize: bool for unit-length vectors, MemoryContextProvider wiring pattern), MagenticManagerBase (abstract base for custom Magentic-One managers — 4 abstract methods: plan/replan/create_progress_ledger/prepare_final_answer; max_stall_count=3/max_reset_count/max_round_count; on_checkpoint_save()dict/on_checkpoint_restore(state) checkpoint hooks; wire with MagenticBuilder(manager=...)), BaseGroupChatOrchestrator + GroupChatRequestSentEvent + GroupChatResponseReceivedEvent (group chat abstract base — max_rounds coerced to max(1, max_rounds), TERMINATION_CONDITION_MET_MESSAGE/MAX_ROUNDS_MET_MESSAGE class constants, 4 @handler overloads: str/Message/list[Message]/AgentExecutorResponse; GroupChatRequestSentEvent(round_index, participant_name) + GroupChatResponseReceivedEvent(round_index, participant_name) observability dataclasses), AgentRequestInfoResponse + CacheProvider (AgentRequestInfoResponse HITL approval data model — approve() pass-through / from_messages(list[Message]) / from_strings(list[str]) static factories; CacheProvider async get/set(ttl_seconds)/remove Protocol for Purview cache injection; in-memory test implementation pattern), Purview exception hierarchy + acquire_token (PurviewAuthenticationError 401/403 ← IntegrationInvalidAuthException, PurviewPaymentRequiredError 402, PurviewRateLimitError 429, PurviewRequestError other HTTP, PurviewServiceError base ← IntegrationException; acquire_token() MSAL PublicClientApplication silent-then-interactive flow, custom scopes, SerializableTokenCache on-disk pattern, exponential back-off retry). Zero→Hero extended to step 38; Jump-to-topic and Reference grids updated.
2026-06-171.2.4Added Class Deep Dives Vol. 15 (source-verified at agent-framework==1.8.1): AGUIChatClient + AGUIEventConverter + AGUIHttpService (AG-UI streaming stateful UI protocol — run(), stateless mode, SSE event delivery, per-session AGUIEventConverter instantiation requirement), AgentFrameworkAgent + AgentFrameworkWorkflow + state_update() + add_agent_framework_fastapi_endpoint() (FastAPI/Teams hosting — pending-approval registry max 10,000, tags/dependencies params, CORS, env-var wiring), ThreadItemConverter + simple_to_agent_input() + stream_agent_response() (ChatKit thread-item streaming — multimodal ThreadItem mapping, delta merging), DevServer + serve() + register_cleanup() (local OpenAI-compatible debug server — multi-agent dict, CORS removed as security fix, graceful teardown via register_cleanup; install: agent-framework[devui]), GAIA + GAIATelemetryConfig + TaskRunner + TaskResult + Prediction + Evaluation (GAIA benchmark lab — telemetry via GAIA(telemetry_config=...), async callable TaskRunner.__call__(), TaskResult.prediction + Evaluation.is_correct; install: agent-framework-lab), CopilotStudioAgent (Copilot Studio bridge — env-var prefix COPILOTSTUDIOAGENT__, propagate_session as_tool param), AzureAISearchContextProvider (semantic/agentic retrieval — env-var prefix AZURE_SEARCH_, top_k/semantic_configuration_name params, retrieval_reasoning_effort "minimal"/"low"/"medium"), CosmosHistoryProvider (Cosmos DB-backed history — env-var prefix AZURE_COSMOS_, store_context_messages, store_context_from), DurableAIAgentClient + DurableAIAgentWorker + DurableAIAgentOrchestrationContext + AgentCallbackContext + AgentResponseCallbackProtocol (durable task hosting — get_agent().run() blocking poll, yield Task not AgentResponse, add_agent() callback), AgentFunctionApp (Azure Functions serverless — agents=[]/workflow= init, enable_http_endpoints, enable_mcp_tool_trigger, enable_health_check). Zero→Hero extended to step 37; Jump-to-topic and Reference grids updated.
2026-06-161.2.3Added Class Deep Dives Vol. 14 (source-verified at agent-framework==1.8.1): State (superstep-caching workflow state — set()/get()/commit()/discard()/delete() deletion sentinel/export_state()/import_state(), BSP visibility model, checkpoint integration), OutputDesignation (output routing rule — is_terminal()/is_intermediate()/classify(), compatibility mode when outputs=None, output_from=/intermediate_output_from= wiring), MessageType enum + WorkflowMessage enhanced coverage (STANDARD vs RESPONSE classification, plural trace_contexts/source_span_ids for fan-in OTel link propagation, to_dict()/from_dict() round-trip, backward-compat .trace_context/.source_span_id accessors), DictConvertible + encode_value (dict/JSON round-trip mixin — to_dict()/from_dict()/clone(deep=True)/to_json()/from_json(), encode_value recursive nested encoding), MiddlewareWrapper + BaseMiddlewarePipeline (callable-to-class adapter via __init__(func) + process(), abstract _register_middleware, has_middlewares gate, _register_middleware_with_wrapper auto-promotion), AgentMiddlewarePipeline + ChatMiddlewarePipeline + FunctionMiddlewarePipeline (concrete pipeline execute() — streaming/non-streaming support, matches() sequence cache-key, MiddlewareTermination short-circuit, empty pipeline fast path), MiddlewareDict TypedDict + categorize_middleware (typed agent/function/chat bucket structure, multi-source merge, callable signature inference, unknown-type fallback to agent bucket), FunctionRequestResult TypedDict (fields: action return/continue/stop, errors_in_a_row, result_message, update_role, function_call_results, function_call_counttotal=False so all optional, stop-condition diagnostics), OtelAttr + MessageListTimestampFilter (str-Enum with all 35 GenAI semantic convention attribute names — OPERATION/PROVIDER_NAME/INPUT_TOKENS/OUTPUT_TOKENS/TOOL_NAME/AGENT_ID/LLM_OPERATION_DURATION etc; logging.Filter that adds INDEX_KEY * 1µs offset to record.created for correct log ordering in aggregators), PolicyEnforcementFunctionMiddleware + ConfidentialityLabel + ContentVariableStore + VariableReferenceContent + LabeledMessage + InspectVariableInput (IFC prompt-injection defence — ContentVariableStore.store()/retrieve(), VariableReferenceContent variable-ID indirection, ConfidentialityLabel.PUBLIC/PRIVATE/USER_IDENTITY, LabeledMessage label-tracked Message, InspectVariableInput Pydantic schema, PolicyEnforcementFunctionMiddleware allow_untrusted_tools/block_on_violation/approval_on_violation/audit_log, SecureAgentConfig one-liner setup). Zero→Hero extended to step 36; Jump-to-topic and Reference grids updated.
2026-06-151.2.2Added Class Deep Dives Vol. 13 (source-verified at agent-framework==1.8.1): OpenAIChatClient + OpenAIChatOptions + OpenAISettings + RawOpenAIChatClient (agent_framework.openai — Responses API 4-layer MRO, STORES_BY_DEFAULT server-side state, x-ms-served-model Azure header, per-request reasoning options, Responses vs Completions comparison table), OpenAIChatCompletionClient + OpenAIChatCompletionOptions + RawOpenAIChatCompletionClient (Chat Completions API — logprobs, prediction, logit_bias, stateless design, structured output), OpenAIEmbeddingClient + OpenAIEmbeddingOptions + OpenAIContinuationToken + ContentFilterResultSeverity + OpenAIContentFilterException (embeddings+RAG via MemoryContextProvider, background polling via response_id, Azure content filter exception hierarchy), AnthropicClient + AnthropicChatOptions + RawAnthropicClient (agent_framework.anthropic — Anthropic Messages API, extended thinking via ThinkingConfigEnabled, top_k, service_tier, per-request additional_beta_flags), ClaudeAgent + ClaudeAgentOptions + RawClaudeAgent (Claude Code CLI-backed agent — allowed_tools/disallowed_tools, mcp_servers McpServerConfig, permission_mode, sandbox, multi-agent workflow participation), AnthropicFoundryClient + AnthropicBedrockClient + AnthropicVertexClient (multi-cloud Claude — Azure Foundry azure_ad_token_provider, Bedrock aws_profile, Vertex ADC GoogleCredentials, multi-cloud failover pattern), GroupChatOrchestrator + AgentBasedGroupChatOrchestrator + GroupChatState + GroupChatRequestMessage + AgentOrchestrationOutput (orchestrations internals — function-driven vs LLM-driven selection, frozen GroupChatState snapshot, AgentOrchestrationOutput Pydantic model for structured selection), HandoffAgentExecutor + HandoffAgentUserRequest + HandoffSentEvent + OrchestrationState (handoff internals — autonomous_mode + autonomous_mode_turn_limit, HITL create_response()/terminate() helpers, HandoffSentEvent observability, OrchestrationState.to_dict()/from_dict() checkpoint), MagenticOrchestrator + MagenticAgentExecutor + MagenticOrchestratorEvent + MagenticOrchestratorEventType + MagenticProgressLedgerItem + MagenticPlanReviewRequest + MagenticPlanReviewResponse (Magentic deeper — outer/inner loop, MagenticResetSignal for replanning, plan signoff approve()/revise() HITL, ledger item to_dict()/from_dict()), HttpRequestHandler + DefaultHttpRequestHandler + HttpRequestInfo + HttpRequestResult + MCPToolHandler + DefaultMCPToolHandler + MCPToolInvocation + MCPToolResult + ToolApprovalRequest + ToolApprovalResponse + ExternalInputRequest + ExternalInputResponse + AgentExternalInputRequest + AgentExternalInputResponse (declarative handlers — 3 DefaultHttpRequestHandler construction modes, SSRF guard pattern, MCP LRU cache + LIST_TOOLS_TOOL_NAME discovery, tool approval gate, agent HITL). Zero→Hero extended to step 35; Jump-to-topic and Reference grids updated.
2026-06-141.2.1Added Class Deep Dives Vol. 12 (source-verified at agent-framework==1.8.1): Skill + SkillResource + SkillScript ABCs (the type-system foundation — get_content() / get_resource() / get_script() contracts; SkillResource.read() **kwargs forwarding; SkillScript.run() dict vs list dispatch; parameters_schema extension point; custom DB-backed Skill example), FileSkill (filesystem-backed skill — SKILL.md content cache; <scripts> XML block appended when scripts present; first-access cache lock; case-insensitive get_resource()/get_script()), InlineSkillResource + InlineSkillScript (code-defined primitives — InlineSkillResource content/function mutual exclusivity; _accepts_kwargs precomputed flag; InlineSkillScript lazy parameters_schema via FunctionTool introspection; TypeError on list args), FileSkillScript + SkillScriptRunner (file-backed execution — absolute-path validation; fixed CLI array schema {"type":"array","items":{"type":"string"}}; sync/async runner protocol; isinstance(fn, SkillScriptRunner) verification), SupportsAgentRun (structural agent protocol — id/name/description attributes; dual run() overloads; custom agent without framework inheritance; isinstance() guard; workflow graph integration), RunnerContext (full workflow execution context protocol — 25-method contract: message routing, event pipeline, checkpointing, streaming mode, HITL request/response, yield-output classification; minimal TestRunnerContext test stub; set_runtime_checkpoint_storage override pattern), SwitchCaseEdgeGroupCase + SwitchCaseEdgeGroupDefault (serialisable branch descriptors — condition_name auto-extracted from callable.__name__; to_dict()/from_dict() without live callable; missing-callable placeholder raises RuntimeError on invocation; condition re-registration pattern using a registry dict), ValidationTypeEnum + WorkflowValidationError hierarchy (EDGE_DUPLICATION, EXECUTOR_DUPLICATION, TYPE_COMPATIBILITY, GRAPH_CONNECTIVITY, HANDLER_OUTPUT_ANNOTATION, OUTPUT_VALIDATION; EdgeDuplicationError.edge_id; TypeCompatibilityError.source_types/target_types; GraphConnectivityError; match-based dispatcher; custom ValidationReport dataclass), A2AAgent + A2AAgentSession + A2AExecutor (A2A protocol integration — url/agent_card/client init paths; dual streaming/non-streaming httpx clients; auth_interceptor pattern; float/httpx.Timeout config; supported_protocol_bindings; A2AAgentSession context_id/task_id/task_state with to_dict()/from_dict() round-trip; A2AExecutor stream + run_kwargs server-side exposure), WorkflowRunnerException + WorkflowCheckpointException + MiddlewareException (leaf exception classes — WorkflowCheckpointException dual-inheritance from both WorkflowRunnerException and WorkflowException; checkpoint I/O failure graceful fallback; MiddlewareException vs MiddlewareTermination distinction; full supervisor dispatcher for all 7 framework exception types). Zero→Hero extended to step 34; Jump-to-topic and Reference grids updated.
2026-06-131.2.0Added Class Deep Dives Vol. 11 (source-verified at agent-framework==1.8.1): AgentTelemetryLayer + ChatTelemetryLayer + EmbeddingTelemetryLayer (OTel mixin layer — AGENT_PROVIDER_NAME resolution, token/duration histograms, ObservabilitySettings.ENABLED short-circuit, enable_sensitive_telemetry), Edge + EdgeGroup + SingleEdgeGroup + InternalEdgeGroup (workflow graph primitives — conditional routing with should_route(), serialisation round-trip without callable, EdgeGroup.register custom subclasses, internal source edge semantics), Case + Default (runtime switch-case wrappers — live callables companion to serialisable SwitchCaseEdgeGroupCase/Default), EdgeRunner hierarchy (SingleEdgeRunner, FanOutEdgeRunner, FanInEdgeRunner, SwitchCaseEdgeRunnerEdgeGroupDeliveryStatus enum with 6 values, buffer-until-all-ready fan-in semantics, concurrent asyncio fan-out), ExecutionContext (sub-workflow tracking dataclass — execution_id, collected_responses, expected_response_count, pending_requests for HITL resume), WorkflowGraphValidator (7 pre-build checks: edge duplication → EdgeDuplicationError, type compatibility → TypeCompatibilityError, connectivity → GraphConnectivityError, self-loops warning, dead-ends info, output validation → WorkflowValidationError), MCPTool + MCPSpecificApproval (base class for all 3 MCP transports — full 15-parameter constructor table, functions list post-connect, per-tool result_parser override, additional_tool_argument_names hidden-context forwarding), SerializationMixin + SerializationProtocol (DTO round-trip foundation — DEFAULT_EXCLUDE, INJECTABLE, _SHALLOW_COPY_FIELDS, three dependency injection patterns, custom serialisable tool example, AgentSession round-trip), Evaluator + EvalItemResult + EvalNotPassedError (@runtime_checkable Protocol for evaluation backends, EvalItemResult per-item status/scores/error_code, CI gate pattern with evaluate_and_assert), PerServiceCallHistoryPersistingMiddleware (service_stores_history flag, sentinel conversation ID semantics, per-service-call vs full-turn persistence trade-offs). Zero→Hero extended to step 33; Jump-to-topic and Reference grids updated.
2026-06-121.1.9Upgraded agent-framework 1.8.0 → 1.8.1 (patch release; no new public symbols). Added Class Deep Dives Vol. 10 (source-verified at agent-framework==1.8.1): Workflow + InProcRunnerContext (execution engine API — run() mutual-exclusion rules, input_types/output_types, as_agent(), as_tool(), state preservation, checkpoint resume, streaming), FunctionExecutor (@executor decorator internals — explicit input/output/workflow_output type override, sync function thread-pool wrapping, multi-node wiring), FunctionInvocationLayer (tool-calling loop mixin — get_response() API, custom chat client authoring via _get_response_core, per-call middleware merge, per-executor function_invocation_kwargs), MemoryStore + MemoryIndexEntry + MemoryTopicRecord (memory harness ABC — full 8-method contract, to_dict/from_dict round-trip, MemoryIndexEntry.from_topic_record, custom DictMemoryStore backend plugged into MemoryContextProvider), TodoStore + TodoItem + TodoInput + TodoFileStore + TodoSessionStore (todo harness — TodoFileStore path-safety and per-user scoping, TodoSessionStore session-state embedding, TodoInput title normalisation, ABC load_state/save_state/load_items), DeduplicatingSkillsSource (case-insensitive first-one-wins deduplication in AggregatingSkillsSource pipelines, custom key override subclass), SkillsProvider (context provider — from_paths class method with all parameters, instruction_template placeholder rules, require_script_approval, disable_caching, multi-source composition), MCPTaskOptions (SEP-2663 long-running task lifecycle — default_ttl, cancel_remote_task_on_local_cancellation, max_task_wait, positive-value validation, fire-and-forget pattern), InMemoryCheckpointStorage (in-memory checkpoint backend — save/load/list_checkpoints/list_checkpoint_ids/get_latest/delete; vs FileCheckpointStorage comparison table; HITL resume example), EvalScoreResult + CompactionStrategy + BaseAgent (EvalScoreResult rubric-dimension fields and custom @evaluator; CompactionStrategy protocol — custom in-place mutation + TokenBudgetComposedStrategy composition; BaseAgentrun() implementation contract, FixedResponseAgent test double, SequentialBuilder integration, to_dict() serialisation). Zero→Hero renumbered to step 32; Jump-to-topic, Zero→Hero, and Reference grids updated. Version card and description bumped to 1.8.1.
2026-06-051.1.8Upgraded agent-framework 1.7.0 → 1.8.0. Added Class Deep Dives Vol. 8 (source-verified at agent-framework==1.8.0): AgentFileStore + FileSystemAgentFileStore + InMemoryAgentFileStore (file storage ABC and two first-party backends with path-safety and symlink rejection), FileAccessProvider + FileSearchResult + FileSearchMatch (5-tool CRUD+search harness provider, require_delete_approval flag, SerializationMixin DTOs), MCPSkill + MCPSkillResource + MCPSkillsSource (SEP-2640 Agent Skills over MCP — lazy SKILL.md fetch, resource name security validation, index-JSON discovery), ToolMode + validate_tool_mode (tool-choice TypedDict with mode/required_function_name/allowed_tools, normalization helper), AgentEvalConverter + ExpectedToolCall + CheckResult + RubricScore (eval bridge: convert_messages, to_eval_item, per-dimension RubricScore, structured CheckResult), ChatContext (full chat-middleware context — metadata, result override, stream_transform_hooks, stream_result_hooks, stream_cleanup_hooks), WorkflowAgent + WorkflowContext (BaseAgent wrapping a Workflow, pending_requests HITL, typed WorkflowContext[OutT, W_OutT] with send_message/yield_output), TruncationStrategy (oldest-first token/message compaction, preserve_system flag, compact_to target, TokenizerProtocol integration), HistoryProvider + InMemoryHistoryProvider (history-provider ABC with load_messages/store_inputs/store_outputs flags; InMemoryHistoryProvider default state-backed implementation with skip_excluded), DelegatingSkillsSource + InMemorySkillsSource + FunctionInvocationContext + progressive tools (add_tools/remove_tools @experimental PROGRESSIVE_TOOLS). Version card, description, and “What’s shipped” bumped to 1.8.0. Zero→Hero renumbered to step 30; Jump-to-topic and Reference grids updated.
2026-06-041.1.7Added Class Deep Dives Vol. 7 (source-verified at agent-framework==1.7.0): ContextProvider custom authoring (before_run/after_run lifecycle, provider-scoped state, multi-provider ordering), BackgroundTaskInfo + BackgroundTaskStatus (task metadata data model, LOST status re-issue pattern, reading state from session.state), GroupChatBuilder + TerminationCondition + GroupChatSelectionFunction (LLM orchestrator, round-robin selection, HITL pause), HandoffBuilder + HandoffConfiguration (tool-based routing, autonomous_mode, multi-hop handoff topology), MagenticBuilder + StandardMagenticManager + MagenticProgressLedger (Magentic-One task/progress ledgers, stall detection, plan review HITL, custom progress_ledger_prompt), SequentialBuilder + ConcurrentBuilder (pipeline chaining, chain_only_agent_responses, fan-out/synthesise composition), AgentFactory + WorkflowFactory (agent-framework-declarative, YAML agent and workflow definitions, ProviderTypeMapping, WorkflowState, safe_mode), SecureAgentConfig + ContentLabel + IntegrityLabel + LabelTrackingFunctionMiddleware (agent_framework.security, IFC-based prompt injection defence, 3-tier label propagation, ContentVariableStore, approval-on-violation pattern), FunctionalWorkflowAgent (run() overloads, pending_requests HITL, drop-in orchestration participant), ObservabilitySettings + configure_otel_providers (OTLP bootstrap, custom exporters, metric View filters, enable_sensitive_telemetry). Zero→Hero updated to step 29; Jump-to-topic and Reference grids updated.
2026-06-031.1.6Added Class Deep Dives Vol. 6 (source-verified at agent-framework-core==1.7.0): ExperimentalFeature + ReleaseCandidateFeature + @experimental/@release_candidate decorators (feature staging, warning suppression, per-feature-ID introspection, 9 experimental feature IDs at 1.7.0), WorkflowRunState + WorkflowErrorDetails (7-state run state machine, from_exception() factory, structured error logging patterns), WorkflowExecutor + SubWorkflowRequestMessage + SubWorkflowResponseMessage (hierarchical workflow composition, HITL across workflow boundaries, allow_direct_output semantics), AgentResponse + AgentResponseUpdate + ContinuationToken (full field reference, serialisation round-trip, structured output, streaming collapse, background-operation polling), BaseEmbeddingClient + SupportsGetEmbeddings + Embedding + EmbeddingGenerationOptions + GeneratedEmbeddings (custom embedding provider implementation, RAG duck-typing patterns), FunctionInvocationConfiguration TypedDict (all 7 fields, default values, max_iterations vs max_function_calls semantics, per-request override, additional_tools hidden-tool pattern), ClassSkill + SkillFrontmatter + FileSkillsSource + SkillsProvider (@ClassSkill.resource/@ClassSkill.script auto-discovery, directory-scanned SKILL.md files, mixed code+file SkillsProvider wiring), Annotation + TextSpanRegion (citation metadata, grounding attribution, region filtering), provider capability protocols (SupportsCodeInterpreterTool, SupportsWebSearchTool, SupportsImageGenerationTool, SupportsMCPTool, SupportsFileSearchTool — adaptive tool builder + capability probe patterns), MiddlewareType + AgentMiddlewareLayer + ChatMiddlewareLayer (pipeline execution order diagram, MiddlewareTermination short-circuit). Zero→Hero renumbered to 28 steps; Jump-to-topic and Reference grids updated.
2026-06-021.1.5Added Class Deep Dives Vol. 5 (source-verified at agent-framework-core==1.7.0): Executor + @handler + @executor (introspection vs explicit type modes, WorkflowContext generic variants, checkpoint hooks, FunctionExecutor), AgentExecutor + AgentExecutorRequest + AgentExecutorResponse (all five built-in handlers, context modes, with_text() conversation-context preservation), FanOutEdgeGroup + FanInEdgeGroup + SwitchCaseEdgeGroup (dynamic selection functions, switch/case single-dispatch semantics, construction constraints), Runner + WorkflowMessage (Pregel superstep engine, convergence detection, concurrent message delivery, trace context fan-in), SessionContext (per-invocation provider pipeline, extend_messages attribution, cross-provider metadata), AgentSession + register_state_type (cross-call state, Pydantic round-trip, cold-start registration), BaseChatClient + SupportsChatGetResponse (custom model client implementation, structural protocol verification), SecretString + load_settings (repr masking, .env resolution order), WorkflowCheckpoint + CheckpointStorage (full dataclass fields, topology hash compatibility, HITL resume via pending events, custom storage protocol), full exception hierarchy (AgentFrameworkException tree, MiddlewareTermination short-circuit, WorkflowConvergenceException, UserInputRequiredException). Zero→Hero renumbered to 27 steps; Jump-to-topic and Reference grids updated.
2026-06-011.1.4Added Class Deep Dives Vol. 4 (source-verified at agent-framework-core==1.7.0): Message + Content (multimodal factory methods, serialization), ChatOptions + ChatResponse + ChatResponseUpdate + UsageDetails (raw chat layer), ResponseStream (transform/cleanup/result hooks, .map(), .with_finalizer()), AgentContext (middleware context — all 14 mutable fields, short-circuit and streaming patterns), FunctionalWorkflow + StepWrapper (HITL replay, step-level caching, per-step checkpointing, .as_agent()), WorkflowEvent + WorkflowEventType + WorkflowEventSource (full event taxonomy, HITL dispatch loop pattern), SkillsSource + AggregatingSkillsSource + FilteringSkillsSource + DeduplicatingSkillsSource (skill composition pipeline), EvalItem + EvalItemResult + EvalResults + EvalScoreResult (evaluation data model), TokenizerProtocol + CharacterEstimatorTokenizer (tiktoken and HuggingFace integration examples), ConversationSplit + ConversationSplitter (LAST_TURN vs FULL splits, custom splitter protocol). Zero→Hero renumbered to 26 steps; Jump-to-topic and Reference grids updated.
2026-05-311.1.3Added azure-ai-agents integration Class Deep Dives Vol. 6 (source-verified at azure-ai-agents==1.1.0): OpenAPI auth hierarchy (OpenApiAnonymousAuthDetails, OpenApiManagedAuthDetails, OpenApiConnectionAuthDetails), BingGroundingSearchConfiguration + BingGroundingSearchToolParameters, RunCompletionUsage + RunStepCompletionUsage, VectorStoreDataSource + VectorStoreConfigurations, expiry policy + static/auto chunking strategies, AgentsNamedToolChoice + AgentsToolChoiceOptionMode, file-search run step results (RunStepFileSearchToolCallFileSearchToolCallContent), streaming event taxonomy (AgentStreamEvent + 4 sub-enums), RequiredFunctionToolCall + SubmitToolOutputsDetails manual dispatch, multimodal ThreadMessageOptions with MessageInputImageFileBlock + MessageInputImageUrlBlock. Zero→Hero renumbered to 25 steps; Jump-to-topic and Reference grids updated.
2026-05-301.1.2Upgraded agent-framework 1.6.0 → 1.7.0. Added Class Deep Dives Vol. 3 (10 source-verified classes from 1.7.0): BackgroundAgentsProvider, MemoryContextProvider + MemoryFileStore, TodoProvider + TodoFileStore, AgentModeProvider, SummarizationStrategy, ContextWindowCompactionStrategy, SlidingWindowStrategy, SelectiveToolCallCompactionStrategy, WorkflowViz, MCPStreamableHTTPTool + MCPWebsocketTool. Updated version card, description, and “What’s shipped” section. Zero→Hero renumbered; Jump-to-topic and Reference grids updated.
2026-05-291.1.1Corrected erroneous reframing of this guide as an azure-ai-agents site. agent-framework is the primary framework; azure-ai-agents is an optional integration add-on. Restored correct title, description, install command, minimal example, and framing. Removed false “Package name correction” Aside and migration notice. Reframed azure-ai-agents class deep dive volumes (1, 3, 4, 5) as integration add-on reference material rather than framework documentation.
2026-05-221.0.9Version bumped 1.5.0 → 1.6.0; version card, description frontmatter, and “What’s shipped” section updated to 1.6.0. All 23 core symbols verified against installed agent-framework-core==1.6.0 (.routine-envs/check-0522-ms-agent); 242 public symbols confirmed; no API regressions. frameworks.ts updated v1.4.0v1.6.0. Note: DeprecationWarning from opentelemetry internal importlib.metadata dict interface (Python 3.11 compat) persists — upstream opentelemetry bug, not an agent-framework issue.
2026-05-201.0.8Bumped all version references to agent-framework-core==1.5.0. Added output_from/intermediate_output_from documentation to WorkflowBuilder (replaces deprecated output_executors). Added full MemoryContextProvider section to HARNESS Providers guide including injected tools, consolidation_client, history_message_filter, and custom MemoryStore backend examples. Added RunContext.set_state key restriction (_ prefix raises ValueError) to Functional Workflows guide. Added combined checkpoint_id + responses HITL resume pattern. Added include_status_events explanation. Fixed FunctionInvocationConfiguration defaults (max_iterations=40, max_consecutive_errors_per_request=3). Added full FunctionTool constructor reference table with declaration_only, additional_properties, and middleware cost-tagging examples.
2026-05-171.0.7Bumped all version references to agent-framework-core==1.4.0. Added get_run_context() code example to Functional Workflows guide (accessing RunContext from nested utility functions). Added annotate_message_groups low-level helper documentation to Compaction guide. Re-verified all API surfaces against installed agent-framework-core==1.4.0 source.
2026-05-091.0.6Bumped all guides to agent-framework-core==1.3.0. agent-framework-foundry and agent-framework-openai promoted to stable 1.3.0. Rewrote Skills guide with breaking API changes: InlineSkill replaces Skill, SkillsProvider(source) positional arg replaces skills=/skill_paths=, SkillsProvider.from_paths() for file-based skills. Added AggregatingSkillsSource, FilteringSkillsSource, DeduplicatingSkillsSource coverage. Added RawAgent to comprehensive guide. Added MemoryStore/MemoryContextProvider long-term memory section. Fixed FunctionInvocationConfiguration usage (client-level only, not agent.run() parameter). Added WorkflowBuilder.add_chain() and add_multi_selection_edge_group() detail.
2026-05-041.0.5Added dedicated Functional Workflows page covering @workflow, @step, RunContext, FunctionalWorkflow.as_agent(). Enhanced Graphs & Declarative page with WorkflowViz examples, add_chain, add_multi_selection_edge_group, @executor decorator, and Agent.as_tool(). All verified against agent-framework-core==1.2.2 source.
2026-05-011.0.4Bumped pinned core/provider versions to agent-framework-core==1.2.2 and 1.0.0b260429 provider line. Expanded streaming, function-middleware, functional-workflow, and feature-stage code examples after re-introspecting the installed library.
2026-04-221.0.3Added dedicated pages: Tools, Skills, Checkpointing, Compaction, Observability & Telemetry, Evaluation. Zero→Hero reflow to 18 steps; Jump-to-topic grid and Reference card grid updated.
2026-04-221.0.2Added dedicated pages: Model Providers, Orchestration, Middleware, MCP, Human-in-the-loop. Verified against source of agent-framework-core==1.1.0; corrected context_providers plural-vs-singular errata.
2026-04-211.0.1Index redesigned into Zero → Hero reading order + Jump-to-topic grid using Starlight cards.
2026-04-201.0.1Version pin corrected to v1.0.1; verified via agent-framework PyPI package.
April 16, 20261.0 GAGraduated from Preview; ChatClientAgentOptions.Instructions removed; first-party connectors; Azure App Service support.
November 20251.0 PreviewInitial Python guide; multi-agent orchestration.