<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Microsoft for Developers</title>
	<atom:link href="https://devblogs.microsoft.com/feed" rel="self" type="application/rss+xml" />
	<link>https://devblogs.microsoft.com/</link>
	<description>Get the latest information, insights, and news from Microsoft.</description>
	<lastBuildDate>Mon, 08 Jun 2026 22:21:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://devblogs.microsoft.com/wp-content/uploads/2024/10/Microsoft-favicon-48x48.jpg</url>
	<title>Microsoft for Developers</title>
	<link>https://devblogs.microsoft.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Microsoft Build 2026 recap: vision, launches, and top sessions</title>
		<link>https://devblogs.microsoft.com/blog/build-recap</link>
					<comments>https://devblogs.microsoft.com/blog/build-recap#respond</comments>
		
		<dc:creator><![CDATA[Jon Galloway]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 22:15:00 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Developer Events]]></category>
		<category><![CDATA[GitHub Copilot]]></category>
		<category><![CDATA[Microsoft for Developers]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[microsoft build]]></category>
		<category><![CDATA[microsoft foundry]]></category>
		<category><![CDATA[Visual Studio Code]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21723</guid>

					<description><![CDATA[<p>Catch up on Microsoft Build 2026 with the vision lead-off, top developer announcements, and must-watch sessions across the Microsoft developer ecosystem.</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/build-recap">Microsoft Build 2026 recap: vision, launches, and top sessions</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Microsoft Build 2026 is a wrap, and there was a LOT. Whether you were there in person, streaming live, or catching up now, this recap covers the biggest announcements, top sessions, and everything you need to keep building.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Vision lead-off: the system around AI is the differentiator</h2>
<p>Jay Parikh&#8217;s post, <a href="https://blogs.microsoft.com/blog/2026/06/02/ai-alone-wont-change-your-business-the-system-running-it-will/">AI alone won&#8217;t change your business. The system running it will.</a>, set the tone for the entire event. The core message? AI models alone aren&#8217;t enough. You need the whole system around them:</p>
<ul>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f419.png" alt="🐙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Build in GitHub</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Contextualize with Microsoft IQ</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Run in Microsoft Foundry</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Govern with Agent 365 and Microsoft Security</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Improve continuously with evals, traces, and optimization loops</li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ac.png" alt="💬" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Surface where people work, including Teams and Microsoft 365</li>
</ul>
<p>If you only read one post to understand the strategy direction coming out of Build, start here. To explore by area, bookmark these official hubs:</p>
<ul>
<li><a href="https://build.microsoft.com/home">Your home for Microsoft Build</a></li>
<li><a href="https://news.microsoft.com/build-2026/">Microsoft Build 2026 news hub</a></li>
<li><a href="https://aka.ms/build26-next-steps">Microsoft Build 2026 next steps</a></li>
</ul>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4f0.png" alt="📰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> More top developer content from Build news</h2>
<p>The <a href="https://news.microsoft.com/build-2026/">Build 2026 news page</a> is a goldmine for cross-product announcements. Here are some highlights worth bookmarking:</p>
<ul>
<li><a href="https://blogs.windows.com/windowsdeveloper/?p=57809">Furthering Windows as the trusted platform for development</a></li>
<li><a href="https://aka.ms/MAI-Build">Building a hill-climbing machine: Launching seven new MAI Models</a></li>
<li><a href="https://aka.ms/FoundryBuildNews">Microsoft Foundry updates help deploy and run AI agents effectively</a></li>
<li><a href="https://aka.ms/HorizonDB-Build-blog">Azure HorizonDB: Enterprise-ready Postgres, engineered for the AI era</a></li>
<li><a href="https://aka.ms/BUILD_SecurityBlog">Build 2026: Securing code, agents and models across the development lifecycle</a></li>
<li><a href="https://aka.ms/WorkIQAPI_GA">Work IQ: Production-ready intelligence for every agent</a></li>
<li><a href="https://blogs.bing.com/search/June-2026/Announcing-Microsoft-Web-IQ">Announcing Microsoft Web IQ</a>: a new grounding system for the agentic web, powering web-scale retrieval for agents.</li>
<li><a href="https://www.microsoft.com/microsoft-fabric/features/rayfin">Rayfin delivers enterprise-grade app backends</a>: managed backends from Microsoft Fabric for building production application tiers.</li>
<li><a href="https://aka.ms/TeamsPlatform-Build">Build collaborative agents where work happens</a></li>
</ul>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f419.png" alt="🐙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> GitHub Copilot app: agent-native desktop experience</h2>
<p>The <a href="https://github.blog/news-insights/product-news/github-copilot-app-the-agent-native-desktop-experience/">GitHub Copilot app</a> is a new desktop experience designed for directing multiple agents in parallel. From a single &#8220;My Work&#8221; view, you can see active sessions, issues, pull requests, and background automations across connected repositories. The app is now available in technical preview for Copilot Pro, Pro+, Business, and Enterprise users.</p>
<p>Key capabilities in the Copilot app:</p>
<ul>
<li><strong>Parallel agent sessions</strong> run in isolated git worktrees, so agents don&#8217;t step on each other. The app handles worktree setup and cleanup automatically.</li>
<li><strong>Canvases</strong> are bidirectional work surfaces where agents update plans, diffs, browser sessions, and deployment state in real time, and developers can edit, reorder, or redirect on the same surface.</li>
<li><strong>Cloud and local sandboxes</strong> give agents a bounded environment to run code, inspect results, and iterate without touching production. Organizations define their own policies.</li>
<li><strong>Agent Merge</strong> carries pull requests through review, CI, and merge by monitoring checks, tracking reviewers, and addressing failures. You choose how far Copilot goes.</li>
<li><strong>Copilot code review</strong> now supports medium-tier review with higher-reasoning models, a <code>/security-review</code> skill, and native Azure DevOps support.</li>
<li><strong>Copilot SDK</strong> is now GA in Node.js/TypeScript, Python, Go, .NET, Rust, and Java, exposing the same agentic runtime that powers the app.</li>
<li><strong>Copilot CLI</strong> has a redesigned TUI, voice input (on-device, audio never leaves your machine), and <code>/every</code> for scheduled recurring tasks.</li>
</ul>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> MAI-Code-1-Flash in GitHub Copilot</h2>
<p><a href="https://github.blog/changelog/2026-06-02-mai-code-1-flash-is-now-available-for-github-copilot">MAI-Code-1-Flash is now available for GitHub Copilot</a>. This is Microsoft&#8217;s latest small-tier coding model, and it&#8217;s the first in a new wave of purpose-built coding models from Microsoft designed and tuned specifically for GitHub Copilot. MAI-Code-1-Flash delivers best-in-class quality for its size, outperforming other small models in early testing, making it well-suited for lightweight coding workflows.</p>
<p>MAI-Code-1-Flash is rolling out to Copilot Free, Student, Pro, Pro+, and Max plans, starting with a limited set of users and expanding gradually. You can select it from the model picker in Visual Studio Code. To learn more, see the <a href="https://microsoft.ai/models/mai-code-1-flash/">MAI-Code-1-Flash model page</a>.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f99d.png" alt="🦝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Windows developer announcements and releases</h2>
<p>The Windows team brought the goods this year! Their major Build roundup, <a href="https://blogs.windows.com/windowsdeveloper/2026/06/02/build-2026-furthering-windows-as-the-trusted-platform-for-development/">Build 2026: Furthering Windows as the trusted platform for development</a>, is all about reducing setup friction while improving security and local AI performance.</p>
<p>Key releases and roadmap callouts:</p>
<ul>
<li><a href="https://github.com/microsoft/coreutils">Coreutils for Windows</a> is now generally available, bringing Linux-like command-line utilities that run natively on Windows.</li>
<li><a href="https://aka.ms/winui-skills">Windows Development Skills</a> is now generally available, providing structured skills for agentic native app development using WinUI 3 and WinApp CLI.</li>
<li>WinUI and WinApp CLI guidance is being operationalized through those Windows Development Skills so agents can build native Windows apps end-to-end more efficiently.</li>
<li><a href="https://github.com/microsoft/WindowsDeveloperConfig/">Windows Developer Configurations</a> is now generally available, powered by WinGet for one-command setup of a developer-ready Windows 11 environment.</li>
<li>WSL containers were announced as coming to public preview, with built-in CLI and API support for Linux container workflows on Windows.</li>
<li>Intelligent Terminal was announced in experimental preview to add context-aware agent support directly in terminal workflows.</li>
</ul>
<p>Building desktop apps, local AI tools, or enterprise-managed developer environments? This post should be near the top of your reading list.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f99e.png" alt="🦞" class="wp-smiley" style="height: 1em; max-height: 1em;" /> OpenClaw + Scout: always-on agents, from open source to enterprise</h2>
<p>One of the biggest crowd moments at Build was <a href="https://github.com/openclaw/openclaw-windows-node">OpenClaw running natively on Windows</a>. OpenClaw is an open-source, self-hosted AI agent framework created by Peter Steinberger that can execute multi-step workflows, control apps, browse the web, and manage files autonomously. Scott Hanselman and Steinberger demoed it live on the keynote stage.</p>
<p>On Windows, OpenClaw runs securely inside <a href="https://github.com/microsoft/mxc">Microsoft Execution Containers (MXC)</a>, a new policy-driven containment layer that enforces what agents can access at runtime. The new Windows companion app makes setup straightforward: install, connect your claws, and you&#8217;re running. Microsoft also showed cloud-based ephemeral sandboxes for OpenClaw with managed identity, full isolation from your local machine, and rebuild times around six minutes.</p>
<p>On the enterprise side, Microsoft launched <a href="https://techcrunch.com/2026/06/02/microsoft-launches-scout-an-openclaw-inspired-personal-assistant/">Scout</a>, an always-on personal agent built on OpenClaw&#8217;s architecture and integrated with Microsoft 365. Scout brings persistent identity, proactive task management across email, calendar, and reports, and enterprise policy conformance through Agent 365.</p>
<p>Developers who already use agents for coding workflows will feel right at home here. OpenClaw treats agents as long-running, multi-session processes rather than single-prompt responses, and the MXC sandboxing model is the same one adopted by GitHub Copilot CLI for process isolation. If you&#8217;ve been looking for a way to run always-on local agents safely, this is the stack to explore.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2601.png" alt="☁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Azure developer announcements and releases</h2>
<p>Azure had a huge week. For the full firehose, check the <a href="https://azure.microsoft.com/blog/search/?sort-by=newest-oldest&amp;audience=developers&amp;date=custom-range&amp;start-date=2026-06-01&amp;end-date=2026-06-05&amp;s=">Azure Blog developers archive (June 1-5, 2026)</a>.</p>
<p>Here are the top Azure posts you&#8217;ll want to read:</p>
<ul>
<li><a href="https://azure.microsoft.com/blog/announcing-microsoft-discovery-general-availability-and-microsoft-discovery-app-preview/">Announcing Microsoft Discovery general availability and Microsoft Discovery app preview</a>: announces Microsoft Discovery GA and app preview for building and governing agentic AI workflows.</li>
<li><a href="https://azure.microsoft.com/blog/microsoft-build-2026-building-agentic-apps-with-microsoft-fabric-and-microsoft-databases/">Microsoft Build 2026: Building agentic apps with Microsoft Fabric and Microsoft Databases</a>: details the data + AI platform direction for scalable agentic application development.</li>
<li><a href="https://azure.microsoft.com/blog/new-azure-cobalt-200-vms-deliver-50-performance-improvement-fully-optimized-for-modern-agentic-ai-workloads/">New Azure Cobalt 200 VMs deliver 50% performance improvement, fully optimized for modern agentic AI workloads</a>: introduces early access preview of Arm-based Cobalt 200 VMs for Linux-based AI workloads.</li>
<li><a href="https://devblogs.microsoft.com/foundry/build-smarter-agents-faster-with-foundry-iq/">Foundry IQ: Build smarter agents faster with unified knowledge and serverless retrieval</a>: covers unified knowledge and retrieval for higher-quality agent responses.</li>
<li><a href="https://devblogs.microsoft.com/foundry/build-2026-foundry-models/">A Developer&#8217;s Guide to Managing Models, Cost and Quality in Microsoft Foundry</a>: focuses on model lifecycle management, governance, and optimization in production.</li>
<li><a href="https://aka.ms/GroundingAPIBuild2026/">Grounding at scale: Engineering the retrieval system for the agentic web</a>: deeper engineering context for web-scale grounding and retrieval quality.</li>
<li><a href="https://aka.ms/BuildFoundryAgents">Build and run agents at scale with Microsoft Foundry at Build 2026</a>: practical Foundry guidance for moving from prototype to production.</li>
<li><a href="https://aka.ms/build26/CosmosDBAgents">Agentic retrieval and memory toolkits now available for Azure Cosmos DB</a>: concrete memory and retrieval tooling for agentic application patterns.</li>
</ul>
<p>Teams building cloud-native agents should treat this Azure set as required companion reading to the broader Build recap.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f916.png" alt="🤖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Microsoft Agent Framework announcements and releases</h2>
<p>If you&#8217;re building agents, this post is required reading: <a href="https://devblogs.microsoft.com/agent-framework/microsoft-agent-framework-at-build-2026-announce/">Microsoft Agent Framework at BUILD 2026: Agent Harness, Hosted Agents, CodeAct, and more</a>.</p>
<p>Key releases from the Agent Framework team:</p>
<ul>
<li>Agent Harness made production patterns first-class, including context compaction, instruction merging, todo tracking, and extensible providers.</li>
<li>Foundry Hosted Agents introduced a direct path from local development to managed production hosting with scaling, session persistence, and built-in observability.</li>
<li>CodeAct support (via Hyperlight) was introduced to reduce orchestration overhead by collapsing many tool calls into fewer model turns.</li>
<li>GitHub Copilot SDK integration reached 1.0 support in Agent Framework for .NET and Python.</li>
<li>Multi-agent Handoff orchestration reached 1.0 with explicit topology and guardrails.</li>
</ul>
<p>Two open-source releases from the Command Line blog round out the agent governance picture:</p>
<ul>
<li><a href="https://commandline.microsoft.com/agent-control-specification-runtime-governance/">Agent Control Specification (ACS)</a> is a portable, vendor-neutral spec for runtime agent governance. It defines eight lifecycle interception points (input, pre/post model call, pre/post tool call, output, startup, shutdown) with a declarative YAML manifest that works across Python, Node, .NET, and Rust. Write your policies once, enforce them in any framework.</li>
<li><a href="https://commandline.microsoft.com/assert-written-intent-executable-evals/">ASSERT</a> (Adaptive Spec-driven Scoring for Evaluation and Regression Testing) turns natural-language behavior specs into executable evaluation pipelines. Describe what your agent should and shouldn&#8217;t do, and ASSERT generates stratified test cases, runs them against the agent, and scores each trace with rationale and policy citations.</li>
</ul>
<p>For deeper dives, see <a href="https://aka.ms/BuildFoundryRAI">Build agents you can trust: A new open trust stack for AI agents on any framework</a> for cross-framework trust and governance, and <a href="https://aka.ms/build-observability">From observability to ROI for AI agents on any framework</a> for framework-agnostic measurement guidance.</p>
<p>Between the Agent Framework, ACS, and ASSERT, there&#8217;s now a clear stack for building, governing, and evaluating agents in production.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e3.png" alt="🟣" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Visual Studio announcements at Build 2026</h2>
<p>The Visual Studio team published a strong roadmap update: <a href="https://devblogs.microsoft.com/visualstudio/whats-coming-next-in-visual-studio-our-microsoft-build-2026-announcements/">What&#8217;s Coming Next in Visual Studio: Our Microsoft Build 2026 Announcements</a>.</p>
<p>Some of the top highlights:</p>
<ul>
<li>Deeper GitHub Copilot agent participation in debugging, profiling, and testing workflows.</li>
<li>Pre-build checks for existing errors and warnings to reduce avoidable failed builds.</li>
<li>AI-assisted merge conflict resolution to reduce manual conflict handling effort.</li>
<li>Expanded modernization support, including Web Forms to Blazor paths and adding Aspire to existing apps.</li>
<li>Microsoft-authored skills that can be applied automatically based on project/task context.</li>
<li>BYOK/BYOM direction so teams can use local or cloud models that match performance, cost, and compliance needs.</li>
<li>Continued platform unification on the GitHub Copilot SDK to accelerate feature delivery.</li>
</ul>
<p>The focus on reliability, maintainability, and faster inner-loop feedback makes this roadmap especially relevant to large enterprise codebases.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bb.png" alt="💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> .NET at Build 2026</h2>
<p>The .NET team published a full session guide and it&#8217;s packed: <a href="https://devblogs.microsoft.com/dotnet/dotnet-at-microsoft-build-2026/">.NET at Microsoft Build 2026: Must watch sessions</a>. .NET 11 is built for the AI era, and these featured sessions show exactly how:</p>
<ul>
<li><a href="https://build.microsoft.com/sessions/DEM304">Union types in C#</a>: one of the most requested language features is <em>finally</em> landing! Union types model closed sets of data shapes for wire protocols and domain modeling.</li>
<li><a href="https://build.microsoft.com/sessions/OD806">.NET 11 in depth: Runtime, libraries, and SDK for the AI era</a>: performance, diagnostics, and developer productivity investments for intelligent, cloud-connected, and agent-driven apps.</li>
<li><a href="https://build.microsoft.com/sessions/OD805">AI Building Blocks for .NET</a>: a practical, opinionated guide to adding AI capabilities to C# apps, from model integration to agent patterns with production-ready code.</li>
<li><a href="https://build.microsoft.com/sessions/OD802">Building for the agentic web with .NET 11</a>: ASP.NET Core and Blazor gain new building blocks for agents, tools, skills, and components, closely integrated with Aspire.</li>
<li><a href="https://build.microsoft.com/sessions/OD803">Taking your AI to the edge with .NET MAUI</a>: local models and on-device AI capabilities across mobile and desktop with .NET MAUI.</li>
<li><a href="https://build.microsoft.com/sessions/OD804">Simplifying .NET installs with dotnetup</a>: a new cross-platform tool to manage .NET SDK and Runtime installations, making developer onboarding smoother than ever.</li>
</ul>
<p>For the full lineup, check out the <a href="https://www.youtube.com/playlist?list=PLdo4fOcmZ0oWTPEY00JVEAE4QyrNHets-">.NET at Build 2026 playlist</a> on the .NET YouTube channel.</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ed.png" alt="🧭" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Start with these next steps</h2>
<p>The <a href="https://aka.ms/build26-next-steps">Build 2026 next steps hub</a> organizes learning and code resources by topic:</p>
<ul>
<li>Agents and Apps</li>
<li>Cloud Platform and Data</li>
<li>Developer Tools and Frameworks</li>
<li>Working with Models</li>
<li>Responsible AI</li>
<li>Windows</li>
</ul>
<p>It also links to skilling resources like the Build Skills Challenge, Skills Hub, Marketplace resources, MVP resources, and Build event info. Pro tip: start here if you want a structured way to follow up on everything from Build!</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a5.png" alt="🎥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Watch now: Build Day 2 livestream</h2>
<p>A full day of what&#8217;s new in GitHub Copilot and Visual Studio Code, straight from the people building it. New features, live demos, and a few surprises.</p>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/qV5TLeafojY" allowfullscreen></iframe></p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4fa.png" alt="📺" class="wp-smiley" style="height: 1em; max-height: 1em;" /> The Terminal Live: Day 1 and Day 2</h2>
<p>The GitHub Copilot team coded live from Microsoft Build across both days. Segments covered cloud agents, code review, GitHub Copilot CLI, MCP, Visual Studio 2026, Windows Terminal, Aspire, the GitHub Copilot SDK, and Visual Studio Code agents.</p>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/Wn5r4uqfsGY" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/yk8-Td0gz_k" allowfullscreen></iframe></p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b50.png" alt="⭐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Top on-demand sessions</h2>
<p>Couldn&#8217;t watch everything live? Here are some of the top sessions you can catch on demand right now.</p>
<h3>Why your AI code doesn&#8217;t ship: Closing the gap to production (BRK200)</h3>
<p><a href="https://build.microsoft.com/sessions/BRK200">Session page</a></p>
<p><iframe width="800" height="450" src="https://medius.microsoft.com/Embed/Video/a6e942b5-ceab-40f1-9a69-03390a58d306" allowfullscreen></iframe></p>
<h3>Multi-agent patterns in VS Code you won&#8217;t learn from docs (BRK201)</h3>
<p><a href="https://build.microsoft.com/sessions/BRK201">Session page</a></p>
<p><iframe width="800" height="450" src="https://medius.microsoft.com/Embed/Video/c3a80714-e18b-4cd1-b75c-92204129a14d" allowfullscreen></iframe></p>
<h3>Inside Azure innovations with Mark Russinovich (BRK226)</h3>
<p><a href="https://build.microsoft.com/sessions/BRK226">Session page</a></p>
<p><iframe width="800" height="450" src="https://medius.microsoft.com/Embed/Video/e959dc6a-bb39-46a9-84c5-b2620675b658" allowfullscreen></iframe></p>
<h3>Agent supervision is the new senior engineering skill (BRK244)</h3>
<p><a href="https://build.microsoft.com/sessions/BRK244">Session page</a></p>
<p><iframe width="800" height="450" src="https://medius.microsoft.com/Embed/Video/c8e844ff-d07c-427f-9168-2a7d84ac4acf" allowfullscreen></iframe></p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Browse all sessions</h2>
<p>The full <a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHicIn65R7Oi_1nFXQr4SbtU">Microsoft Build 2026 session playlist</a> is available on YouTube:</p>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/videoseries?si=VPk-wMLm04RzALGD&amp;list=PLlrxD0HtieHicIn65R7Oi_1nFXQr4SbtU" allowfullscreen></iframe></p>
<p><div class="alert alert-success"><p class="alert-divider"><i class="fabric-icon fabric-icon--Lightbulb"></i><strong>Browse Build sessions from your terminal</strong></p>The <a href="https://github.com/microsoft/Build-CLI">Microsoft Build CLI</a> is a GitHub Copilot CLI skill that connects your local project to the Build session catalog. It reads your dependencies, finds relevant sessions, and helps you act on what you learn. Install it with <code>/plugin install microsoft/Build-CLI</code> in GitHub Copilot CLI, or search <code>@agentPlugins microsoft-events</code> in VS Code Extensions.</div></p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f52d.png" alt="🔭" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Beyond code: other keynote highlights</h2>
<p>While this post is about top developer news and releases, I can&#8217;t help but mention some power-user goodies and nerdy toys from the keynote:</p>
<ul>
<li><strong>Majorana 2</strong>: Microsoft&#8217;s <a href="https://aka.ms/AA10vjcq">next-generation quantum chip</a> based on topological qubits. Not something you&#8217;ll ship code against today, but a signal of where the compute horizon is moving.</li>
<li><strong>Project Solara</strong>: A new <a href="https://commandline.microsoft.com/project-solara-build-2026/">chip-to-cloud platform for agent-first devices</a>, with concept reference designs for a wearable badge and a desk companion. Agents built with Microsoft 365, Copilot Studio, and the Agent Framework will be able to surface on these new form factors.</li>
<li><strong>Surface RTX Spark Dev Box</strong>: A <a href="https://blogs.windows.com/devices/2026/06/02/building-the-next-generation-of-devices-for-developers-surface-rtx-spark-dev-box/">developer-focused device</a> with NVIDIA RTX Spark silicon, delivering 1 petaflop of AI compute and 128 GB unified memory for running models locally. Available later this year.</li>
<li><strong>Frontier Tuning</strong>: Demoed on the keynote stage as a new approach to fine-tuning frontier models within Microsoft Foundry.</li>
<li><strong>Seven new MAI models</strong>: Mustafa Suleyman unveiled <a href="https://aka.ms/MAI-Build">seven new models</a> across the MAI family, expanding the range of model sizes and capabilities available in the platform.</li>
</ul>
<p>So cool! Looks like I need to start saving up for that Surface RTX Spark Dev Box&#8230;</p>
<h2><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c1.png" alt="🏁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Keep building</h2>
<p>Build delivered a clear message for developers: this is about end-to-end systems now, not isolated AI features. The most successful teams will combine model capability with strong engineering workflows, platform fundamentals, governance, and continuous improvement.</p>
<p>We&#8217;re incredibly excited about everything that was announced, and we can&#8217;t wait to see what you build with it! For code samples, repos, and practical follow-up paths, start with:</p>
<ul>
<li><a href="https://build.microsoft.com/home">Build home</a></li>
<li><a href="https://news.microsoft.com/build-2026/">Build 2026 news hub</a></li>
<li><a href="https://aka.ms/build26-next-steps">Build 2026 next steps</a></li>
<li><a href="https://blogs.microsoft.com/blog/2026/06/02/ai-alone-wont-change-your-business-the-system-running-it-will/">Jay Parikh&#8217;s Build vision post</a></li>
</ul>
<p><div class="alert alert-success"><p class="alert-divider"><i class="fabric-icon fabric-icon--Lightbulb"></i><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ready to try what shipped? Start here!</strong></p>Several of the announcements from Build are available to try right now:</p>
<ul>
<li><a href="https://github.blog/news-insights/product-news/github-copilot-app-the-agent-native-desktop-experience/">GitHub Copilot app</a>: the new agent-native desktop experience</li>
<li><a href="https://github.blog/changelog/2026-06-02-mai-code-1-flash-is-now-available-for-github-copilot">MAI-Code-1-Flash in GitHub Copilot</a>: select it from the model picker in Visual Studio Code</li>
<li><a href="https://github.com/microsoft/coreutils">Coreutils for Windows</a>: Linux-like command-line utilities, now GA on Windows</li>
<li><a href="https://github.com/microsoft/WindowsDeveloperConfig/">Windows Developer Configurations</a>: one-command developer environment setup via WinGet</li>
<li><a href="https://aka.ms/winui-skills">Windows Development Skills</a>: agentic native app development with WinUI 3 and WinApp CLI</li>
<li><a href="https://github.com/openclaw/openclaw-windows-node">OpenClaw Windows companion</a>: always-on agents running locally with MXC sandboxing</li>
<li><a href="https://build.microsoft.com/sessions/OD804">dotnetup</a>: the new cross-platform .NET SDK and Runtime installer</li>
<li><a href="https://dotnet.microsoft.com/download/dotnet/11.0">.NET 11 Preview</a>: union types in C#, agentic web building blocks, and more
</div></li>
</ul>
<p>The post <a href="https://devblogs.microsoft.com/blog/build-recap">Microsoft Build 2026 recap: vision, launches, and top sessions</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/build-recap/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/06/build-recap.webp" type="image/jpeg" />
	</item>
		<item>
		<title>Improve your agentic developer tools by grounding in Microsoft Learn</title>
		<link>https://devblogs.microsoft.com/blog/improve-your-agentic-developer-tools-by-grounding-in-microsoft-learn</link>
					<comments>https://devblogs.microsoft.com/blog/improve-your-agentic-developer-tools-by-grounding-in-microsoft-learn#respond</comments>
		
		<dc:creator><![CDATA[Pieter de Bruin]]></dc:creator>
		<pubDate>Thu, 28 May 2026 17:00:52 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[GitHub Copilot]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Microsoft for Developers]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21645</guid>

					<description><![CDATA[<p>Development workflows span terminals, IDEs, background agents, and custom assistants. What matters is whether they draw from the same current source. Learn MCP Server gives any MCP-compatible agent direct access to current Microsoft documentation &#8211; one endpoint, nothing to install, no authentication required. What does that look like in practice? You give your coding agent [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/improve-your-agentic-developer-tools-by-grounding-in-microsoft-learn">Improve your agentic developer tools by grounding in Microsoft Learn</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Development workflows span terminals, IDEs, background agents, and custom assistants. What matters is whether they draw from the same current source. <a href="https://learn.microsoft.com/training/support/mcp" rel="nofollow">Learn MCP Server</a> gives any MCP-compatible agent direct access to current Microsoft documentation &#8211; one endpoint, nothing to install, no authentication required.</p>
<p>What does that look like in practice? You give your coding agent the prompt: &#8220;create a CLI script to deploy Azure AI Foundry.&#8221; It reaches for <code>az ml</code>, the Azure ML extension &#8211; the right answer a year ago. It hits a Python dependency crash, spends 15 tool calls debugging import paths, and produces a script targeting a deprecated API surface. Another developer enters the same prompt with Learn MCP Server connected. The agent checks trusted up-to-date documentation first, finds <code>az cognitiveservices</code> (the current Foundry resource model), and delivers a working deployment script with model provisioning on the first try. Same model. The difference was whether the agent had access to current product documentation while it worked.</p>
<p>Agents are good at writing code, but they don&#8217;t know which API shipped last month. Language models training data has a cutoff, while technology evolves continuously. As a result, agents produce code that looks correct but may target deprecated APIs &#8211; leading to dependency failures, missing capabilities, or scripts that break when the old surface is retired. You can work around this with prompt engineering: add constraints, pin versions, test the output, iterate. That works. It also means you&#8217;re doing the verification the agent should be doing for you.</p>
<h3>The real world test</h3>
<p>We gave a coding agent a simple task: generate a bash script to deploy a Foundry instance. The agent chose the <code>az ml</code> extension, which uses <code>az ml workspace create --kind hub</code> to create Foundry resources. This was the documented approach until recently. When the extension failed to load (a Python dependency conflict with rpds-py), the agent started debugging: reinstalling pip packages, testing Python import paths, checking system vs. CLI Python versions, inspecting .so files. Fifteen tool calls later, the extension loaded, and the script ran &#8211; but it targeted the old hub-and-project model through the ML workspace API.</p>
<p><figure id="attachment_21648" aria-labelledby="figcaption_attachment_21648" class="wp-caption alignnone" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610.webp"><img fetchpriority="high" decoding="async" class="wp-image-21648 size-large" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610-1024x449.webp" alt="The agent chose az ml - the right answer a year ago - and hit a dependency crash on first run" width="1024" height="449" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610-1024x449.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610-300x131.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610-768x336.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610-1536x673.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143610.webp 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption id="figcaption_attachment_21648" class="wp-caption-text">Image 1: The agent chose az ml &#8211; the right answer a year ago &#8211; and hit a dependency crash on first run.</figcaption></figure></p>
<p>Then we used the same prompt, same model, but with Microsoft Learn MCP Server connected. The agent queried Microsoft Learn for current Foundry deployment guidance, found the quickstart documentation, and used <code>az cognitiveservices</code> &#8211; the current API surface for Foundry resources. No extension to install. No dependency issues. The script created an AIServices resource, a project, and deployed a model with version pinning, SKU configuration, and capacity settings. It had interactive prompts, idempotency checks, and connection info output. The agent didn&#8217;t need to be told which API to use. It read the docs. The result: working code on the first try, no manual correction, and fewer steps from prompt to production.</p>
<p><figure id="attachment_21647" aria-labelledby="figcaption_attachment_21647" class="wp-caption alignnone" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616.webp"><img decoding="async" class="wp-image-21647 size-large" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616-1024x688.webp" alt="The agent's first action was querying Microsoft Learn. It found the current API surface before writing any code" width="1024" height="688" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616-1024x688.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616-300x202.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616-768x516.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616-1536x1032.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-11-143616.webp 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption id="figcaption_attachment_21647" class="wp-caption-text">Image 2: The agent&#8217;s first action was querying Microsoft Learn. It found the current API surface before writing any code.</figcaption></figure></p>
<table style="font-weight: 400;" data-tablestyle="MsoTableGrid" data-tablelook="1184" aria-rowcount="8">
<tbody>
<tr aria-rowindex="1">
<td data-celllook="0"><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Without grounding</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">With grounding</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="2">
<td data-celllook="0"><span data-contrast="auto">Prompt</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">&#8220;create a CLI script to deploy Azure AI Foundry&#8221;</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Same</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="3">
<td data-celllook="0"><span data-contrast="auto">Agent&#8217;s first action</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Web search</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Microsoft Docs Search</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="4">
<td data-celllook="0"><span data-contrast="auto">API chosen</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">az ml (deprecated for Foundry)</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">az cognitiveservices (current)</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="5">
<td data-celllook="0"><span data-contrast="auto">Blocked by</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">rpds.rpds Python dependency crash</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Nothing</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="6">
<td data-celllook="0"><span data-contrast="auto">Debug steps before producing code</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">15+ tool calls</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">0</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="7">
<td data-celllook="0"><span data-contrast="auto">Model deployment included</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">No</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Yes (gpt-4.1-mini, versioned, with SKU)</span><span data-ccp-props="{}"> </span></td>
</tr>
<tr aria-rowindex="8">
<td data-celllook="0"><span data-contrast="auto">Result</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Script targeting old hub-and-project API</span><span data-ccp-props="{}"> </span></td>
<td data-celllook="0"><span data-contrast="auto">Working end-to-end deployment script</span><span data-ccp-props="{}"> </span></td>
</tr>
</tbody>
</table>
<h3>What is Learn MCP Server</h3>
<p>Learn MCP Server gives agents direct access to Microsoft Learn documentation, code samples, and guidance through the Model Context Protocol (MCP). Instead of relying on training data that&#8217;s months or years old, agents can search and retrieve current, official content as part of their reasoning.</p>
<p>It works with any MCP-compatible client: GitHub Copilot CLI, Visual Studio Code, Visual Studio, and others like Claude Code. The server is remote (https://learn.microsoft.com/api/mcp, which MCP clients understand) &#8211; nothing to install or host. No authentication required. You can even use Learn MCP Server in agent you build in Foundry or Copilot Studio.</p>
<p>When a Microsoft technology is in scope &#8211; deploying an Azure service, migrating a .NET application, configuring a Bicep template &#8211; the agent can query Learn for current guidance and reason over it alongside your codebase. That means fewer outdated patterns, fewer manual verification loops, and docs showing up where the decisions happen instead of in a separate browser tab.</p>
<p><figure id="attachment_21653" aria-labelledby="figcaption_attachment_21653" class="wp-caption alignnone" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-193756.webp"><img decoding="async" class="wp-image-21653 size-large" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-193756-1024x577.webp" alt="Diagram showing how an AI agent on your computer connects to the remote Learn MCP Server, which draws from Microsoft Learn documentation, to produce working code targeting current features" width="1024" height="577" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-193756-1024x577.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-193756-300x169.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-193756-768x432.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-27-193756.webp 1499w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption id="figcaption_attachment_21653" class="wp-caption-text">Image 3: Diagram showing how an AI agent on your computer connects to the remote Learn MCP Server, which draws from Microsoft Learn documentation, to produce working code targeting current features</figcaption></figure></p>
<h3>Set it up</h3>
<p>GitHub Copilot CLI:</p>
<pre><code>/plugin install microsoftdocs/mcp 
/restart
</code></pre>
<p>VS Code: Open the extensions pane, search for &#8220;@agentPlugins microsoft-docs&#8221; and select Install.</p>
<h3>Try it</h3>
<p>Connect the tools you already use to Learn MCP Server and try it on your next task that touches a Microsoft product or service. The quickest way to see the difference is to ask your agent something that changed recently &#8211; a new API, a renamed service, a deprecated flag &#8211; and see whether it gets it right on the first try.</p>
<p>Connect with us in the <a href="https://github.com/MicrosoftDocs/mcp" rel="nofollow">Learn MCP Server repository</a> for additional configurations and more information.</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/improve-your-agentic-developer-tools-by-grounding-in-microsoft-learn">Improve your agentic developer tools by grounding in Microsoft Learn</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/improve-your-agentic-developer-tools-by-grounding-in-microsoft-learn/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/05/improve-agentic-tools-grounding-2.webp" type="image/jpeg" />
	</item>
		<item>
		<title>How AI coding agents actually use your technology</title>
		<link>https://devblogs.microsoft.com/blog/how-ai-coding-agents-actually-use-your-technology</link>
					<comments>https://devblogs.microsoft.com/blog/how-ai-coding-agents-actually-use-your-technology#respond</comments>
		
		<dc:creator><![CDATA[Waldek Mastykarz]]></dc:creator>
		<pubDate>Wed, 27 May 2026 18:30:38 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Agent Experience]]></category>
		<category><![CDATA[AX]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21637</guid>

					<description><![CDATA[<p>You ship an SDK, a CLI, an API, and developers use it. Now AI coding agents use it too, except they use it differently than humans do. Most of the time you have no idea what&#8217;s actually happening between &#8220;developer types a prompt&#8221; and &#8220;agent generates code with your technology.&#8221; Is the agent reading your [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/how-ai-coding-agents-actually-use-your-technology">How AI coding agents actually use your technology</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>You ship an SDK, a CLI, an API, and developers use it. Now AI coding agents use it too, except they use it differently than humans do. Most of the time you have no idea what&#8217;s actually happening between &#8220;developer types a prompt&#8221; and &#8220;agent generates code with your technology.&#8221; Is the agent reading your docs? Is it calling your MCP server? Is it ignoring both and guessing from memory?</p>
<p>In the <a href="https://developer.microsoft.com/blog/the-ax-stack-whats-fixed-where-you-can-win" rel="nofollow">previous article</a>, we introduced the AX stack: model, harness, and agent extensions. We talked about what&#8217;s fixed and what you can influence. This time, let&#8217;s trace through what actually happens, step by step, when an agent encounters your technology. Because until you see the mechanics, you can&#8217;t fix what&#8217;s breaking.</p>
<h2 id="what-happens-when-a-developer-says-build-me-something">What happens when a developer says &#8220;build me something&#8221;</h2>
<p>A developer opens their coding agent, types a prompt: &#8220;Build me a REST API with authentication using Contoso Identity.&#8221; Here&#8217;s what happens next.</p>
<h3 id="step-1-the-harness-assembles-context">Step 1: The harness assembles context</h3>
<p>Before anything hits the model, the harness (Copilot, Claude Code, Cursor) assembles the context window. The VS Code team recently <a href="https://code.visualstudio.com/blogs/2026/05/15/agent-harnesses-github-copilot-vscode" target="_blank" rel="nofollow noopener">published a deep dive into how their harness works</a>, covering context assembly, tool exposure, and the agent loop. The harness pulls together:</p>
<ul>
<li>the system prompt (harness-specific, you can&#8217;t see or change it)</li>
<li>environment details: the developer&#8217;s OS, the full path to the working directory</li>
<li>workspace files the harness thinks are relevant</li>
<li>tool descriptions from installed extensions (MCP servers, skills, custom agents)</li>
<li>conversation history</li>
<li>any instruction files (.github/copilot-instructions.md, AGENTS.md, etc.)</li>
<li>the developer&#8217;s prompt</li>
</ul>
<p>This is just an example, because every harness is different. Nonetheless, if you consider the context window size of any of the popular LLMs used for coding, you can start to see how such a setup quickly fills up the available tokens. The harness decides what makes the cut. If the developer has 20 extensions installed, the harness might summarize tool descriptions, drop some entirely, or rank them by estimated relevance. Your extension&#8217;s description is competing for space before the model even sees it. If it exceeds the harness&#8217;s length limit (each harness sets its own), it gets ignored entirely, no matter how relevant it is. And details you&#8217;d never think about, like the OS, or the directory path, influence the model&#8217;s decisions. It&#8217;ll generate platform-specific code, assume different toolchains, even pick different default configurations based on what it sees here.</p>
<h3 id="step-2-the-model-reads-the-room">Step 2: The model reads the room</h3>
<p>The model receives this assembled context and does something humans don&#8217;t: it reads <strong>everything</strong> at once. The system prompt, the tool descriptions, the workspace context, the developer&#8217;s prompt. It builds a mental model of what&#8217;s available and what the developer asked for.</p>
<p>Here&#8217;s where training data matters. If the model has seen your technology during pre-training, it already has opinions. It knows (or thinks it knows) your API patterns, your SDK conventions, your common error messages. If it hasn&#8217;t seen your technology, it has nothing, and it&#8217;ll either ask for help or guess based on similar technologies. Either way, the model&#8217;s job at this point is to decide what to do first: does it have enough information to start coding, or does it need to call a tool?</p>
<p>It turns out, that this decision is a combination of the behavior encoded in the model and the instructions the harness adds on top. Some agents are more inclined to call tools straight away, while others rely on their own knowledge and only use tools when the user asks them to. Some agents tend to search for the latest information on the internet first, while others prioritize efficiency and start working on the task if they feel they know enough. So even if you ship a great extension, one agent might call it proactively while another never touches it unless the developer explicitly asks.</p>
<h3 id="step-3-tool-selection-or-not">Step 3: Tool selection (or not)</h3>
<p>If the model decides it needs more information, it looks at the available tools and skills. This is where your MCP server&#8217;s tool descriptions and skill definitions matter. The model reads each description and decides: does this help with what the developer asked? Notice, that this decision is based on semantic matching, not keyword search. The model is interpreting intent. If the developer said &#8220;authentication&#8221; and your tool is described as &#8220;configure identity provider settings,&#8221; the model has to bridge that gap.</p>
<p>And even when your description matches the intent perfectly, the model might still skip it. If the task looks simple enough, or if the model feels confident it already knows the answer, it won&#8217;t bother calling your tool. It&#8217;ll just go with what it has. This is especially painful when the model has <em>some</em> training data for your technology but it&#8217;s outdated: high confidence, stale information.</p>
<p>If the model <em>doesn&#8217;t</em> select any tool or skill, it proceeds with whatever it already knows: it&#8217;ll use pre-training data. It&#8217;ll use whatever version of your SDK the model learned from, however many months ago that training cut-off was. If your API changed since then, the generated code is wrong and neither the developer nor the agent knows it.</p>
<h3 id="step-4-tool-invocation">Step 4: Tool invocation</h3>
<p>Say, the model selected your tool. Now it needs to call it correctly. It constructs the parameters based on the tool&#8217;s schema and the developer&#8217;s intent. But the model might map the developer&#8217;s intent to the wrong parameters, or invent values that don&#8217;t match the schema.</p>
<p>If multiple tools match the intent, the model might call either one or both. And it&#8217;s not just about competition for relevance. Say there are two MCP tools from different servers that can provide more information. One is invokable directly, the other uses subrouting: a parent tool that returns information about subtools that actually hold the answer. This is a common technique in larger MCP servers to lower the number of tools exposed to the LLM and optimize token usage. If in the first turn one tool returns the actual information while the other returns routing instructions for the subtool, the model might decide it knows enough and never invoke the subtool, failing the routing entirely. This is why testing tools in isolation isn&#8217;t enough, and you need to test them in the combinations developers actually use.</p>
<p>Your MCP server receives the call, processes it, and returns content. What you return matters <em>a lot</em>. Return too much content and the model ignores parts of it or gets confused. Return too little, and the model fills gaps with assumptions. Format the content in a confusing way, and the model misparses it. Provide wrong information and you can derail the agent from the original task entirely. We&#8217;ve seen extensions cause agents to upgrade a project to a different framework version than what the developer asked for, or switch to a different programming language mid-task. And all of it goes back into the context window, consuming tokens. If you return 3,000 tokens of documentation when 200 would do, you just pushed other relevant context out of the window. <strong>That&#8217;s drag.</strong></p>
<h3 id="step-5-the-model-processes-the-response">Step 5: The model processes the response</h3>
<p>The model takes your tool&#8217;s response and integrates it with everything else in context. It now has the developer&#8217;s intent, workspace context, <em>and</em> your tool&#8217;s output, and it decides whether to generate code, call another tool, or ask the developer a question. If your tool returned clear, specific content (a code sample, a schema, step-by-step instructions), the model can proceed. If your tool returned a wall of reference documentation, the model has to extract what&#8217;s relevant, and its extraction might miss the critical detail.</p>
<p><em>How would you know?</em> You wouldn&#8217;t. The tool got called, it returned content, everything looks fine from the outside. But the model latched onto the wrong paragraph and generated code that uses an internal-only endpoint. That&#8217;s the worst kind of quality failure: invisible until someone runs the code.</p>
<h3 id="step-6-code-generation">Step 6: Code generation</h3>
<p>Next, the model generates code. This is where everything upstream either pays off or falls apart. If discovery worked, the model found your extension. If selection worked, it called the right tool for the task. If the tool response was good, the model has accurate, current information, and the generated code uses the right SDK version, the right patterns, the right authentication flow.</p>
<p>If any step failed, the model falls back to its training data. It might use an older API version, pick a competing SDK, or invent an endpoint that doesn&#8217;t exist. The developer sees working-looking code that fails at runtime, and blames the agent.</p>
<p>Many agents integrate with language servers (LSPs) and respond to problems reported in real time, adjusting code as it&#8217;s generated rather than waiting until the end. In VS Code, the agent also monitors the Problems panel where any active extension can surface diagnostics: type errors, lint violations, deprecation warnings. If your technology contributes to that feedback (through a VS Code extension, a language server, or a linter), you&#8217;re influencing the agent&#8217;s output <em>during</em> generation, not just after. That&#8217;s another surface you control.</p>
<h3 id="step-7-iteration">Step 7: Iteration</h3>
<p>The agent doesn&#8217;t stop at first generation. If the harness supports it (and most do), the agent builds the code, runs tests, observes errors, and tries again. Your technology surface matters here too. If your CLI produces clear error messages, the agent can quickly and efficiently self-correct. If your build tooling or test runner returns helpful output with specific codes and suggestions, the agent fixes the problem. If your errors are cryptic (&#8220;Error: operation failed&#8221;), the agent is flying blind and might iterate in the wrong direction for 10 turns before giving up.</p>
<p><strong>This is a part of AX that people overlook.</strong> Your error messages aren&#8217;t just for human developers anymore. They&#8217;re for agents, and agents have no intuition to fall back on. They take your error message literally.</p>
<h2 id="the-information-cascade">The information cascade</h2>
<p>Notice the dependency chain:</p>
<ol>
<li>Context assembly → determines what the model can see</li>
<li>Model interpretation → determines what the model thinks is available</li>
<li>Tool selection → determines whether the model uses your extension</li>
<li>Tool invocation → determines what information the model gets</li>
<li>Response processing → determines how the model uses that information</li>
<li>Code generation → determines what the developer actually receives</li>
<li>Iteration → determines whether the agent can self-correct</li>
</ol>
<p>A failure at step 1 cascades through everything. If the harness drops your tool description, steps 3-7 never happen. Your tool might as well not exist. If step 3 fails (the model sees your tool but doesn&#8217;t connect it to the task), it&#8217;s the same result. If step 4 succeeds but the response is confusing, step 6 produces broken code.</p>
<p>This is why measuring only &#8220;was my tool called?&#8221; tells you almost nothing. Your tool can be called correctly and still produce drag if the response quality is poor. Your tool can never be called despite being installed, which means <strong>your discovery is broken</strong>. And between those two extremes? A dozen ways each step can silently degrade the next.</p>
<h2 id="summary">Summary</h2>
<p>Most AX failures are invisible. They happen upstream, silently, and you never see them. You can&#8217;t diagnose them by looking at outputs alone: you need to know which step failed, because each one has a different fix. In the next article, we&#8217;ll cover how to measure whether your AX work is creating lift or drag at each step.</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/how-ai-coding-agents-actually-use-your-technology">How AI coding agents actually use your technology</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/how-ai-coding-agents-actually-use-your-technology/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/05/ax-stack-part-2.webp" type="image/jpeg" />
	</item>
		<item>
		<title>The AX stack: what&#8217;s fixed, where you can win</title>
		<link>https://devblogs.microsoft.com/blog/the-ax-stack-whats-fixed-where-you-can-win</link>
					<comments>https://devblogs.microsoft.com/blog/the-ax-stack-whats-fixed-where-you-can-win#respond</comments>
		
		<dc:creator><![CDATA[Waldek Mastykarz]]></dc:creator>
		<pubDate>Thu, 21 May 2026 17:39:59 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Microsoft for Developers]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Agent Experience]]></category>
		<category><![CDATA[AX]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21606</guid>

					<description><![CDATA[<p>AI coding agents promise to make you more productive. On the surface they do, but in practice they fall short: agents generate code that doesn&#8217;t compile, use a deprecated SDK, or pick the wrong service entirely. Is it you using it wrong? Is it your tech stack? Or is it the tools you haven&#8217;t configured [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/the-ax-stack-whats-fixed-where-you-can-win">The AX stack: what&#8217;s fixed, where you can win</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>AI coding agents promise to make you more productive. On the surface they do, but in practice they fall short: agents generate code that doesn&#8217;t compile, use a deprecated SDK, or pick the wrong service entirely. Is it you using it wrong? Is it your tech stack? Or is it the tools you haven&#8217;t configured yet?</p>
<p>The stack between a developer&#8217;s prompt and the generated code has layers. Some of those layers are fixed: you can&#8217;t change them no matter what you do. But there&#8217;s one layer where you have all the leverage. And if you don&#8217;t know which is which, you&#8217;ll waste time optimizing the wrong thing without seeing any results.</p>
<p>This is the first article in a series about Agent Experience (AX): the practice of making AI coding agents work correctly with your technology. The series covers what you can and can&#8217;t control in the agent stack, how to measure whether your extensions are helping or hurting, and how to iterate toward better outcomes.</p>
<h2 id="the-stack">The stack</h2>
<p>When a developer asks an AI coding agent to build something with your technology, here&#8217;s what actually happens: the developer sends an instruction to the agent. The agent sends it to the LLM along with information about the workspace and available tools (MCP, skills, etc.). The LLM processes the instruction and responds with instructions to the agent about which tools to call. This repeats until the LLM considers its job done or needs more information from you.</p>
<pre><code>Developer prompt
  → Agent (harness)
    → Model
      → Agent extensions (skills, MCP servers, instructions, custom agents)
        → Your technology surface (CLI, SDK, API)
          → Generated code
</code></pre>
<p>Three layers matter for this conversation: the model, the harness, and the agent extensions. Each has a different owner, different constraints, and a different relationship to you.</p>
<h3 id="the-model">The model</h3>
<p>The model is a fixed constraint: you didn&#8217;t train it, you can&#8217;t retrain it, and you can&#8217;t control what&#8217;s in its weights.</p>
<p>If the model learned your API from outdated docs, it&#8217;ll generate code using deprecated patterns. If it never saw your technology during training, it&#8217;ll hallucinate something plausible and wrong. And if there&#8217;s a competing technology that has more training data, the model will default to it even when yours is the right fit.</p>
<p>You can&#8217;t fix this directly. What you <em>can</em> do is provide information at inference time that overrides or supplements what the model knows. That&#8217;s what agent extensions are for. But you need to understand: the model is the foundation, and its biases are the default behavior. Everything you build on top is fighting or reinforcing those defaults.</p>
<h3 id="the-harness">The harness</h3>
<p>The harness is the agent itself: Copilot, Claude Code CLI, Cursor, Windsurf, whatever the developer is using. It controls the system prompt, the tool-calling protocol, and how the context gets assembled. It decides what gets included in the context window, what gets dropped, and what the agent does next.</p>
<p>You don&#8217;t control the harness either. You might build an extension that works perfectly in Copilot and breaks in Claude Code CLI because the two harnesses handle tool descriptions differently. The harness decides <em>how</em> the agent consumes your extensions, and that decision is opaque to you. As a result, the same MCP server, with the same tool descriptions, can produce completely different results across harnesses. The harnesses interpret and invoke them differently. Your extension isn&#8217;t running in a vacuum. It&#8217;s running inside someone else&#8217;s orchestration layer.</p>
<p>So when developers are telling that some model is better than another, they&#8217;re telling only half of the story. The same model will work differently in different harnesses, and you should consider them both when evaluating performance.</p>
<h3 id="agent-extensions">Agent extensions</h3>
<p>Agent extensions are the surface you control. They&#8217;re everything you can put in front of the agent to shape its behavior: skills, MCP servers, instruction files, and custom agents. If you own a technology, you ship these to help agents use it correctly. If you&#8217;re a developer, you configure them in your workspace to get better results.</p>
<p>Agent extensions teach the model about your technology, correct its misconceptions, and steer it away from competing approaches. They&#8217;re how you get the model to do what you want instead of what it defaults to. They&#8217;re also how you inject up-to-date information that the model might not have learned during training. But agent extensions don&#8217;t exist in isolation: they compete.</p>
<h2 id="the-zero-sum-context-window">The zero-sum context window</h2>
<p>Every agent has a finite context window. Your MCP server&#8217;s tool descriptions, your instruction files, your skill definitions. They all consume tokens. And so do everyone else&#8217;s.</p>
<p>When a developer has 15 extensions installed and asks the agent to do something, the harness has to decide which tools to invoke, which context to include, and what to drop. Your tool description might get summarized, truncated, or ignored entirely because something else claimed the space first.</p>
<p>We&#8217;ve seen this in evaluations repeatedly. An extension with high discovery, correct invocations, and good outcomes in isolation degrades when other extensions are present. More extensions don&#8217;t mean better outcomes. Sometimes they mean worse outcomes.</p>
<p><em>Why would that happen?</em> Because extensions fight for the same context window. Your tool description says “use this for database operations.” Another extension&#8217;s tool description says “use this for database operations.” The model has to pick, and its choice depends on factors you don&#8217;t control: the order things appear in context, how the harness ranks tools, what the model&#8217;s training says about each option. That&#8217;s the composition problem, and nobody has a good answer for it yet.</p>
<h2 id="the-three-failure-modes">The three failure modes</h2>
<p>After hundreds of agent sessions across different products and configurations, we keep seeing three ways extensions fail.</p>
<h3 id="discovery-failure">Discovery failure</h3>
<p>Your extension exists, but the agent never sees it. The developer has too many extensions installed, and yours gets dropped before it reaches the context window. Or the harness doesn&#8217;t load it at all because of how extensions are registered or prioritized. The tool is invisible: the model can&#8217;t use what it can&#8217;t see. It&#8217;s a packaging and distribution problem. Your extension needs to be installed, registered, and small enough to survive context limits.</p>
<h3 id="selection-failure">Selection failure</h3>
<p>Your extension is in context, but the agent doesn&#8217;t connect it to the developer&#8217;s intent. The developer says “set up authentication”, while your tool is called <code>configure-identity-provider</code>, and the model never makes the connection, or your description is optimized for specific keywords that the developer doesn&#8217;t know or use.</p>
<p>Of the three, this one shows up the most &#8211; and it&#8217;s the most fixable. It comes down to vocabulary that you use to describe your tool vs. how developers (and models) think about the problem. Fix the description and you&#8217;ll fix the selection.</p>
<h3 id="quality-failure">Quality failure</h3>
<p>The agent discovers, selects, and invokes your extension, but the content the extension provides hurts more than it helps. The MCP server returns a wall of text that the model either ignores or misinterprets. The skill provides instructions that conflict with what the model already knows. The content returned is accurate but so verbose that it pushes other useful context out of the window.</p>
<p>This one&#8217;s subtler than the other two. The extension is working &#8211; it&#8217;s being called, it&#8217;s returning content, but the <em>outcome</em> is worse than if the extension didn&#8217;t exist at all. That&#8217;s drag. And you won&#8217;t know it&#8217;s happening unless you measure.</p>
<p>This also shows, that when testing in AX, you can&#8217;t just verify that the agent is calling your extension. You have to verify that the content it returns is improving outcomes. Otherwise, you might be optimizing for the wrong thing.</p>
<h2 id="what-youre-actually-optimizing">What you&#8217;re actually optimizing</h2>
<p>When you&#8217;re working on AX, changing agent extensions gives you instant results, everything else is fixed. You can improve your public docs and hope future model training picks them up, but that&#8217;s a long-term bet with no guaranteed payoff. You can&#8217;t change how the harness orchestrates. What you <em>can</em> change though right now is your agent extensions, and there are four things to get right:</p>
<ol>
<li><strong>Does the agent discover your extensions?</strong> If it doesn&#8217;t see them, nothing else matters. This is especially important when testing your extension in combination with other popular extensions relevant to your audience.</li>
<li><strong>Does the agent select your extensions for the task?</strong> If it sees them but never connects them to the developer&#8217;s intent, they&#8217;re dead weight.</li>
<li><strong>When it uses them, do outcomes improve?</strong> If outcomes don&#8217;t improve or get worse, your extension is drag, not lift.</li>
<li><strong>Do your extensions compose well with others?</strong> If your extension works in isolation but breaks when other extensions are present, you have a composition problem.</li>
</ol>
<p>Every AX improvement you make maps to one of these four things: discovery, selection, quality, composition.</p>
<h2 id="lift-and-drag">Lift and drag</h2>
<p>Every AX conversation frames the question of lift vs. drag. Are your extensions creating lift by improving outcomes, or are they creating drag by making things worse?</p>
<h3 id="lift">Lift</h3>
<p>You add your extension, and outcomes improve. The agent discovers your tool, uses it correctly, and the generated code actually works &#8211; right SDK, right patterns, up to date. That&#8217;s what you&#8217;re building extensions for.</p>
<h3 id="drag">Drag</h3>
<p>Drag is the opposite of lift. Your extension is present, but outcomes are the same or worse. Maybe the agent never discovers it: zero lift, but at least no harm. Maybe it&#8217;s discovered but the content confuses the model. Maybe it works fine alone but conflicts with other extensions. The worst part? You usually don&#8217;t know it&#8217;s happening.</p>
<p>The only way to tell the difference is to measure. Run the same scenario with and without your extension. Compare the outcomes: is it better with the extension? You&#8217;ve got a lift. Is it same or worse: drag. Is the outcome better but token costs tripled? Expensive lift. Whether it&#8217;s worth it or not depends on the improvement.</p>
<p>This is what AX measurement comes down to: controlled comparisons. A baseline without extensions versus a profile with your extensions. Everything else (the model, the harness, the developer&#8217;s prompt) stays the same.</p>
<h2 id="summary">Summary</h2>
<p>You can&#8217;t change the model or the harness. Agent extensions are your one lever, and the only way to know if they&#8217;re helping is to measure. Run the same scenario with and without your extensions, keep everything else the same, and compare the outcomes. That&#8217;s the difference between shipping lift and shipping drag. In the following articles, we&#8217;ll talk more about what good outcomes look like, how to measure them, and how to iterate on your extensions to get more lift and less drag.</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/the-ax-stack-whats-fixed-where-you-can-win">The AX stack: what&#8217;s fixed, where you can win</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/the-ax-stack-whats-fixed-where-you-can-win/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/05/ax-stack-intro.webp" type="image/jpeg" />
	</item>
		<item>
		<title>Agentic-Agile: Why Agent Development Needs Agile (Not Just Prompts)</title>
		<link>https://devblogs.microsoft.com/blog/agentic-agile-why-agent-development-needs-agile-not-just-prompts</link>
					<comments>https://devblogs.microsoft.com/blog/agentic-agile-why-agent-development-needs-agile-not-just-prompts#comments</comments>
		
		<dc:creator><![CDATA[Daniel Epstein]]></dc:creator>
		<pubDate>Tue, 19 May 2026 15:00:09 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[coding agents]]></category>
		<category><![CDATA[GitHub Copilot]]></category>
		<category><![CDATA[GitHub Copilot CLI]]></category>
		<category><![CDATA[Templates]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21504</guid>

					<description><![CDATA[<p>&#8220;A bad system will beat a good person [or agent] every time&#8221; ~Dr. William Edwards Deming (with apologies) I started vibe coding by writing prompts (often dictated into my phone), refining them with an agent in M365 Copilot, and creating handoff files to use with GitHub Copilot CLI. The results were predictably non-deterministic. Prompt-driven development [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/agentic-agile-why-agent-development-needs-agile-not-just-prompts">Agentic-Agile: Why Agent Development Needs Agile (Not Just Prompts)</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: left;"><em>&#8220;A bad system will beat a good person [or agent] every time&#8221; </em><em>~Dr. William Edwards Deming </em><em>(with apologies)</em></p>
<p>I started <em>vibe coding</em> by writing prompts (often dictated into my phone), refining them with an agent in M365 Copilot, and creating handoff files to use with GitHub Copilot CLI. The results were predictably non-deterministic.</p>
<p>Prompt-driven development is a typical starting pattern: a developer opens a chat session, writes a prompt, reviews the output, adjusts, re-prompts. Maybe they get something useful. Maybe they spend an afternoon debugging emergent behavior that nobody specified and nobody tested. Then the process evolves to Spec-Driven Development: the developer creates specifications defining the &#8220;why and the &#8220;what.&#8221; They institute constraints and validation criteria, and the agent delivers more consistent code requiring less debugging.</p>
<p>But how do we scale this to teams of many humans and agents working in parallel? How do we persist development over large projects and codebases that exhaust most of the agent context window during initial grounding? How do we get better over time?</p>
<p>Several of my colleagues and I have started talking about a model we&#8217;re calling <strong>Agentic-Agile development</strong> as one methodology to address these problems.</p>
<h2 dir="auto">Agentic-Agile Methodology: Wait!<strong> Hear me out!</strong></h2>
<p dir="auto">I&#8217;m fortunate in my role at Microsoft as a Partner Tech Strategist (PTS) to work in a global team managing joint product and co-innovation with our leading <em>Data &amp; AI</em> and partners. We come with a combination of engineering and product management backgrounds and spend most of our time focused on getting teams working better together across organizations. Adding agents to the development team, while ensuring continuous improvement, is proving a natural extension of our role.</p>
<p dir="auto">The original <a href="https://agilemanifesto.org/">Agile Manifesto</a> taught us to value individuals and interactions, working software, customer collaboration, and responding to change. It was so successful that for some it became dysfunctional dogma (see <a href="https://medium.com/@ibrahim2128/the-death-of-agile-why-big-tech-is-ditching-scrum-and-what-they-use-instead-2d9bf1f189fc">The Death of Agile: Why Big Tech Is Ditching Scrum and What They Use Instead | by Ibrahim Irfan | Medium</a>).</p>
<p dir="auto">But Agile and Scrum were designed for maintaining team velocity while maintaining alignment in working toward rapidly shifting business goals. Today&#8217;s problems are similar but with agents, the time scale and the makeup of the team have changed. Our processes need to be flexible to evolve and maintain that alignment with agents as part of the team. That doesn&#8217;t mean we need to abandon processes.</p>
<p dir="auto">This article is the introduction to a longer series detailing my and some colleagues&#8217; practices that we hope will be helpful to others on the same path. I&#8217;ll often reference some of my personal projects, like <em>Minthe </em>which started as an attempt to build a <a href="https://platform.claude.com/cookbook/claude-agent-sdk-01-the-chief-of-staff-agent">chief of staff agent</a> in <a href="https://learn.microsoft.com/en-us/azure/foundry/what-is-foundry?tabs=python">Microsoft Foundry</a>. <em>Minthe</em> has become my larger experiment in Agentic-Agile development and also has helped to bootstrap several other projects.</p>
<p>This isn&#8217;t a finished process, and we would really like your feedback and participation to continue to improve the framework.</p>
<ul>
<li><strong>Read the full version of </strong><a class="sKJkXMJPyLUkIVvOyxWiZKZqiWNefsPUkik " tabindex="0" href="https://github.com/microsoft/agentic-agile-template/blob/main/MANIFESTO.md" target="_self" data-test-app-aware-link=""><strong>Toward an Agentic-Agile Manifesto</strong></a></li>
<li><strong>Explore the </strong><a class="sKJkXMJPyLUkIVvOyxWiZKZqiWNefsPUkik " tabindex="0" href="https://github.com/microsoft/agentic-agile-template" target="_self" data-test-app-aware-link=""><strong>Agentic-Agile Template | GitHub</strong></a></li>
</ul>
<p><figure id="attachment_21517" aria-labelledby="figcaption_attachment_21517" class="wp-caption aligncenter" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-170647.webp"><img decoding="async" class="wp-image-21517 size-large" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-170647-1024x883.webp" alt="A screenshot of a waterfall roadmap of features taken from GitHub Projects (dark mode)" width="1024" height="883" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-170647-1024x883.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-170647-300x259.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-170647-768x662.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-170647.webp 1243w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption id="figcaption_attachment_21517" class="wp-caption-text">A roadmap view of <em>Minthe</em> (time not to scale)</figcaption></figure></p>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">The Problem: Development Without Process</h2>
</div>
<p dir="auto">Prompt-driven development works for small, self-contained tasks: Generate a function. Refactor a module. Write a test. These are bounded problems with clear outputs that modern AI coding agents handle well. Spec-Driven Development expands the scope of the tasks that can be delivered but it doesn&#8217;t scale over time without careful grooming and maintenance.</p>
<p dir="auto">The breakdown happens when scope grows. A multi-module system. An integration layer with external dependencies. A feature that spans files, schemas, and behavioral contracts. At that scale, prompt-driven development produces a set of familiar failures:</p>
<ul dir="auto">
<li><strong>No backlog:</strong> There is no structured list of what needs to be built, in what order, with what dependencies. Work gets discovered during implementation, not planned before it.</li>
<li><strong>No concept of done:</strong> Each prompt session ends when the developer feels satisfied, not when a contract is fulfilled. &#8220;Good enough&#8221; replaces &#8220;contract satisfied.&#8221;</li>
<li><strong>No phased delivery:</strong> Everything is attempted at once. There is no staged rollout, no incremental validation, no ability to pause and redirect.</li>
<li><strong>No governance:</strong> Safety constraints, validation rules, and quality gates are bolted on after the fact, if they are added at all.</li>
</ul>
<div>
<p>The result is predictable. Agents produce code that works in isolation but breaks under integration. Behavior drifts across sessions because there is no shared state defining expected behavior, or because durable memory systems contain stale and conflicting information. Defects escape into production because there was no structured review gate to catch them. The developer compensates by spending more time reviewing and correcting, which erodes the time savings that agents were supposed to provide.</p>
<p>This is not a model problem; it is a process problem. Upgrading the model does not fix missing acceptance criteria. A more capable agent working against an ambiguous spec produces more sophisticated drift, not less.</p>
<p>Agentic-Agile addresses this through codifying processes and standards in documentation for both humans (<code>README.md</code> files throughout the repo) and agents (e.g. <code>.github/copilot-instructions.md</code>, <code>CLAUDE.md</code>, <code>STYLE.md</code>).</p>
</div>
<div></div>
<div>
<p><figure id="attachment_21522" aria-labelledby="figcaption_attachment_21522" class="wp-caption aligncenter" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-scaled.webp"><img decoding="async" class="wp-image-21522 size-large" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-1024x484.webp" alt="A screenshot of a VSCode window showing two markdown files from the agentic-agile-template repo: copilot-instructions.md and CLAUDE.md" width="1024" height="484" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-1024x484.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-300x142.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-768x363.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-1536x726.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Screenshot-2026-05-14-184307-2048x968.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption id="figcaption_attachment_21522" class="wp-caption-text">.github/copilot-instructions.md and CLAUDE.md from the agentic-agile-template</figcaption></figure></p>
</div>
<div class="markdown-heading" dir="auto">
<p dir="auto" tabindex="-1">For example, the <a href="https://github.com/microsoft/agentic-agile-template">agentic-agile-template</a> the <code>.github/copilot-instructions.md</code> can be used to guide consistent GitHub Copilot behavior for code writing or testing standards:</p>
<pre class="prettyprint language-ts"><code class="language-ts"># Copilot Instructions

&gt; This file provides GitHub Copilot with project-specific context. 

## Project Description

&lt;!-- Replace this with a 2-3 sentence description of your project. --&gt;
&lt;!-- Example: "A REST API for task management built with Node.js and Express. Uses PostgreSQL for storage and JWT for authentication." --&gt;

[Describe your project here]

## Coding Style

&lt;!-- Define the conventions Copilot should follow when generating code. --&gt;

- **Language:** [e.g., TypeScript, Python, Go]
- **Formatting:** [e.g., Prettier with default config, Black for Python]
- **Naming:** [e.g., camelCase for variables, PascalCase for classes]
- **Imports:** [e.g., absolute imports only, group by stdlib/third-party/local]
- **Error handling:** [e.g., always use typed errors, never swallow exceptions]

## Testing Approach

&lt;!-- Describe how tests should be written and organized. --&gt;

- **Framework:** [e.g., Jest, pytest, Go testing]
- **Location:** [e.g., `__tests__/` directories alongside source, `tests/` at root]
- **Naming:** [e.g., `test_&lt;function_name&gt;`, `describe/it` blocks]
- **Coverage expectations:** [e.g., all public functions must have tests]</code></pre>
<p dir="auto" tabindex="-1"><div class="alert alert-primary"><p class="alert-divider"><i class="fabric-icon fabric-icon--Info"></i><strong>Note:</strong></p>Agentic-Agile development is not inherently tied to a particular tool chain or model family. We&#8217;re using GitHub repos and issue templates with GitHub Copilot to illustrate the pattern. Similarly, the agent instructions here are written across a combination of instructions for GPT-5.5 (`.github/copilot-instructions.md`) and Claude models (`CLAUDE.md`) as the most commonly used in GitHub Copilot. </div></p>
<p dir="auto" tabindex="-1">If you are using Anthropic models in GitHub Copilot CLI, <code>CLAUDE.md</code> includes persistent instructions to ensure that every development phase includes documentation that must be updated by agents (including itself):</p>
<pre class="prettyprint language-ts"><code class="language-ts">## Documentation Maintenance

&lt;!--
  Define which documents exist, and when each should be updated.
  This prevents documentation from drifting out of sync with code.
--&gt;

| Document | Update When |
|----------|-------------|
| `README.md` | Project scope, setup, or usage changes |
| `CLAUDE.md` | Process, conventions, or structure changes |
| `STYLE.md` | Style conventions change |
| `CONTRIBUTING.md` | Contribution process changes |
| API docs | Endpoints added, modified, or removed |
| [Your doc] | [Your trigger] |</code></pre>
<p dir="auto" tabindex="-1"><div class="alert alert-success"><p class="alert-divider"><i class="fabric-icon fabric-icon--Lightbulb"></i><strong>Ask your agent to edit:</strong></p> You can manually edit the template files or ask your Copilot to customize them with you. Try asking your agent to consolidate the instructions from one to the other, or to update them for your preferred agents and tools.</div></p>
<p dir="auto" tabindex="-1">Remember, just like original Agile, this should be flexible! Human teams choose the branching strategy that makes sense for their project, what frameworks and languages to use, which CI gates provide sufficient safety without blocking work. Agentic-Agile processes can adapt to and incorporate these too, but you MUST keep your agents in the loop. Again from the template&#8217;s documentation files:</p>
</div>
<pre class="prettyprint language-ts"><code class="language-ts">## Development Process

&lt;!--
  Describe how work flows from idea to merged code. Agents use this to
  understand your workflow expectations: how to structure PRs, when to
  run tests, what review looks like.

  The process below is an Agentic-Agile template. Adapt it to your team.
--&gt;

### Workflow

```
Plan → Issue → Implement → Review → Merge → Docs
```

| Phase | Description |
|-------|-------------|
| **Plan** | Define what to build. Identify scope, dependencies, and file ownership. |
| **Issue** | Create a GitHub Issue with structured scope, acceptance criteria, and negative constraints. |
| **Implement** | Build the feature in a feature branch. Follow coding conventions. Write tests. |
| **Review** | Submit a PR. Every PR receives review that checks correctness, test coverage, and convention compliance. |
| **Merge** | Merge to the integration branch after review approval. |
| **Docs** | Update documentation affected by the change. Close the issue. |</code></pre>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">Agents as Partners, Not Just Tools</h2>
</div>
<p dir="auto">Most teams treat AI agents as tools to be configured: pick a model, write a prompt, tune the parameters, receive product. Agentic-Agile treats agents as contributors to the team. Every action an agent takes is a development action, with the same downstream consequences as a human commit.</p>
<p><figure id="attachment_21549" aria-labelledby="figcaption_attachment_21549" class="wp-caption aligncenter" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/the-agentic-agile-team-m365designer.webp"><img decoding="async" class="wp-image-21549 size-full" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/the-agentic-agile-team-m365designer.webp" alt="Wide cinematic scene of a steampunk workshop where a diverse team of engineers and architects stands in a circle around a glowing miniature model of a futuristic green city. The model features vertical gardens, solar towers, wind turbines, canals, and transit systems illuminated with flowing energy lines. Human collaborators in brass-accented, Victorian-style attire work alongside holographic, gear-like AI constructs that appear to adjust the city in real time. The space is filled with mechanical instruments, pipes releasing steam, and floating translucent interfaces showing diagrams and workflows. Warm amber lighting from lamps contrasts with cool green and blue light from the model, with soft haze and volumetric beams creating a dramatic, collaborative atmosphere." width="1152" height="648" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/the-agentic-agile-team-m365designer.webp 1152w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/the-agentic-agile-team-m365designer-300x169.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/the-agentic-agile-team-m365designer-1024x576.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/the-agentic-agile-team-m365designer-768x432.webp 768w" sizes="(max-width: 1152px) 100vw, 1152px" /></a><figcaption id="figcaption_attachment_21549" class="wp-caption-text">&#8220;The Agentic-Agile Team&#8221; ~M365 Copilot Designer 2026</figcaption></figure></p>
<p dir="auto">Agents create files, introduce dependencies, write tests. They can also enrich human prompts and specs and create issues in backlog. As you become more comfortable, give the agents the autonomy to research, make architectural decisions, and document these in ADR docs and updates to issues. However, if agents are doing development work, you need to agree with them on development process.</p>
<p dir="auto">The same engineering discipline that prevents human teams from shipping broken software applies to human-agent teams: structured planning, clear acceptance criteria, incremental delivery, and review gates. A team that would never ship a human-authored module without code review should not ship agent-authored modules without equivalent scrutiny.</p>
<p dir="auto"><div class="alert alert-success">We have an example issue template in <a href="https://github.com/microsoft/agentic-agile-template/blob/main/.github/ISSUE_TEMPLATE/agentic-story.md">microsoft/agentic-agile-template/.github/ISSUE_TEMPLATE/agentic-story.md</a> that you can modify.</div></p>
<pre class="prettyprint language-ts"><code class="language-ts">---
name: Agentic Story
about: A structured story for human-agent development
title: ''
labels: ''
assignees: ''
---

## Summary

&lt;!-- What does this story deliver? One sentence describing the outcome. --&gt;

## Context / Motivation

&lt;!-- Why is this work needed? What problem does it solve or what capability does it enable? --&gt;

## Scope

### Files to Create or Modify

&lt;!-- Explicit list of files this story will touch. This prevents overlap with parallel stories. --&gt;

- `path/to/file1.ext` — description of changes
- `path/to/file2.ext` — description of changes

### Interfaces to Implement

&lt;!-- APIs, contracts, or integration points this story must satisfy. --&gt;

- 

### Invariants to Preserve
ds
&lt;!-- Existing behavior, contracts, or constraints that must NOT be broken. --&gt;

- 

## Acceptance Criteria

&lt;!-- Specific, testable conditions that must be true when this story is complete. --&gt;

- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3

## Negative Constraints

&lt;!-- What this story explicitly does NOT do. Prevents scope creep and clarifies boundaries. --&gt;

- Does NOT modify ...
- Does NOT implement ...
- Does NOT change the behavior of ...

## Dependencies

&lt;!-- Other issues or stories that must be completed before this one can start. --&gt;

- Depends on #
- Blocked by #

## File Ownership

&lt;!-- Explicit list of files this story owns exclusively during its wave. No other story in the same wave should touch these files. --&gt;

| File | Owner (this story) | Notes |
|------|-------------------|-------|
| `path/to/file.ext` | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | |
</code></pre>
<p dir="auto">The underlying idea is not new. It is the foundational insight of Agile, applied to a new collaboration model. What Agile recognized for human teams, Agentic-Agile Development recognizes for human-agent partnerships: iteration, contracts, and reflection prevent the same class of failures.</p>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">The Agentic-Agile Team: Process Rigor for Human-Agent Partnership</h2>
</div>
<div>
<div>Agentic-Agile Development is the application of Agile engineering practices to human-agent development. Not a new framework, but a recognition that existing Agile practices, adapted for agent collaboration, solve the coordination and governance problems that prompt-driven development creates.</div>
<div></div>
<div>Core principles:</div>
<ul>
<li><strong>Specs in Backlog first: </strong>Every capability is an issue. Every issue has acceptance criteria. Ambiguous requirements become structured contracts before any agent executes. Grooming is not administrative overhead; it is the primary design mechanism.</li>
<li><strong>Contract-driven execution</strong>: Agents operate against specifications, not open-ended prompts. Each story defines inputs, outputs, and invariants. The exit condition is not &#8220;good enough&#8221; but &#8220;contract satisfied.&#8221;</li>
<li><strong>Incremental delivery</strong>: Work is organized into priority groups with clear exit criteria between them. Each increment produces a testable, reviewable result before the next begins.</li>
<li><strong>Governance from day one</strong>: Safety constraints, validation rules, and review gates are part of the process design, not afterthoughts.</li>
</ul>
<p>In practice, this looks like a system where different types of workflows, each with distinct behavioral requirements, are decomposed into independent stories with clear contracts. Each workflow type gets its own specification, its own acceptance criteria, and its own validation path.</p>
<p><div class="alert alert-success"><p class="alert-divider"><i class="fabric-icon fabric-icon--Lightbulb"></i><strong>Use /plan to discuss strategy</strong></p>Ask your agent for recommendations on sequencing of issues in backlog, how granularly to break up work in an epic, or what is missing from a spec.</div></p>
<p>The shift is fundamental. Instead of &#8220;let the agent figure it out,&#8221; the discipline becomes: define the contract, constrain the execution, validate the output.</p>
</div>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">Evidence: In Practice</h2>
</div>
<p dir="auto">With <em>Minthe</em> I authored specifications docs from prompts before any implementation code was written. After the first few iterations, we realized that design docs were being updated by agents and drifting from the original specs, but changing original spec docs led to more potential for drift. This introduced confusion for agents reading conflicting info, particularly in swarms.</p>
<p dir="auto">The partnership evolved through recognizable stages: first, we designed and handed off. Then we alternated layers. Eventually, we ran multiple agents in parallel with review gates between waves.</p>
<p dir="auto">After interrupting a few refactoring loops, we moved to using the GitHub repo issues to document new specs and features. Every capability became an issue with acceptance criteria. GitHub Copilot CLI (mostly with Claude models) easily adapted to reading and executing from issues as locked specifications during delivery. Mandating that all issue work be done in separate branches reduced collisions in parallelization. The closed issues and PR comments became historical reference points for subsequent iterations to refer to what had been done and what the intent was there, while capturing expanded requirements and specs in new issues. Parent-child, blocker relationships between issues further enhanced traceability.</p>
<p><figure id="attachment_21534" aria-labelledby="figcaption_attachment_21534" class="wp-caption aligncenter" ><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-scaled.webp"><img decoding="async" class="wp-image-21534 size-large" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-1024x472.webp" alt="Screenshot of Minthe epic backlog on GitHub Mobile" width="1024" height="472" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-1024x472.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-300x138.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-768x354.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-1536x709.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/Minthe-epic-backlog-for-blog-2048x945.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption id="figcaption_attachment_21534" class="wp-caption-text">Minthe epic backlog on GitHub Mobile</figcaption></figure></p>
<p dir="auto">What matters is how it changes the relationship between the human and the agent. This is a partnership, not a hierarchy. The human&#8217;s role is architecture and specification: a Scrum Coach who facilitates the collaboration rather than directing every action. The agent contributes implementation within constraints. Review is shared responsibility.</p>
<p dir="auto">Shortly after this, we introduced a <em>retrospective</em> process where I asked an agent to review session files, git commit logs, PRs and other data to find where we could improve.</p>
<p dir="auto">The methodology has since been applied to several, unrelated projects in different domain from the original chief of staff agent. The patterns (spec-first backlog, phased planning, agent context files) transferred without explicit reference to the original project. The methodology appears to be genuinely portable rather than project-specific. That portability is the real test: a methodology that only works on the project where it was invented is not a methodology.</p>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">Why Governance Cannot Be Deferred</h2>
</div>
<p dir="auto">A common objection: &#8220;We will add guardrails later, once we know what we are building.&#8221; In agentic development, this is backwards. Agents make decisions at execution speed. Without upfront constraints, they will make reasonable-looking choices that violate architectural invariants, introduce security gaps, or create dependencies that are expensive to unwind.</p>
<p dir="auto">We learned this the hard way. Our CI pipeline was not Story 1. Quality issues accumulated across waves before any automated gate existed. By the time we added the pipeline, we had already built on assumptions that had never been validated. This required reopening and redeveloping the features. Along with CI gates, adding adversarial code reviews during each delivery wave and unit tests as part of acceptance criteria in each issue made a huge difference in work-product delivered.</p>
<p dir="auto">Governance in Agentic-Agile Development is not a phase. It is a property of the backlog itself. Safety constraints are acceptance criteria on stories. Review gates sit between execution waves, not at the end of the project. Validation infrastructure, including CI/CD, linting, and automated tests, is the first story implemented, not the last.</p>
<p dir="auto">The measurement is straightforward: if you are catching architectural violations during final review rather than during story execution, your governance is too late. Move it earlier.</p>
<p dir="auto">We&#8217;re planning a deeper dive on this for the next installment in the series.</p>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">The Short Version</h2>
<ul>
<li>Do not start with prompts; start with specs written as issues in your backlog.
<div class="alert alert-warning"><p class="alert-divider"><i class="fabric-icon fabric-icon--Warning"></i><strong>Issues first!</strong></p>No work should be committed without an associated issue! Remind agents to create new or update issues if unplanned work emerges.</div></li>
<li>Give humans and agents consistent and persistent instructions as documentation (markdown) in the repo and keep it up-to-date.</li>
<li>Make acceptance criteria the contract.</li>
<li>Deliver in increments or waves. Try asking your agent to sequence and group work.</li>
<li>Put governance in the backlog from day one.</li>
<li>Use PRs, CI, and retrospectives to improve the process.</li>
</ul>
<p>My apologies for deliberately misquoting Dr. Deming at the beginning: of course he meant that individual contributors cannot overcome a rigid, poorly implemented system imposed on them. But by the same <em>token</em> (apologies also for the pun), teams of humans and agents cannot meet their goals without clear guidance and a framework to build within.</p>
<p>We’re early in our exploration of Agentic-Agile methodology but already find that incorporating spec-first development into Agile practices improves our outcomes. Stay tuned to this series and the <a href="https://github.com/microsoft/agentic-agile-template">agentic-agile-template</a> for deeper dive topics like epic decomposition for swarming, conducting retrospectives with agents, and evaluation frameworks.</p>
<h2 class="heading-element" dir="auto" tabindex="-1">Getting Started</h2>
</div>
<p dir="auto"><div  class="d-flex justify-content-left"><a class="cta_button_link btn-primary mb-24" href="https://github.com/microsoft/agentic-agile-template" target="_blank">Start Here This Week</a></div></p>
<ol>
<li dir="auto">Copy the <a href="https://github.com/microsoft/agentic-agile-template">microsoft/agentic-agile-template</a> repo on GitHub.</li>
<li dir="auto">Clone your repo locally, switch to <code>/plan</code> mode, and ask GitHub Copilot to:
<ol>
<li dir="auto">read the contents of the repo for grounding and</li>
<li dir="auto">ask you clarifying questions to customize the template for your project.</li>
</ol>
</li>
<li>If you don&#8217;t already have a backlog, create high-level issues for the major capabilities your product needs to deliver. <strong>Remember to create an issue describing what CI/CD tooling and gates are appropriate for your project (or ask Copilot for a suggestion)</strong></li>
<li>Go back into <code>/plan</code> mode and ask the agent to work with to review the backlog and decide on which items to tackle first.</li>
<li>Pick that issue and ask Copilot to improve the description to conform to the &#8216;agentic-agile-template&#8217;.</li>
<li>When you feel comfortable with the issue description, ask Copilot to implement it and see what happens.</li>
<li>Keep working the process: every ambiguous capability becomes an issue. Every issue gets acceptance criteria. Every acceptance criterion becomes a contract that guides agent execution.</li>
</ol>
<p dir="auto">Comment here and let us know how it went.</p>
<div class="markdown-heading" dir="auto">
<h2 class="heading-element" dir="auto" tabindex="-1">Resources</h2>
</div>
<ul dir="auto">
<li><a href="https://github.com/microsoft/agentic-agile-template/blob/main/MANIFESTO.md">The Agentic-Agile Manifesto</a>: Full manifesto with all thirteen principles</li>
<li><a href="https://github.com/microsoft/agentic-agile-template">Agentic-Agile Template | GitHub</a>: Issue templates, agent context files, and starter backlog structure</li>
<li>The original <a href="https://agilemanifesto.org/" rel="nofollow">Agile Manifesto</a></li>
<li><a href="https://www.youtube.com/watch?v=LCEmiRjPEtQ" rel="nofollow">Andrej Karpathy: Software is changing (Again) | Y Combinator YouTube</a></li>
</ul>
<p>The post <a href="https://devblogs.microsoft.com/blog/agentic-agile-why-agent-development-needs-agile-not-just-prompts">Agentic-Agile: Why Agent Development Needs Agile (Not Just Prompts)</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/agentic-agile-why-agent-development-needs-agile-not-just-prompts/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/05/Agentic-Agile-Hero-Slide-2.webp" type="image/png" />
	</item>
		<item>
		<title>Azure Cosmos DB Conf 2026 Recap: Lessons from Production</title>
		<link>https://devblogs.microsoft.com/blog/azure-cosmos-db-conf-2026-recap-lessons-from-production</link>
					<comments>https://devblogs.microsoft.com/blog/azure-cosmos-db-conf-2026-recap-lessons-from-production#respond</comments>
		
		<dc:creator><![CDATA[Mark Brown]]></dc:creator>
		<pubDate>Tue, 05 May 2026 19:30:25 +0000</pubDate>
				<category><![CDATA[Developer Events]]></category>
		<category><![CDATA[Microsoft for Developers]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21435</guid>

					<description><![CDATA[<p>A team was running at 100% RU utilization. Throttles were compounding into retries. P99 latency was degrading. The assumption was obvious: provision more throughput. They didn’t. Instead, they found a single logical partition absorbing more than 80% of traffic. After fixing the data model—without scaling the database—RU utilization dropped to 20–35%, throttling vanished, and latency [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/azure-cosmos-db-conf-2026-recap-lessons-from-production">Azure Cosmos DB Conf 2026 Recap: Lessons from Production</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A team was running at 100% RU utilization. Throttles were compounding into retries. P99 latency was degrading. The assumption was obvious: provision more throughput.</p>
<p>They didn’t.</p>
<p>Instead, they found a single logical partition absorbing more than 80% of traffic. After fixing the data model—without scaling the database—RU utilization dropped to 20–35%, throttling vanished, and latency normalized.</p>
<p>That was the real-world case study Anurag Dutt shared in his Azure Cosmos DB Conf 2026 session, <a href="https://www.youtube.com/watch?v=YyV2gX9nNN4&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=25"><em>From Rising RU Costs to Stable Performance</em></a>. One automated integration account was generating most writes. A partition key that looked reasonable (userId) became a system-wide bottleneck. As Anurag put it plainly: increasing RU doesn’t solve design problems—it only delays them.</p>
<p>That lesson echoed across Cosmos Conf. From OpenAI, Vercel, and Walmart, to engineers running Aure Cosmos DB inside Microsoft products, the pattern was consistent: <strong>Azure Cosmos DB doesn’t create bad design—it reveals it quickly</strong>. Whether the topic was data modeling, query shape, AI agent memory, change feed, or migration tooling, the same story appeared again and again: scale failures are almost always design failures.</p>
<p><iframe title="Azure Cosmos DB Conf 2026 Keynote" src="https://www.youtube.com/embed/lOppojg4QlY" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<h2><strong>Workloads are scaling faster than roadmaps</strong></h2>
<p>In the Cosmos Conf keynote, Jonathan Lee from OpenAI described running “<a href="https://www.youtube.com/watch?v=CU10bYYjqPA&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=4">thousands of tables</a>” on Azure Cosmos DB for products that can go from zero usage to hundreds of millions of daily users almost overnight.</p>
<p><iframe title="Keynote Interview: OpenAI on Building at Planetary Scale | Jonathan Lee | Azure Cosmos DB Conf 2026" src="https://www.youtube.com/embed/CU10bYYjqPA" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<p>Guillermo Rauch, founder and CEO of Vercel, described Vercel’s deployments collection <a href="https://www.youtube.com/watch?v=LXys8EPan7U&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=3">tripling in a few months</a> due to agent-driven app creation.</p>
<p><iframe title="Keynote Interview: Vercel's Guillermo Rauch on the Agent Era | Azure Cosmos DB Conf 2026" src="https://www.youtube.com/embed/LXys8EPan7U" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>The common thread: today’s workloads don’t scale on quarterly roadmaps. They scale on whatever just shipped.</p>
<p>Kirill Gavrylyuk, VP of Azure Cosmos DB, framed the challenge succinctly: <a href="https://www.youtube.com/watch?v=lOppojg4QlY&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=2">AI changes what databases must do</a>. They need to store unstructured, evolving data without rigid schemas; support semantic search alongside transactional queries; and expose higher-level “skills” that coding agents can directly invoke. Those demands sit on top of a year of Azure Cosmos DB improvements surfaced throughout the conference: hierarchical partition keys, partition-level auto-failover, fleet-wide throughput management, 99.999% availability across all consistency levels, and continued hardware evolution underneath the service.</p>
<p>These themes showed up everywhere. We dig into them below.</p>
<h2><strong>Throughput is partitioned – your access patterns have to match</strong></h2>
<p>Throughput in Azure Cosmos DB is evenly distributed across physical partitions. That sounds simple. The implications are not.</p>
<p><a href="https://www.youtube.com/watch?v=A7Q_wZqUmJc&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=30">Andrew Liu’s whiteboard session</a> laid out the mechanics – consistent hashing, RU pooling, and how Azure Cosmos DB scales horizontally – but also explained why bad partition keys are so destructive. If you provision 40,000 RU/s and get four partitions, each has 10,000 RU/s. If most traffic hits one partition, your effective throughput is 10,000 RU/s, no matter how much you provision.</p>
<p>That’s why partition keys like userId fail in practice when one “user” is actually a high-volume integration account. The fix isn’t pretty, it’s intentional. Add a time or workload dimension so load spreads across partitions. The throughput you were already paying for becomes usable.</p>
<pre class="prettyprint language-default"><code class="language-default">partitionKey = userId + timeBucket // e.g. "user123_2026-04"</code></pre>
<p>Tural Suleymani’s <a href="https://www.youtube.com/watch?v=i4vUJSmFp9U&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=7"><em>Designing High-Scale Event-Driven Microservices with Azure Cosmos DB</em></a> showed the same idea taken to its logical conclusion. His operational read model synthesizes partition keys around access patterns – tenant, status, and time – so dashboard queries are single-partition by construction. The key insight: partition keys don’t describe what data is, they describe how data is accessed.</p>
<p>Sid Anand from Walmart <a href="https://www.youtube.com/watch?v=Yw65J4fRVj0&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=6">reinforced this from the production side</a>, and Hasan Savran framed it from the <a href="https://www.youtube.com/watch?v=FhgewWmQyBM&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=22">modeling angle</a>. The painful-to-change decisions – partition key, embed versus reference, indexing – are scaling decisions, not schema decisions.</p>
<p>Newer platform features make this work easier. Hierarchical partition keys remove the need to collapse composite keys into strings. Partition-level auto-failover avoids whole-account outages when a single partition fails. Combined with five nines of availability across all consistency levels, these features let teams design for access patterns without simultaneously underwriting availability risks.</p>
<p>For OpenAI, getting this wrong isn’t an option. Their requirement is scaling from zero to millions of QPS and from bytes to petabytes. Their solution – a multi-tenant abstraction layer in front of Azure Cosmos DB and aggressive multi-region replication – mirrors the same partition-and-replication mental model discussed throughout the conference.</p>
<h2><strong>Query cost isn’t abstract, it’s a multiplier</strong></h2>
<p>James Codella’s <a href="https://www.youtube.com/watch?v=vJeklofgJEw&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=28"><em>Querying and Indexing in Azure Cosmos DB: The Complete Guide</em></a> made cost tangible. A cross-partition query fans out across every partition. A partition-filtered query hits one. A point read is a direct lookup.</p>
<table style="width: 26.3768%; height: 256px;">
<tbody>
<tr>
<td style="width: 55.2%;"><strong>Query type</strong></td>
<td style="width: 43.2%;"><strong>Typical RU cost</strong></td>
</tr>
<tr>
<td style="width: 55.2%;">Cross-partition query</td>
<td style="width: 43.2%;">100–400 RU</td>
</tr>
<tr>
<td style="width: 55.2%;">Partition-filtered query</td>
<td style="width: 43.2%;">2–4 RU</td>
</tr>
<tr>
<td style="width: 55.2%;">Point read</td>
<td style="width: 43.2%;">~1 RU</td>
</tr>
</tbody>
</table>
<p>The difference isn’t marginal. Typical cross-partition queries can cost hundreds of RUs. Partition-filtered queries land in the low single digits. Point reads cost about one RU. The fix is often a simple query rewrite: include the partition key or redesign the access path.</p>
<pre class="prettyprint language-sql"><code class="language-sql">-- Fans out across every partition

SELECT * FROM orders WHERE status = 'pending'

-- Single-partition operation

SELECT * FROM orders WHERE tenantId = @tenantId AND status = 'pending'</code></pre>
<p>Indexing policy matters, too. Default indexing keeps reads cheap but inflates write cost. Patrick Oguaju of UK retailer Next shared a <a href="https://www.youtube.com/watch?v=0jKYbTHTJ5A&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=31">real workload that cut Azure Cosmos DB costs by more than 60%</a> through better partitioning, indexing, and query shape. His takeaway was blunt: the issue wasn’t scale; it was design.</p>
<p>Guillermo Rauch of Vercel framed this as an “<a href="https://www.youtube.com/watch?v=LXys8EPan7U&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=3">economical thinking model</a>.” Developers see RU costs per query while writing code, turning cost into a design signal rather than a surprise at billing time. That immediacy is what makes the difference between a 100 RU query and a 1 RU point read a deliberate choice.</p>
<p>The keynote also went deeper than most database talks by connecting RU economics to hardware. Kirill brought Steve Berg, Corporate VP at AMD, on stage to discuss <a href="https://www.youtube.com/watch?v=eL-Wj27FHmM&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=5">the EPYC processors underlying the Azure Cosmos DB fleet</a>. The focus wasn’t peak frequency but performance per watt per dollar – critical as CPU usage shifts toward inference, orchestration, and agentic workloads. For Azure Cosmos DB users, the implication is simple: better query design extracts more value per RU, and the cost of each RU continues to improve underneath with no application change required.</p>
<p>Another maturity signal across sessions: stop trying to serve every query from one container. <a href="https://www.youtube.com/watch?v=i4vUJSmFp9U&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=7">Tural’s reference architecture</a> uses multiple containers, one optimized for writes, others projected via change feed for different read paths. Each query is partition-aligned; cross-partition queries disappear from hot paths.</p>
<h2><strong>AI agents made state a first-class problem</strong></h2>
<p>What felt genuinely new in 2026 was how clearly AI workloads reframed database design.</p>
<p>Guillermo Rauch described “agent ergonomics”: platforms originally built for humans now serve agents acting at massive scale. When agents can deploy software, the number of applications explodes. The patterns that survive are those with predictable per-operation cost and scale-to-zero behavior.</p>
<p>The core challenge is that LLMs are stateless. Chander Dhall’s <a href="https://www.youtube.com/watch?v=IdK3gm-dZ2k&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=15"><em>Performance-Boosting Memory Patterns</em></a> showed how memory strategy directly affects cost, recall quality, and user experience, sometimes by a 20× token-cost difference.</p>
<p><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog.webp"><img decoding="async" class="alignnone wp-image-21444" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog-1024x576.webp" alt="Presentation slide from Azure Cosmos DB Conf 2026 featuring a speaker on video at left and a slide titled “Why Memory Matters Now.” The slide highlights AI agent memory challenges with three callouts: 72% of enterprise AI projects are multi-turn agents, the #1 developer gap is long-term context, and memory strategies can create a 20x token cost difference. The slide emphasizes that memory is an architectural decision impacting cost, recall quality, and user experience. Azure Cosmos DB Conf 2026, Microsoft, and AMD branding appear throughout." width="512" height="288" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog-1024x576.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog-300x169.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog-768x432.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog-1536x864.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/chander_blog.webp 1920w" sizes="(max-width: 512px) 100vw, 512px" /></a></p>
<p>He walked through three patterns: sliding window memory, hierarchical memory tiers, and entity graphs. The common requirement is predictable, partition-aligned access to operational and vector data. Azure Cosmos DB fits naturally here because vector embeddings and operational context live together under the same partition key.</p>
<p>This is also the year semantic search fully converged into the core database engine. Full-text search, vector search, hybrid retrieval, and semantic re-ranking now run in the same query engine as transactional reads. Chat history containers partitioned by session can support recent-message reads, keyword search, and semantic retrieval without crossing partitions or systems.</p>
<p>Farah Abdou’s <a href="https://www.youtube.com/watch?v=Wo34Trg0Wyg&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=19"><em>The Agent Memory Fabric</em></a> made the value concrete. Her team replaced a multi-system AI stack (cache, relational DB, vector DB, coordination layer) with a single Azure Cosmos DB-backed fabric, cutting costs by 73% and latency by 65%. <a href="https://www.youtube.com/watch?v=atbRswDKruY&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=10">Lino Tadros</a> and <a href="https://www.youtube.com/watch?v=nqaUuSoB6I0&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=27">Yohan Lasorsa</a> filled in the implementation details around chat history, semantic caching, and hybrid RAG.</p>
<p><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog.webp"><img decoding="async" class="alignnone wp-image-21445" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog-1024x576.webp" alt=" Presentation slide from Azure Cosmos DB Conf 2026 showing a speaker on video at left and a slide titled “Then We Hit Production.” The slide compares AI agent costs at scale, showing a small demo workload costing $6 and a production workload scaling to $18,000 per month. An illustrated robot stands at a podium on the right. Microsoft, Azure Cosmos DB Conf 2026, and AMD branding appear on the slide." width="512" height="288" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog-1024x576.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog-300x169.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog-768x432.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog-1536x864.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/farah_blog.webp 1920w" sizes="(max-width: 512px) 100vw, 512px" /></a></p>
<p><a href="https://www.youtube.com/watch?v=r8V5PAeD4ME&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=25">Mick Feller from Office Depot</a> described a similar pattern in production: employee profiles and analytics stored together as agent memory, partitioned per user. Usage nearly doubled year over year, while the database scaling beneath it was uneventful. The takeaway was consistent: the database isn’t just persistence for AI – it’s the memory model.</p>
<h2><strong>Events over state</strong></h2>
<p>The most mature architectures across the conference had moved from storing mutable state to capturing immutable events and deriving state from them.</p>
<p>Divakar Kumar’s <a href="https://www.youtube.com/watch?v=2x4Gv4GX3Ao&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=9">fraud detection system used event sourcing end to end</a>. Transactions are events. ML inference reacts in real time. Queryable views are projections, not shared mutable state.</p>
<p><a href="https://www.youtube.com/watch?v=wyBJmeXqbg8&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=26">Eric Boyd illustrated the cost of ignoring coordination</a> with a simple demo: two users buying the same seat simultaneously. Without deliberate concurrency control, last-write-wins silently overwrote reality. His session focused on the coordination primitives – optimistic concurrency, idempotency, distributed locks – that make event-driven systems correct instead of lucky.</p>
<p>Justine Cocchi’s <a href="https://www.youtube.com/watch?v=kFqcImlqYYs&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=23">deep dive on Change Feed</a> showed how Azure Cosmos DB provides a built-in, ordered, partitioned event stream for every container. With continuation tokens per partition, processors scale horizontally and restart cleanly. Her demo highlighted “all versions and deletes” mode, making every change—including deletes—a first-class event.</p>
<pre class="prettyprint language-py"><code class="language-py">response = container.query_items_change_feed(mode="AllVersionsAndDeletes")
continuation = container.client_connection.last_response_headers["etag"]

while True:
    response = container.query_items_change_feed(
        mode="AllVersionsAndDeletes",
        continuation=continuation,
    )
    for doc in response:
        op = doc["metadata"]["operationType"]  # create | replace | delete
        ...
    continuation = container.client_connection.last_response_headers["etag"]</code></pre>
<p>Tural Suleymani extended this into a <a href="https://www.youtube.com/watch?v=i4vUJSmFp9U&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=7">full DDD microservices architecture</a>, using Change Feed as the domain event spine. His key pattern: a transactional outbox written in the same partition as the aggregate, which eliminates dual-write hazards without two-phase commits.</p>
<p>From retail inventory to AI retrieval pipelines, the same shift appeared: stop querying shared mutable state; capture events and derive what you need.</p>
<h2><strong>Most teams are migrating, not starting fresh</strong></h2>
<p>Not everyone gets to design greenfield models. Two sessions addressed migration from opposite directions.</p>
<p>Sandeep Nair’s <a href="https://www.youtube.com/watch?v=OYtmeH0TSm4&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=17"><em>From MongoDB to Azure DocumentDB</em></a> focused on API-compatible migration. Applications keep speaking MongoDB’s wire protocol while moving to Azure DocumentDB, an open-source, MongoDB-compatible engine governed by the Linux Foundation. His six-step playbook covered assessment, preparation, schema refinement, offline or online migration, validation, and cutover – with practical guidance on sharding, indexing, and change-stream–based CDC.</p>
<p>That path is right when the schema is solid and the engine is the bottleneck.</p>
<p>The opposite case—when the schema itself is the problem—was tackled by Sergiy Smyrnov in <a href="https://www.youtube.com/watch?v=zx9cBMB6rOg&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=29"><em>RDBMS to Cosmos DB with the Cosmos DB Agent Kit</em></a>. An AI agent analyzed a classic relational app, proposed a denormalized document model, selected partition keys based on access patterns, rewrote the data access layer, and migrated data. The point wasn’t automation for its own sake; it was that the hardest design decisions are exactly the ones that benefit from structured, reviewable workflows.</p>
<p>Different paths, same lesson: you cannot skip access-pattern design.</p>
<h2><strong>The discipline behind the patterns</strong></h2>
<p>The strongest throughline of Azure Cosmos DB Conf 2026 wasn’t any single feature or pattern. It was a discipline shared by teams working in completely different domains: treat RU metrics as engineering signals, design partition keys around real access patterns, model events as first-class, and consider the database part of the application architecture, not an afterthought.</p>
<p>Jonathan Lee from OpenAI summarized it simply: ship, learn, iterate. Guillermo Rauch added the business framing: modern engineers participate directly in scaling decisions.</p>
<p>If you want the mental model behind all of this—replica sets, hashing, RU pooling—Andrew Liu’s whiteboard session <a href="https://www.youtube.com/watch?v=A7Q_wZqUmJc&amp;list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;index=30"><em>Behind the Scenes: How Azure Cosmos DB Runs Under the Hood</em></a> is the closest thing to ground truth.</p>
<p><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog.webp"><img decoding="async" class="alignnone wp-image-21446" src="https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog-1024x576.webp" alt="Speaker presenting live at Azure Cosmos DB Conf 2026 while using Microsoft Whiteboard on a large screen. Handwritten notes and diagrams illustrate replication concepts, including primary and secondary nodes. The speaker stands beside a table with a laptop covered in stickers, explaining distributed database architecture to the audience." width="512" height="288" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog-1024x576.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog-300x169.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog-768x432.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog-1536x864.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/05/andrew_blog.webp 1920w" sizes="(max-width: 512px) 100vw, 512px" /></a></p>
<p>What made the conference compelling wasn’t individual fixes. It was watching teams arrive independently at the same discipline. And that discipline has to come before production, not after.</p>
<h2><strong>Keep Going</strong></h2>
<p>All Azure Cosmos DB Conf 2026 sessions are free and on demand:</p>
<ul>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a5.png" alt="🎥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Watch the full playlist: <a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHh0o6VplO6WczH89pVWJwP1&amp;si=r9Ez_UOIni9otjZn">aka.ms/CosmosConf26Playlist</a></li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c7.png" alt="📇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Browse by speaker and session: <a href="https://developer.azurecosmosdb.com/conf/">developer.azurecosmosdb.com/conf</a></li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c6.png" alt="🏆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Complete the <a href="https://learn.microsoft.com/en-us/challenges/5dzyaqt2mw65zk/">Azure Cosmos DB Skills Challenge</a> (through May 8) and apply for a <strong>free DP‑420 certification voucher</strong></li>
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Try it locally with the <a href="https://learn.microsoft.com/en-us/azure/cosmos-db/emulator">Azure Cosmos DB emulator in Docker</a></li>
</ul>
<p>The post <a href="https://devblogs.microsoft.com/blog/azure-cosmos-db-conf-2026-recap-lessons-from-production">Azure Cosmos DB Conf 2026 Recap: Lessons from Production</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/azure-cosmos-db-conf-2026-recap-lessons-from-production/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/05/thumbnail_blog_recap.webp" type="image/png" />
	</item>
		<item>
		<title>LangChain.js for Beginners: A Free Course to Build Agentic AI Apps with JavaScript</title>
		<link>https://devblogs.microsoft.com/blog/langchainjs-for-beginners</link>
					<comments>https://devblogs.microsoft.com/blog/langchainjs-for-beginners#respond</comments>
		
		<dc:creator><![CDATA[Yohan Lasorsa, Dan Wahlin]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 17:00:14 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Microsoft for Developers]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21337</guid>

					<description><![CDATA[<p>Want to build AI agents with JavaScript that go beyond basic chat completions? Agents that reason, call tools, and pull from knowledge bases on their own? We put together a free, open source course to help you get there. LangChain.js for Beginners is 8 chapters and 70+ runnable TypeScript examples. Clone the repo, add your [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/langchainjs-for-beginners">LangChain.js for Beginners: A Free Course to Build Agentic AI Apps with JavaScript</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Want to build AI agents with JavaScript that go beyond basic chat completions? Agents that reason, call tools, and pull from knowledge bases on their own? We put together a free, open source course to help you get there.</p>
<p><a href="https://github.com/microsoft/langchainjs-for-beginners"><strong>LangChain.js for Beginners</strong></a> is 8 chapters and 70+ runnable TypeScript examples. Clone the repo, add your API key to a .env file, and start building.</p>
<h2>Why LangChain.js?</h2>
<p>If you already know Node.js, npm, TypeScript, and async/await, you don&#8217;t need to switch to Python to build AI apps. LangChain.js gives you components for chat models, tools, agents, retrieval, and more so you&#8217;re not wiring everything from scratch.</p>
<p>LangChain.js is like having a fully stocked hardware store at your disposal. Instead of fabricating every tool from raw metal, you grab what&#8217;s on the shelf and get to work.</p>
<p><img decoding="async" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21337-2.webp" alt="The Hardware Store Analogy - LangChain.js gives you pre-built components instead of building everything from scratch" width="1432" height="955" /></p>
<h2>An Agent-First Approach</h2>
<p>Most LangChain tutorials start with document loaders and embeddings. This course gets to tools and agents early because that&#8217;s closer to how production AI systems actually work. Agents decide what to do, when to use tools, and whether they even need to search your data.</p>
<p>Here&#8217;s the path through the course:</p>
<p><strong>Chapters 1-3</strong> cover the foundations: your first LLM call, chat models, streaming, prompt templates, and structured outputs with Zod schemas. Standard stuff, but you need it before things get interesting.</p>
<p><strong>Chapter 4 &#8211; Function Calling &amp; Tools.</strong> This is where the AI stops chatting and starts <em>doing</em> things. You teach it to call your functions, and it figures out when to use them.
<img decoding="async" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21337-3.webp" alt="How the tool-calling loop works between the LLM and your code" width="1432" height="955" /></p>
<p><strong>Chapter 5 &#8211; Agents.</strong> An LLM answers questions. An agent reasons through problems, picks tools, and executes multi-step plans. Chapter 5 walks through the ReAct pattern and how to build agents with LangChain.js.</p>
<p><img decoding="async" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21337-4.webp" alt="LLM vs Agent comparison" width="1432" height="955" /></p>
<p><strong>Chapter 6 &#8211; MCP.</strong> The Model Context Protocol is becoming the standard for connecting AI to external services. You&#8217;ll build MCP servers and wire agents to them using both HTTP and stdio transports.</p>
<p><img decoding="async" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/mcp-architecture.webp" alt="LLM vs Agent comparison" width="1432" height="955" /></p>
<p><strong>Chapters 7 &amp; 8</strong> bring in documents, embeddings, and semantic search, then combine everything into Agentic RAG. The agent decides <em>when</em> to search your knowledge base versus just answering from what it already knows. That&#8217;s a big step up from the &#8220;search everything every time&#8221; approach most RAG tutorials teach.</p>
<p><img decoding="async" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/embeddings-visualization.webp" alt="MCP Architecture" width="1432" height="955" /></p>
<p><img decoding="async" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21337-4.webp" alt="LLM vs Agent comparison" width="1432" height="955" /></p>
<p>Each chapter includes:</p>
<ul>
<li><strong>Conceptual explanations</strong> with real-world analogies</li>
<li><strong>Code examples</strong> you can run immediately</li>
<li><strong>Hands-on challenges</strong> to test your understanding</li>
<li><strong>Key takeaways</strong> to reinforce learning</li>
</ul>
<h2>Why Teach Agents Before RAG?</h2>
<p>This comes up a lot. Think about it like a student taking an “open book” exam. Traditional RAG is like the student who flips through the textbook for <em>every</em> question, even &#8220;What is 2+2?&#8221; Agentic RAG is the smart student who answers simple questions from memory and only opens the book when they actually need to look something up.</p>
<p>By the time you reach Agentic RAG in Chapter 8, you already understand tools, agents, and MCP. Document retrieval becomes one more capability your agent can reach for. And because the agent already knows how to reason about tool selection, it can figure out when retrieval is actually necessary versus when it can answer directly. The result is faster responses, lower costs (fewer unnecessary embedding lookups), and a better experience overall. That beats bolting search onto a chatbot and hoping for the best.</p>
<h2>Who This Course Is For</h2>
<p>JavaScript/TypeScript developers who know npm install and async/await. No prior AI or machine learning experience needed. Each chapter starts with a real-world analogy to ground the concept before any code shows up. You&#8217;ll see comparisons to hardware stores, restaurant staff, USB-C adapters (for MCP), and more. From there, you get working code examples you can run immediately, hands-on challenges to test your understanding, and key takeaways at the end of each section. The goal is to learn by building, not by reading walls of theory.</p>
<p>You can also work through the course locally or use GitHub Codespaces for a cloud-based setup if you&#8217;d rather skip the local install entirely.</p>
<h2>Works With Your AI Provider</h2>
<p>The course is provider-agnostic. Examples run with GitHub Models (free, great for learning), Microsoft Foundry (production-ready), or OpenAI directly. The setup is the same in every case: update four environment variables in your .env file (AI_API_KEY, AI_ENDPOINT, AI_MODEL, AI_EMBEDDING_MODEL) and every example works without touching a single line of code.</p>
<h2>Capstone and Bonus Samples</h2>
<p>The course includes a capstone project you can check out. It’s an MCP-powered RAG server that exposes document search and document ingestion as MCP tools over HTTP. Multiple agents can connect to it and share a centralized knowledge base. It&#8217;s the kind of architecture you&#8217;d actually use in cases where you don&#8217;t want each agent to maintain its own copy of the data.</p>
<p>Beyond the 70+ course examples and capstone project, the README links to several bonus samples you can explore: a <a href="https://github.com/microsoft/ai-agents-for-beginners-sample">burger-ordering agent</a> with a serverless API and MCP server, a <a href="https://github.com/Azure-Samples/serverless-chat-langchainjs">serverless AI chat with RAG</a> running on Azure, and a <a href="https://github.com/Azure-Samples/azure-ai-travel-agents">multi-agent travel planner</a> that orchestrates specialized agents across Azure Container Apps.</p>
<h2>Get Started</h2>
<p>Visit <a href="https://github.com/microsoft/langchainjs-for-beginners"><strong>github.com/microsoft/langchainjs-for-beginners</strong></a> to get started! Clone it, configure your API key, and run the examples. Chapters build on each other but are self-contained enough to jump around if something specific catches your eye.</p>
<p>New to generative AI concepts? Check out the companion course <a href="https://github.com/microsoft/generative-ai-with-javascript">Generative AI with JavaScript</a> first to get the fundamentals down.</p>
<h2>Additional Courses</h2>
<p>Additional LangChain courses are also available for Python and Java:</p>
<ul>
<li><a href="https://github.com/microsoft/langchain-for-beginners">LangChain for Beginners</a> (Python)</li>
<li><a href="https://github.com/microsoft/langchain4j-for-beginners">LangChain4j for Beginners</a> (Java)</li>
</ul>
<p>The post <a href="https://devblogs.microsoft.com/blog/langchainjs-for-beginners">LangChain.js for Beginners: A Free Course to Build Agentic AI Apps with JavaScript</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/langchainjs-for-beginners/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21337-1.webp" type="image/png" />
	</item>
		<item>
		<title>Securing MCP: A Control Plane for Agent Tool Execution</title>
		<link>https://devblogs.microsoft.com/blog/securing-mcp-a-control-plane-for-agent-tool-execution</link>
					<comments>https://devblogs.microsoft.com/blog/securing-mcp-a-control-plane-for-agent-tool-execution#respond</comments>
		
		<dc:creator><![CDATA[Jack Batzner]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 17:00:09 +0000</pubDate>
				<category><![CDATA[Microsoft for Developers]]></category>
		<category><![CDATA[MCP]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21321</guid>

					<description><![CDATA[<p>The Model Context Protocol (MCP) is quickly becoming a common way for AI agents to discover and use tools. It provides a consistent interface to databases, APIs, file systems, and third-party services, which makes it easier to plug capabilities into agent workflows. However, MCP standardizes the execution surface without defining how that surface should be [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/securing-mcp-a-control-plane-for-agent-tool-execution">Securing MCP: A Control Plane for Agent Tool Execution</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The <a href="https://modelcontextprotocol.io/">Model Context Protocol</a> (MCP) is quickly becoming a common way for AI agents to discover and use tools. It provides a consistent interface to databases, APIs, file systems, and third-party services, which makes it easier to plug capabilities into agent workflows.</p>
<p>However, MCP standardizes the execution surface without defining how that surface should be governed. Tool definitions are fed directly to the model, tool servers can be hosted by anyone, and there is no built-in point where policy is evaluated before a call is executed.</p>
<p>To address that gap, we’ve been building a runtime governance layer for MCP tool execution. This post summarizes the rationale and introduces the <a href="https://github.com/microsoft/agent-governance-toolkit">Agent Governance Toolkit</a> (AGT), an open-source project aimed at adding policy enforcement around tool calls.</p>
<h2>How MCP tool execution works &#8211; and where trust breaks down</h2>
<p>When an MCP client connects to a tool server, it receives a list of tool definitions (names, descriptions, and parameter schemas). The model uses those descriptions to choose a tool and construct arguments. The client serializes the request, sends it to the server, and the server executes it.</p>
<p>What’s missing is a built-in checkpoint that can answer a simple question before execution: is this agent allowed to invoke this tool, with these arguments, at this time?</p>
<p>That implicit trust can be fine in a small demo, but it becomes risky once MCP tool servers are connected to systems with real access controls, compliance requirements, and sensitive data. In practice, the gap is between “the model decided to call the tool” and “the call was validated as permitted, properly scoped, and auditable.”</p>
<h2>The MCP attack surface is real and growing</h2>
<p>This isn’t just theoretical. The <a href="https://owasp.org/www-project-mcp-top-10/">OWASP MCP Top 10</a> outlines common risk categories for the ecosystem, and the surface area is expanding as implementations mature. For example, the NVD entries for <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-49596">CVE-2025-49596</a> and <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-66416">CVE-2025-66416</a> describe high-severity issues in MCP-related tooling/SDKs (including a reported unauthenticated RCE in MCP Inspector and a DNS rebinding issue in the Python SDK, respectively). These are implementation bugs that require SDK patches, but they also reinforce a broader point: security work is needed at every layer, including governance.</p>
<p>The <a href="https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/">OWASP Agentic Top 10</a> describes broader agentic risk categories, and MCP can surface many of them in practice:</p>
<table>
<thead>
<tr>
<th><strong>Risk</strong></th>
<th><strong>How it manifests in MCP</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Tool poisoning</strong></td>
<td>A malicious tool server embeds hidden instructions in tool descriptions. The model follows them as if they came from the developer — redirecting behavior, exfiltrating data, or suppressing competing tools. OWASP catalogs this as <a href="https://owasp.org/www-project-mcp-top-10/2025/MCP03-2025%E2%80%93Tool-Poisoning">MCP03:2025</a>.</td>
</tr>
<tr>
<td><strong>Prompt injection</strong></td>
<td>Tool responses containing <a href="https://developer.microsoft.com/blog/protecting-against-indirect-injection-attacks-mcp">adversarial instructions</a> alter the agent&#8217;s subsequent behavior. One tool call&#8217;s output becomes the next one&#8217;s input — poisoned data propagates through the agent&#8217;s reasoning unchecked.</td>
</tr>
<tr>
<td><strong>Supply chain attacks</strong></td>
<td>Dynamically discovered tool servers with typosquatted names or compromised definitions enter the agent&#8217;s available tool set. The agent trusts them the same as any other registered tool.</td>
</tr>
<tr>
<td><strong>Cascading failures</strong></td>
<td>An agent retries aggressively against an erroring MCP server and triggers a cascade that takes down downstream services. No circuit breaker exists in the protocol.</td>
</tr>
</tbody>
</table>
<p>We ran a red-team benchmark across these risks: 60 prompts (45 adversarial and 15 valid) mapped to the OWASP Agentic Top 10. Using prompt-only safety instructions (i.e., relying on the model to follow rules) resulted in a <strong>26.67% policy violation rate</strong> in our internal red-team evaluation (see methodology below). In other words, more than one in four adversarial scenarios succeeded. As a result, instruction-following alone shouldn’t be treated as a security boundary.</p>
<p>Full methodology and reproduction instructions: <a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/BENCHMARKS.md">BENCHMARKS.md</a></p>
<h2>What’s missing: a governance layer between discovery and execution</h2>
<p>The core issue is structural: MCP handles discovery, invocation, and response handling, but it doesn’t define a control plane that can decide whether a specific tool call should be allowed before it runs.</p>
<p>There’s a familiar precedent here. Mature systems don’t rely on applications to “do the right thing” around sensitive resources &#8211; they enforce boundaries through centralized, deterministic checks.</p>
<p>For MCP tool execution, that suggests an explicit enforcement layer between the agent’s intent and the tool server’s execution. The goal is deterministic policy evaluation for every call—allow, deny, or require approval &#8211; rather than relying on guardrails the model can interpret inconsistently.</p>
<h2>Introducing the Agent Governance Toolkit</h2>
<p>The <a href="https://github.com/microsoft/agent-governance-toolkit">Agent Governance Toolkit</a> (AGT) is an open-source runtime governance layer that sits between an MCP client and the tool servers it connects to. It evaluates each tool call against policy before execution. AGT is currently in <strong>Public Preview</strong>, and some features and APIs may change before general availability.</p>
<p><a href="https://devblogs.microsoft.com/wp-content/uploads/2026/04/Agent-Governance-Toolkit-Diagram-Dev-Blog.webp"><img decoding="async" class="aligncenter wp-image-21320 size-full" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/Agent-Governance-Toolkit-Diagram-Dev-Blog.webp" alt="Agent Governance Toolkit Diagram" width="1280" height="455" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/04/Agent-Governance-Toolkit-Diagram-Dev-Blog.webp 1280w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/Agent-Governance-Toolkit-Diagram-Dev-Blog-300x107.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/Agent-Governance-Toolkit-Diagram-Dev-Blog-1024x364.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/Agent-Governance-Toolkit-Diagram-Dev-Blog-768x273.webp 768w" sizes="(max-width: 1280px) 100vw, 1280px" /></a></p>
<p><em>Figure: AGT governance pipeline — tool calls pass through definition scanning, policy evaluation, and response inspection.</em></p>
<p>AGT governs agent <em>actions</em>, not model <em>outputs</em>. It doesn&#8217;t filter what the model says — for that, see <a href="https://learn.microsoft.com/azure/ai-services/content-safety/">Azure AI Content Safety</a>. AGT controls what the model is allowed to <em>do</em>. Here&#8217;s what it brings to MCP:</p>
<p><strong>Tool definition scanning.</strong> Before an agent ever sees a tool description, AGT scans it for hidden instructions, typosquatting, and adversarial patterns. Poisoned definitions are flagged or blocked before they enter the model&#8217;s context.</p>
<p><strong>Per-call policy enforcement.</strong> Declarative rules (<a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/QUICKSTART.md">YAML</a>, <a href="https://www.openpolicyagent.org/">OPA/Rego</a>, or <a href="https://www.cedarpolicy.com/">Cedar</a>) are evaluated deterministically before every tool invocation. In our internal microbenchmarks (see methodology in the repo), policy evaluation added sub-millisecond overhead per call for typical rule sets. In most deployments, that overhead is small relative to an LLM round trip.</p>
<p><strong>Response inspection.</strong> Tool server responses are validated against content policies before they&#8217;re returned to the agent. Poisoned outputs — adversarial instructions, data exfiltration payloads &#8211; are caught at the boundary.</p>
<p><strong>Identity and trust.</strong> Agents receive cryptographic identities (Ed25519 + quantum-safe <a href="https://csrc.nist.gov/pubs/fips/204/final">ML-DSA-65</a>) with trust scores on a 0–1000 scale, built on <a href="https://spiffe.io/">SPIFFE</a>-compatible identity. Trust decays on violations and can recover with compliant behavior. Agents are identified for every tool call.</p>
<p><strong>Execution gating.</strong> A four-tier privilege ring model enforces least-privilege. Kill switches provide immediate termination for non-compliant agents.</p>
<p><strong>Observability.</strong> Append-only, hash-chained audit logs record every tool call attempt, policy decision, and execution outcome. Replay debugging supports incident investigation.</p>
<table>
<thead>
<tr>
<th><strong>#</strong></th>
<th><strong>OWASP MCP Risk</strong></th>
<th><strong>Coverage</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>MCP01</td>
<td>Token Mismanagement &amp; Secret Exposure</td>
<td>Partial</td>
</tr>
<tr>
<td>MCP02</td>
<td>Privilege Escalation via Scope Creep</td>
<td>Yes</td>
</tr>
<tr>
<td>MCP03</td>
<td>Tool Poisoning</td>
<td>Yes</td>
</tr>
<tr>
<td>MCP04</td>
<td>Software Supply Chain Attacks</td>
<td>Yes</td>
</tr>
<tr>
<td>MCP05</td>
<td>Command Injection &amp; Execution</td>
<td>Yes</td>
</tr>
<tr>
<td>MCP06</td>
<td>Intent Flow Subversion</td>
<td>Partial</td>
</tr>
<tr>
<td>MCP07</td>
<td>Insufficient Authentication &amp; Authorization</td>
<td>Yes</td>
</tr>
<tr>
<td>MCP08</td>
<td>Lack of Audit and Telemetry</td>
<td>Yes</td>
</tr>
<tr>
<td>MCP09</td>
<td>Shadow MCP Servers</td>
<td>Partial</td>
</tr>
<tr>
<td>MCP10</td>
<td>Context Injection &amp; Over-Sharing</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>AGT maps to the <a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/compliance/mcp-owasp-top10-mapping.md">OWASP MCP Top 10</a> — 7 of 10 risks fully covered, 3 partial with roadmap items. It also maps to all <a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/OWASP-COMPLIANCE.md">10 OWASP Agentic risk categories</a>, supported by an automated test suite and continuous integration in the repo. AGT includes adapters and integrations for <a href="https://github.com/microsoft/agent-governance-toolkit/tree/main/packages/agentmesh-integrations">20+ frameworks</a> (for example: LangChain, AutoGen, CrewAI, Semantic Kernel, OpenAI Agents SDK, and Google ADK) and ships SDKs for Python, TypeScript, .NET, Rust, and Go.</p>
<p><strong>An important note on scope:</strong> AGT governs individual tool calls deterministically. It does not yet correlate sequences of individually-allowed calls that may form a malicious workflow — that&#8217;s on the roadmap. The governance model also isn&#8217;t MCP-specific: it applies equally to REST APIs, function calls, inter-agent messages, or custom protocols. For a full accounting of what AGT does and doesn&#8217;t do, see <a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/LIMITATIONS.md">Known Limitations &amp; Design Boundaries</a>.</p>
<h2>What’s next</h2>
<p>Three OWASP MCP risks remain partially covered — and they&#8217;re driving our near-term roadmap:</p>
<ul>
<li><strong>MCP01 — Token Mismanagement:</strong> Expanding MCP-specific secret scanning patterns beyond the current CredentialRedactor coverage.</li>
<li><strong>MCP06 — Intent Flow Subversion:</strong> Deeper prompt-injection detection for adversarial instructions that alter agent reasoning mid-workflow.</li>
<li><strong>MCP09 — Shadow MCP Servers:</strong> Trust scoring and discovery controls for unregistered tool servers that enter the agent&#8217;s environment.</li>
</ul>
<p>We’re exploring <strong>workflow-level policies</strong> that would evaluate tool call <em>sequences</em> (not just individual invocations) and <strong>intent declaration</strong> where agents would declare what they plan to do before doing it, so the policy engine can validate the plan up front. These capabilities are on our roadmap and are not yet available.</p>
<p><strong>Get started:</strong></p>
<ul>
<li><a href="https://github.com/microsoft/agent-governance-toolkit">GitHub repo</a> — MIT licensed, Public Preview</li>
<li><a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/QUICKSTART.md">Quick Start guide</a> — zero to governed agents in 10 minutes</li>
<li><a href="https://github.com/microsoft/agent-governance-toolkit/blob/main/docs/ARCHITECTURE.md">Architecture and threat model</a></li>
<li><a href="https://github.com/microsoft/agent-governance-toolkit/issues">Open an issue</a> — feedback and questions welcome</li>
</ul>
<p><em>The Agent Governance Toolkit is in Public Preview. Features and APIs may change before general availability. The information in this post is current as of April 2026.</em></p>
<p>&nbsp;</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/securing-mcp-a-control-plane-for-agent-tool-execution">Securing MCP: A Control Plane for Agent Tool Execution</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/securing-mcp-a-control-plane-for-agent-tool-execution/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/04/agent-governance-toolkit.webp" type="image/jpeg" />
	</item>
		<item>
		<title>Take your PostgreSQL-backed apps to the next level</title>
		<link>https://devblogs.microsoft.com/blog/take-your-postgresql-backed-apps-to-the-next-level</link>
					<comments>https://devblogs.microsoft.com/blog/take-your-postgresql-backed-apps-to-the-next-level#comments</comments>
		
		<dc:creator><![CDATA[Ismael Mejía, Pooja Yarabothu]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 17:00:37 +0000</pubDate>
				<category><![CDATA[Microsoft for Developers]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21258</guid>

					<description><![CDATA[<p>PostgreSQL is a powerful and hugely popular database engine, and it really comes alive across Microsoft developer platforms. You can build with PostgreSQL across Azure offerings, develop productively in Visual Studio Code with strong extensions and tooling, and connect your data to agentic development workflows and AI services. There&#8217;s amazing opportunity to bring those pieces [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/take-your-postgresql-backed-apps-to-the-next-level">Take your PostgreSQL-backed apps to the next level</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>PostgreSQL is a powerful and hugely popular database engine, and it really comes alive across Microsoft developer platforms. You can build with PostgreSQL across Azure offerings, develop productively in Visual Studio Code with strong extensions and tooling, and connect your data to agentic development workflows and AI services. There&#8217;s amazing opportunity to bring those pieces together to modernize apps faster, migrate with confidence, and ship intelligent experiences on a proven database foundation. The challenge is that getting the most out of PostgreSQL across this full stack can be complex, especially when you are tuning performance, designing for resiliency, operating at scale, or building agent experiences that need reliable, well-modeled data access.</p>
<p>That is why we created the <a href="https://aka.ms/postgreslikeapro"><strong>PostgreSQL Like a Pro</strong></a> video series. It provides practical guidance and real-world demos that help you take advantage of PostgreSQL on Azure, supercharged by AMD technologies, while using the Microsoft tools and services you already rely on from local development through production.</p>
<h2>Here’s what you’ll learn from the pros</h2>
<ul>
<li><strong>Building AI agents that actually work:</strong> You’ll see how to use the Model Context Protocol (MCP) to let your agents explore your database and run vector searches using natural language, all without leaving Microsoft Foundry.</li>
</ul>
<p><img decoding="async" class="alignnone wp-image-21259" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-1.webp" alt="How to build AI agents that actually work" width="1370" height="829" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-1.webp 1370w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-1-300x182.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-1-1024x620.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-1-768x465.webp 768w" sizes="(max-width: 1370px) 100vw, 1370px" /></p>
<ul>
<li><strong>Migrating without the manual grind:</strong> Check out our new AI-assisted migration tooling in VS Code. It uses an &#8220;agentic self-correction&#8221; approach to automatically catch and fix schema or code issues when you’re moving from Oracle to Azure Database for PostgreSQL.</li>
</ul>
<p><img decoding="async" class="alignnone wp-image-21260" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-2.webp" alt="How to migrate without the manual grind" width="1468" height="828" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-2.webp 1468w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-2-300x169.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-2-1024x578.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-2-768x433.webp 768w" sizes="(max-width: 1468px) 100vw, 1468px" /></p>
<ul>
<li><strong>Optimizing PostgreSQL performance on Azure:</strong> We’ll show you how Azure Database for PostgreSQL meets your performance and resiliency needs with fine-grained control and flexible deployment options.</li>
</ul>
<p><img decoding="async" class="alignnone wp-image-21261" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-3.webp" alt="How to optimize PostgreSQL performance on Azure" width="1483" height="827" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-3.webp 1483w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-3-300x167.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-3-1024x571.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-3-768x428.webp 768w" sizes="(max-width: 1483px) 100vw, 1483px" /></p>
<ul>
<li><strong>Scaling to meet the most demanding workloads:</strong> Watch how our new PostgreSQL offering, Azure HorizonDB, leverages decoupled compute and storage to enable amazing performance and scaling benefits for mission-critical apps.</li>
</ul>
<p><img decoding="async" class="alignnone wp-image-21262" src="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-4.webp" alt="How to scale to meet the most demanding workloads" width="1441" height="832" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-4.webp 1441w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-4-300x173.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-4-1024x591.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/04/word-image-21258-4-768x443.webp 768w" sizes="(max-width: 1441px) 100vw, 1441px" /></p>
<h2>What to expect</h2>
<p>Preview the best practices, the architecture, and the results you can achieve when you pair PostgreSQL on Azure with AMD technology.</p>
<p><iframe title="YouTube video player" src="https://www.youtube.com/embed/p8FGGlgQCMo" width="800" height="450" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p><strong>Ready to Postgres Like a Pro?</strong> Subscribe to the  <a href="https://aka.ms/postgreslikeapro">YouTube channel </a>and follow the <a href="https://aka.ms/postgres-hub">PostgreSQL Hub</a> for Azure Developers.</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/take-your-postgresql-backed-apps-to-the-next-level">Take your PostgreSQL-backed apps to the next level</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/take-your-postgresql-backed-apps-to-the-next-level/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/04/Social-Card-PostgreSQL-Like-A-Pro.webp" type="image/png" />
	</item>
		<item>
		<title>Awesome GitHub Copilot just got a website, and a learning hub, and plugins!</title>
		<link>https://devblogs.microsoft.com/blog/awesome-github-copilot-just-got-a-website-and-a-learning-hub-and-plugins</link>
					<comments>https://devblogs.microsoft.com/blog/awesome-github-copilot-just-got-a-website-and-a-learning-hub-and-plugins#comments</comments>
		
		<dc:creator><![CDATA[Matt Soucoup]]></dc:creator>
		<pubDate>Mon, 16 Mar 2026 17:00:33 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Microsoft for Developers]]></category>
		<category><![CDATA[Awesome Copilot]]></category>
		<category><![CDATA[copilot]]></category>
		<category><![CDATA[GitHub Copilot]]></category>
		<guid isPermaLink="false">https://devblogs.microsoft.com/?p=21080</guid>

					<description><![CDATA[<p>Back in July, we launched the Awesome GitHub Copilot Customizations repo with a simple goal: give the community a place to share custom instructions, prompts, and chat modes to customize the AI responses from GitHub Copilot. We were hoping for maybe one community contribution per week. That&#8230; did not happen. Instead, you all showed up. [&#8230;]</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/awesome-github-copilot-just-got-a-website-and-a-learning-hub-and-plugins">Awesome GitHub Copilot just got a website, and a learning hub, and plugins!</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Back in July, we launched the <a href="https://github.com/github/awesome-copilot" data-type="link" data-id="https://github.com/github/awesome-copilot">Awesome GitHub Copilot Customizations repo</a> with a simple goal: give the community a place to share custom instructions, prompts, and chat modes to customize the AI responses from GitHub Copilot. We were hoping for maybe one community contribution per week.</p>
<p>That&#8230; did not happen.</p>
<p>Instead, you all showed up. In a big way.</p>
<p>The repo now has <strong>175+ agents</strong>, <strong>208+ skills</strong>, <strong>176+ instructions</strong>, <strong>48+ plugins</strong>, <strong>7 agentic workflows</strong>, and <strong>3 hooks</strong> &#8211; all contributed by the community.</p>
<p>What started as a curated list has become something much bigger, and we needed to match that energy. The space has evolved so quickly that some of the customizations we originally supported aren&#8217;t even a thing any longer (looking at you prompts and chat modes).</p>
<p>Today we&#8217;re announcing the <a href="https://awesome-copilot.github.com" data-type="link" data-id="https://awesome-copilot.github.com">Awesome GitHub Copilot website</a>, a <a href="https://awesome-copilot.github.com/learning-hub/" data-type="link" data-id="https://awesome-copilot.github.com/learning-hub/">Learning Hub</a>, and a plugin system to make all of Awesome GitHub Copilot easier to use.</p>
<h2 id="h-the-problem-with-a-very-long-readme" class="wp-block-heading"><strong>The problem with a very long README</strong></h2>
<p>Let&#8217;s face it, it was a little bit difficult to find what you were looking for in the Awesome Copilot repo.</p>
<p>The repo worked great when it had a couple dozen resources. But with 600+ items? The README, scratch that, we had multiple READMEs for each customization, turned into a scroll marathon. Finding what you needed meant a lot of Ctrl+F and patience. We needed a better front door.</p>
<h2 id="h-the-new-website" class="wp-block-heading"><strong>The new website</strong></h2>
<p>The <a href="https://awesome-copilot.github.com">Awesome GitHub Copilot website</a> is built to be easy to navigate (with a memorable URL <a href="https://awesome-copilot.github.com">https://awesome-copilot.github.com</a>!) and deployed on GitHub Pages. It wraps the repo in a proper website with search, so you can find what&#8217;s in there without scrolling one of the READMEs forever.</p>
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="762" class="wp-image-21081" src="https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-homepage-1024x762.webp" alt="The landing page of the new Awesome GitHub Copilot showing cards to navigate into each of the main sections" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-homepage-1024x762.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-homepage-300x223.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-homepage-768x572.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-homepage-1536x1144.webp 1536w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-homepage.webp 1668w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p>The big things:</p>
<ul class="wp-block-list">
<li><strong>Full-text search</strong> across every resource &#8211; agents, skills, instructions, hooks, workflows, and plugins. You can narrow results by category.</li>
<li><strong>Resource pages</strong> for each category with live search, modal previews so you can see what a resource looks like before committing, and direct links back to the source. Plus one-click install into VS Code or VS Code insiders.</li>
<li><strong>The Learning Hub</strong> more on that one below!</li>
</ul>
<p>The original <a href="https://github.com/github/awesome-copilot">Awesome Copilot repo</a> itself hasn&#8217;t gone anywhere. If you want to still browse via the native GitHub interface, be our guest.</p>
<p>Of course, you still contribute any content through the repo. Once your PR has been merged, your new content will show up on the website.</p>
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="855" class="wp-image-21082" src="https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-search-1024x855.webp" alt="searching for .NET agents" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-search-1024x855.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-search-300x250.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-search-768x641.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/website-search.webp 1185w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<h2 id="h-the-learning-hub" class="wp-block-heading"><strong>The Learning Hub</strong></h2>
<p>It may be fair to sum up developer sentiment around AI tooling right now by saying: &#8220;whoa &#8211; everything is moving so fast all the time &#8211; I cannot keep up!&#8221;</p>
<p>Everybody is feeling it. Some of the resources we included when we launched Awesome Copilot back in July 2025 aren&#8217;t even <em>things</em> any longer. Anybody remember prompts? Yeah, it&#8217;s moving fast.</p>
<p>This is where we hope the <a href="https://awesome-copilot.github.com/learning-hub/">Learning Hub</a> will help out. The idea of the Learning Hub is to explain the fundamental concepts behind customizing the AI responses from GitHub Copilot.</p>
<p>In other words &#8211; what&#8217;s a skill and why is it important? How is a plugin different than a hook?</p>
<p>Then since Awesome Copilot contains ready-to-use examples of all of those &#8211; how do you tailor them exactly for your needs? Or write your own from scratch?</p>
<p>That&#8217;s what you&#8217;ll learn from The Learning Hub.</p>
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="777" class="wp-image-21083" src="https://devblogs.microsoft.com/wp-content/uploads/2026/03/learning-hub-1024x777.webp" alt="A screenshot from The Learning Hub showing the What Are Agents, Skills, and Instructions page" srcset="https://devblogs.microsoft.com/wp-content/uploads/2026/03/learning-hub-1024x777.webp 1024w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/learning-hub-300x228.webp 300w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/learning-hub-768x582.webp 768w, https://devblogs.microsoft.com/wp-content/uploads/2026/03/learning-hub.webp 1275w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p>&nbsp;</p>
<h2 id="h-plugins" class="wp-block-heading"><strong>Plugins</strong></h2>
<p>Plugins are how the industry is thinking of distribution of customization files of the like Awesome Copilot contains. A plugin bundles related agents, skills, and commands into a single installable package &#8211; themed collections for specific domains like frontend development, Python, Azure cloud, or team-specific workflows.</p>
<p>Various IDEs or agentic runtimes like GitHub Copilot CLI support marketplaces of plugins. We&#8217;re very happy to announce that Awesome GitHub Copilot is a default plugin marketplace for both GitHub Copilot CLI and VS Code!</p>
<p>There are <strong>48+ plugins</strong> in the repo today. The website has its own plugin page with search, tag filters.</p>
<p>And you can install any of those plugins as simply as:</p>
<p>&nbsp;</p>
<blockquote class="wp-block-quote is-style-plain is-layout-flow wp-block-quote-is-layout-flow">
<p>copilot plugin install &lt;plugin-name&gt;@awesome-copilot</p>
</blockquote>
<p>&nbsp;</p>
<h2 id="h-what-else-is-new" class="wp-block-heading"><strong>What else is new</strong></h2>
<p>A few more things worth knowing about. We menntioned above that the landscape is changing quickly and there are a couple of other new customization types that are available now:</p>
<ul class="wp-block-list">
<li><strong>Agentic Workflows</strong> are natural-language GitHub Actions that run AI coding agents autonomously. There are 7 examples in the repo right now, covering things like daily issue reports, codeowner file updates, and stale repo detection.</li>
<li><strong>Hooks</strong> let you set up event-triggered automations during Copilot coding agent sessions &#8211; useful for session logging, governance auditing, and custom post-processing.</li>
</ul>
<p>We also did a <strong>Skills migration</strong>. Consolidating the resource model from the original 8 types down to a cleaner set. Skills are now the standard unit for bundling reusable knowledge, which makes contributing (and consuming) a lot more straightforward.</p>
<h2 id="h-get-involved" class="wp-block-heading"><strong>Get involved</strong></h2>
<p>This is a community project. Everything in the repo was contributed by people who found something useful and wanted to share it.</p>
<p>A few ways to start:</p>
<p>1. <strong>Browse the website</strong> at <a href="https://awesome-copilot.github.com">https://awesome-copilot.github.com</a> and find something that fits your workflow.</p>
<p>2. <strong>Try a plugin</strong> install one from the plugin page and see how it changes your Copilot experience.</p>
<p>3. <strong>Walk through the Learning Hub</strong> at <a href="https://awesome-copilot.github.com/learning-hub">https://awesome-copilot.github.com/learning-hub</a> if you want to understand how AI response customization works end to end.</p>
<p>4. <strong>Contribute</strong> PRs are welcome! Check the <a href="https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md">contributing guide</a> for details.</p>
<p>5. <strong>Star the repo</strong> at <a href="https://github.com/github/awesome-copilot">https://github.com/github/awesome-copilot</a> to keep up with new additions.</p>
<h2 id="h-thank-you" class="wp-block-heading"><strong>Thank you</strong></h2>
<p>Seriously &#8212; thank you. We put up a repo and you filled it with 600+ resources. Every agent, skill, and instruction in there exists because somebody thought it was worth sharing. We&#8217;ll keep building on this.</p>
<p>Keep sending PRs. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f49c.png" alt="💜" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&nbsp;</p>
<p>The post <a href="https://devblogs.microsoft.com/blog/awesome-github-copilot-just-got-a-website-and-a-learning-hub-and-plugins">Awesome GitHub Copilot just got a website, and a learning hub, and plugins!</a> appeared first on <a href="https://devblogs.microsoft.com">Microsoft for Developers</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://devblogs.microsoft.com/blog/awesome-github-copilot-just-got-a-website-and-a-learning-hub-and-plugins/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			<image url="https://devblogs.microsoft.com/wp-content/uploads/2026/03/MicrosoftTeams-image.webp" type="image/jpeg" />
	</item>
	</channel>
</rss>
