<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Microsoft Developer Community Blog articles</title>
    <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/bg-p/AzureDevCommunityBlog</link>
    <description>Microsoft Developer Community Blog articles</description>
    <pubDate>Tue, 09 Jun 2026 22:22:36 GMT</pubDate>
    <dc:creator>AzureDevCommunityBlog</dc:creator>
    <dc:date>2026-06-09T22:22:36Z</dc:date>
    <item>
      <title>From AI Suggestions to Autonomous CRM Actions in Dynamics 365</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/from-ai-suggestions-to-autonomous-crm-actions-in-dynamics-365/ba-p/4524477</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;🔷 Executive Summary&lt;/H2&gt;
&lt;P&gt;Most AI implementations in Dynamics 365 start—and end—with case summarization.&lt;/P&gt;
&lt;P&gt;While useful, summarization alone does not fundamentally transform service operations.&lt;/P&gt;
&lt;P&gt;In this post, I’ll walk through a &lt;STRONG&gt;CRM Copilot Agent Accelerator&lt;/STRONG&gt; built on Microsoft Power Platform that goes far beyond summarization. It introduces a &lt;STRONG&gt;modular, extensible AI architecture&lt;/STRONG&gt; that evolves from:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AI-generated insights&lt;/LI&gt;
&lt;LI&gt;to predictive intelligence&lt;/LI&gt;
&lt;LI&gt;to autonomous execution&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This approach enables organizations to reduce manual effort, improve decision quality, and scale support operations without additional Copilot licensing.&lt;/P&gt;
&lt;H2&gt;🔷 The Business Problem&lt;/H2&gt;
&lt;P&gt;In most enterprise service operations:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Agents spend &lt;STRONG&gt;30–40% of their time on repetitive tasks&lt;/STRONG&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Case triage requires manual reading of history&lt;/LI&gt;
&lt;LI&gt;Decisions vary significantly between agents&lt;/LI&gt;
&lt;LI&gt;Knowledge base usage is inconsistent&lt;/LI&gt;
&lt;LI&gt;Escalations are reactive rather than predictive&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The result?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Slower resolutions&lt;/LI&gt;
&lt;LI&gt;Increased SLA breaches&lt;/LI&gt;
&lt;LI&gt;Poor customer experience&lt;/LI&gt;
&lt;LI&gt;High onboarding time for new agents&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;🔷 Solution Overview: CRM Copilot Agent Accelerator&lt;/H2&gt;
&lt;P&gt;The solution introduces a &lt;STRONG&gt;layered AI-first architecture&lt;/STRONG&gt; built on:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Dynamics 365 + Dataverse&lt;/STRONG&gt; (data foundation)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Power Automate&lt;/STRONG&gt; (orchestration)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;AI Builder (GPT models)&lt;/STRONG&gt; (intelligence layer)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;PCF Controls + Teams integration&lt;/STRONG&gt; (user experience)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;At its core, the accelerator:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Generates &lt;STRONG&gt;AI summaries + next actions&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Stores them in Dataverse (persistent &amp;amp; reusable)&lt;/LI&gt;
&lt;LI&gt;Extends capabilities through &lt;STRONG&gt;modular add-on packs&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 These add-ons transform AI from a helper into an operational engine.&lt;BR /&gt;&lt;BR /&gt;🔷 Architecture Overview&lt;/P&gt;
&lt;P&gt;The solution follows a &lt;STRONG&gt;layered enterprise architecture model&lt;/STRONG&gt;:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;1. Trigger Layer&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Case create/update&lt;/LI&gt;
&lt;LI&gt;Email, chat, or call events&lt;/LI&gt;
&lt;LI&gt;SLA checkpoints&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;2. Orchestration Layer&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Power Automate flows&lt;/LI&gt;
&lt;LI&gt;Dataverse plugins&lt;/LI&gt;
&lt;LI&gt;Optional Copilot Studio agents&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;3. AI Processing Layer&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;AI Builder prompts (summarization, classification)&lt;/LI&gt;
&lt;LI&gt;Sentiment detection&lt;/LI&gt;
&lt;LI&gt;Risk prediction&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;4. Data Layer&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Dataverse entities (Case, Account, Knowledge Base)&lt;/LI&gt;
&lt;LI&gt;AI-enriched fields&lt;/LI&gt;
&lt;LI&gt;Analytics tables&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;5. Experience Layer&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Model-driven apps&lt;/LI&gt;
&lt;LI&gt;PCF widgets&lt;/LI&gt;
&lt;LI&gt;Teams Adaptive Cards&lt;/LI&gt;
&lt;LI&gt;Power BI dashboards&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 This architecture allows &lt;STRONG&gt;scalable AI enrichment across the entire CRM lifecycle&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2&gt;🔷 The Real Innovation: Modular Add-On Packs&lt;/H2&gt;
&lt;P&gt;The real differentiation is not the base AI capability.&lt;/P&gt;
&lt;P&gt;It is the introduction of &lt;STRONG&gt;eight independently deployable add-on packs&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H3&gt;🔹 Key Add-On Categories&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Add-On&lt;/th&gt;&lt;th&gt;Capability&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PCF Widgets&lt;/td&gt;&lt;td&gt;Visual AI insights (risk radar, similar cases)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Predictive Engine&lt;/td&gt;&lt;td&gt;SLA &amp;amp; escalation prediction&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Teams Integration&lt;/td&gt;&lt;td&gt;AI insights pushed to Teams&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Customer 360&lt;/td&gt;&lt;td&gt;Persona + churn intelligence&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Knowledge Intelligence&lt;/td&gt;&lt;td&gt;Self-improving KB loop&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Multilingual AI&lt;/td&gt;&lt;td&gt;Cross-language support&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Voice &amp;amp; Omnichannel&lt;/td&gt;&lt;td&gt;Call/chat AI summarization&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agentic Automation&lt;/td&gt;&lt;td&gt;AI takes action automatically&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;👉 These packs address &lt;STRONG&gt;10+ gaps not covered by D365 Copilot&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;🔷 Deep Dive: Key Differentiators&lt;/H2&gt;
&lt;H3&gt;&amp;nbsp;1. From Reactive to Predictive AI&lt;/H3&gt;
&lt;P&gt;Instead of reacting to issues:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SLA breach risk is calculated in real time&lt;/LI&gt;
&lt;LI&gt;Escalation probability is predicted before it happens&lt;/LI&gt;
&lt;LI&gt;Supervisors receive proactive alerts&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 This reduces escalations by up to &lt;STRONG&gt;25–40%&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;2. Visual AI Experience (PCF Controls)&lt;/H3&gt;
&lt;img /&gt;
&lt;P&gt;Instead of text-heavy UI:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Radar charts show case complexity &amp;amp; risk&lt;/LI&gt;
&lt;LI&gt;Similar case panels enable faster resolution&lt;/LI&gt;
&lt;LI&gt;Coaching tickers keep guidance always visible&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 This dramatically improves &lt;STRONG&gt;agent usability and adoption&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;3. Self-Improving Knowledge Base&lt;/H3&gt;
&lt;P&gt;A major gap in most systems:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Knowledge is consumed but never improved&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This solution:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Detects KB gaps automatically&lt;/LI&gt;
&lt;LI&gt;Generates AI-drafted knowledge articles&lt;/LI&gt;
&lt;LI&gt;Enables continuous learning&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 Leads to &lt;STRONG&gt;3× growth in KB coverage&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;4. From AI Suggestion → AI Action&lt;/H3&gt;
&lt;P&gt;Most AI stops at suggestion.&lt;/P&gt;
&lt;P&gt;This accelerator evolves into &lt;STRONG&gt;Agentic AI&lt;/STRONG&gt;:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Stage&lt;/th&gt;&lt;th&gt;Capability&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AI Informs&lt;/td&gt;&lt;td&gt;Summary + Insights&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AI Suggests&lt;/td&gt;&lt;td&gt;Recommendations&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AI Drafts&lt;/td&gt;&lt;td&gt;Email + KB articles&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AI Acts&lt;/td&gt;&lt;td&gt;Tasks, routing, execution&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AI Orchestrates&lt;/td&gt;&lt;td&gt;Multi-agent automation&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;👉 AI starts doing the work — not just guiding it&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;🔷 Business Impact&lt;/H2&gt;
&lt;P&gt;Organizations adopting this accelerator can expect:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;90% reduction in case triage time&lt;/STRONG&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;40% reduction in misrouted cases&lt;/STRONG&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;✅ &lt;STRONG&gt;60–70% improvement in handling efficiency&lt;/STRONG&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;✅ Faster agent onboarding (less than a day)&lt;/LI&gt;
&lt;LI&gt;✅ Reduced dependency on Copilot licensing&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 All achieved using &lt;STRONG&gt;existing Power Platform investments&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2&gt;🔷 Future Roadmap&lt;/H2&gt;
&lt;P&gt;The current solution sets the foundation for:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;✅ Copilot Studio multi-agent orchestration&lt;/LI&gt;
&lt;LI&gt;✅ Advanced ML-based predictions&lt;/LI&gt;
&lt;LI&gt;✅ Vector-based knowledge retrieval (RAG)&lt;/LI&gt;
&lt;LI&gt;✅ Integration with Microsoft Fabric for intelligence&lt;/LI&gt;
&lt;LI&gt;✅ Autonomous CRM workflows&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;👉 The evolution leads toward &lt;STRONG&gt;fully AI-driven service operations&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2&gt;🔷 Why This Matters&lt;/H2&gt;
&lt;P&gt;This is not just another AI demo.&lt;/P&gt;
&lt;P&gt;It represents a shift from:&lt;/P&gt;
&lt;P&gt;❌ “AI helps agents”&lt;BR /&gt;➡️ ✅ “AI becomes part of the operation”&lt;/P&gt;
&lt;P&gt;And does so using:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;No custom AI infrastructure&lt;/LI&gt;
&lt;LI&gt;No additional Copilot licensing&lt;/LI&gt;
&lt;LI&gt;Native Microsoft ecosystem&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;🔷 Call to Action&lt;/H2&gt;
&lt;P&gt;If you’re working on Dynamics 365, Power Platform, or AI-driven CRM solutions:&lt;/P&gt;
&lt;P&gt;✅ Start with AI enrichment&lt;BR /&gt;✅ Extend with predictive capabilities&lt;BR /&gt;✅ Move toward agentic automation&lt;/P&gt;
&lt;P&gt;This accelerator pattern can help you &lt;STRONG&gt;move faster, scale better, and deliver measurable value&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;🔷 Closing Thought&lt;/H2&gt;
&lt;P&gt;“The future of CRM is not AI assisting users —&lt;BR /&gt;it is AI transforming how work gets done.”&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H2&gt;🔷 References &amp;amp; Further Reading&lt;/H2&gt;
&lt;P&gt;The concepts described in this CRM Copilot Agent Accelerator are built on capabilities available across Microsoft Dynamics 365, Dataverse, Power Platform, Azure AI, and Copilot technologies.&lt;/P&gt;
&lt;P&gt;Official Microsoft references:&lt;/P&gt;
&lt;P&gt;📌 Dynamics 365 Customer Service&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/customer-service/?utm_source=chatgpt.com" target="_blank"&gt;Dynamics 365 Customer Service Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/customer-service/overview?utm_source=chatgpt.com" target="_blank"&gt;Dynamics 365 Customer Service Overview&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Microsoft Dataverse&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-apps/maker/data-platform/data-platform-intro?utm_source=chatgpt.com" target="_blank"&gt;Microsoft Dataverse Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-apps/developer/data-platform/overview?utm_source=chatgpt.com" target="_blank"&gt;Dataverse Developer Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Power Automate&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-automate/?utm_source=chatgpt.com" target="_blank"&gt;Power Automate Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-automate/getting-started?utm_source=chatgpt.com" target="_blank"&gt;Build Automated Workflows with Power Automate&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 AI Builder&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/ai-builder/?utm_source=chatgpt.com" target="_blank"&gt;AI Builder Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/ai-builder/create-a-custom-prompt?utm_source=chatgpt.com" target="_blank"&gt;Create and Use AI Prompts in Power Platform&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Microsoft Copilot Studio&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/microsoft-copilot-studio/?utm_source=chatgpt.com" target="_blank"&gt;Microsoft Copilot Studio Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/microsoft-copilot-studio/authoring-create-agent?utm_source=chatgpt.com" target="_blank"&gt;Build Autonomous Agents with Copilot Studio&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Power Apps Component Framework (PCF)&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-apps/developer/component-framework/overview?utm_source=chatgpt.com" target="_blank"&gt;Power Apps Component Framework Overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-apps/developer/component-framework/create-custom-controls-using-pcf?utm_source=chatgpt.com" target="_blank"&gt;Build Code Components for Model-Driven Apps&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Microsoft Teams Integration&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/customerengagement/on-premises/admin/use-dynamics-365-microsoft-teams-collaborate?utm_source=chatgpt.com" target="_blank"&gt;Integrate Dynamics 365 with Microsoft Teams&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/microsoftteams/platform/task-modules-and-cards/cards/cards-reference?utm_source=chatgpt.com" target="_blank"&gt;Teams Adaptive Cards Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Omnichannel &amp;amp; Conversational AI&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/contact-center/?utm_source=chatgpt.com" target="_blank"&gt;Dynamics 365 Contact Center Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/customer-service/implement/omnichannel/overview?utm_source=chatgpt.com" target="_blank"&gt;Omnichannel for Customer Service Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Customer Insights &amp;amp; Customer 360&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/customer-insights/?utm_source=chatgpt.com" target="_blank"&gt;Dynamics 365 Customer Insights Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Knowledge Management&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/dynamics365/customer-service/knowledge-base-overview?utm_source=chatgpt.com" target="_blank"&gt;Knowledge Management in Dynamics 365 Customer Service&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Power BI Analytics&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-bi/?utm_source=chatgpt.com" target="_blank"&gt;Power BI Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Azure AI &amp;amp; Generative AI&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/ai-services/?utm_source=chatgpt.com" target="_blank"&gt;Azure AI Services Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/ai-services/openai/overview?utm_source=chatgpt.com" target="_blank"&gt;Azure OpenAI Service Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Retrieval-Augmented Generation (RAG)&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/search/search-what-is-azure-search?utm_source=chatgpt.com" target="_blank"&gt;Azure AI Search Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview?utm_source=chatgpt.com" target="_blank"&gt;Build RAG Solutions with Azure AI Search and Azure OpenAI&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Microsoft Fabric&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/fabric/?utm_source=chatgpt.com" target="_blank"&gt;Microsoft Fabric Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;📌 Power Platform Architecture &amp;amp; Well-Architected Guidance&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-platform/well-architected/?utm_source=chatgpt.com" target="_blank"&gt;Power Platform Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/power-platform/architecture/?utm_source=chatgpt.com" target="_blank"&gt;Power Platform Architecture Center&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These resources provide the foundational building blocks for implementing AI-assisted, predictive, and agentic experiences across Dynamics 365 Customer Service and the broader Microsoft Power Platform ecosystem.&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jun 2026 16:39:43 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/from-ai-suggestions-to-autonomous-crm-actions-in-dynamics-365/ba-p/4524477</guid>
      <dc:creator>SachinDas</dc:creator>
      <dc:date>2026-06-09T16:39:43Z</dc:date>
    </item>
    <item>
      <title>Troubleshooting Azure Container Apps and Jobs for .NET and Django Workloads</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/troubleshooting-azure-container-apps-and-jobs-for-net-and-django/ba-p/4518303</link>
      <description>&lt;H1&gt;Introduction&lt;/H1&gt;
&lt;P&gt;Deploying to Azure Container Apps feels like a huge step forward — you get serverless containers, automatic scaling, built-in ingress, and managed environments without managing Kubernetes directly. But when something goes wrong and your container refuses to start, or your Container App Job silently fails, it can feel like debugging inside a black box.&lt;/P&gt;
&lt;P&gt;This first part of our four-part series walks through the most common deployment and startup failures you will hit when running .NET and Django applications on Azure Container Apps and Container App Jobs. We cover what the real error looks like, why it is happening under the hood, and what you need to do to fix it — step by step.&lt;/P&gt;
&lt;H3&gt;The Real-World Problem: "My Container App is stuck in a restart loop and I have no idea why"&lt;/H3&gt;
&lt;P&gt;This is probably the most common thing engineers report when they first move workloads to Azure Container Apps. The deployment finishes successfully, the revision shows as active, but the app never becomes healthy. In the Azure portal it cycles between `Running` and `Degraded`, and in the logs you see cryptic exit codes or — even worse — nothing at all.&lt;/P&gt;
&lt;P&gt;The root causes almost always fall into one of these buckets:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The container exits immediately because the process crashes on startup (misconfiguration, missing secrets, unhandled exceptions).&lt;/LI&gt;
&lt;LI&gt;The health probe fails because the app takes too long to start or is listening on the wrong port.&lt;/LI&gt;
&lt;LI&gt;A Container App Job never completes because it times out or the job process exits with a non-zero code.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Let us walk through each of these in detail.&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;Scenario 1: Your .NET Application Crashes at Startup&lt;/STRONG&gt;&lt;/H5&gt;
&lt;H6&gt;&lt;STRONG&gt;What You See&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;Your Container App revision goes into a restart loop. You check the Log Analytics workspace and see something like this:&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;ContainerAppConsoleLogs_CL
| where ContainerAppName_s == "my-dotnet-api"
| where TimeGenerated &amp;gt; ago(30m)
| project TimeGenerated, Log_s
| order by TimeGenerated desc&lt;/LI-CODE&gt;
&lt;P&gt;The output shows:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Unhandled exception. System.InvalidOperationException: Unable to resolve service for type 'MyApp.Data.AppDbContext'&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;...&lt;/P&gt;
&lt;P&gt;Application is shutting down.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or even more commonly with Entity Framework Core:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;fail: Microsoft.EntityFrameworkCore.Database.Connection&lt;/P&gt;
&lt;P&gt;An error occurred using the connection to database 'mydb' on server 'myserver.database.windows.net'.&lt;/P&gt;
&lt;P&gt;System.Net.Sockets.SocketException: Connection refused&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H6&gt;&lt;STRONG&gt;Why This Happens&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;When .NET 6+ applications start up, they run the entire `WebApplication.Build()` pipeline before accepting traffic. If any registered service — like a database context — cannot be constructed or if the connection string is missing or wrong, the application throws an unhandled exception and the process exits with a non-zero code. Container Apps detects this exit and restarts the container. This cycle repeats indefinitely.&lt;/P&gt;
&lt;P&gt;The most frequent trigger is missing or incorrectly named environment variables and secrets. In local development you rely on `appsettings.Development.json` or `user secrets`, but in Container Apps those files are not present unless you explicitly copy them into the image (which you should never do for secrets).&lt;/P&gt;
&lt;H6&gt;&lt;STRONG&gt;Step-by-Step Fix&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1 — Verify your secrets and environment variables are configured correctly.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In the Azure portal, navigate to your Container App → &lt;STRONG&gt;Configuration&lt;/STRONG&gt; → &lt;STRONG&gt;Secrets &lt;/STRONG&gt;and &lt;STRONG&gt;Environment variables&lt;/STRONG&gt;. Make sure every value your app reads from &lt;EM&gt;IConfiguration&lt;/EM&gt; is defined here.&lt;/P&gt;
&lt;P&gt;From the CLI you can inspect and update them like this:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# Add or update a secret reference
az containerapp secret set 
  --name my-dotnet-api 
  --resource-group my-rg 
  --secrets "connectionstring=Server=myserver.database.windows.net;..."

# Reference that secret as an environment variable
az containerapp update 
  --name my-dotnet-api 
  --resource-group my-rg 
  --set-env-vars "ConnectionStrings__DefaultConnection=secretref:connectionstring"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2 — Make sure your .NET app reads configuration correctly.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The naming convention that trips up almost everyone: Azure Container Apps uses double underscores (`__`) to represent the colon (`:`) separator in .NET configuration keys. So `ConnectionStrings:DefaultConnection` becomes `ConnectionStrings__DefaultConnection` as the environment variable name.&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;// This reads from "ConnectionStrings__DefaultConnection" env var automatically

builder.Services.AddDbContext&amp;lt;AppDbContext&amp;gt;(options =&amp;gt;
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3 — Add a startup health check that gives meaningful feedback.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Configure a liveness probe with a generous initial delay to avoid a container being killed before it has had time to start:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;# In your Container App YAML configuration

probes:
  - type: Liveness
    httpGet:
      path: /health
      port: 8080
    initialDelaySeconds: 30
    periodSeconds: 10
    failureThreshold: 5
  - type: Readiness
    httpGet:
      path: /health/ready
      port: 8080
    initialDelaySeconds: 15
    periodSeconds: 5
    failureThreshold: 3&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Add the corresponding health endpoint in your .NET app:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;// Program.cs

builder.Services.AddHealthChecks()
    .AddSqlServer(
        builder.Configuration.GetConnectionString("DefaultConnection")!,
        name: "database",
        tags: new[] { "ready" });

app.MapHealthChecks("/health");
app.MapHealthChecks("/health/ready", new HealthCheckOptions
{
    Predicate = check =&amp;gt; check.Tags.Contains("ready")
});&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 4 — Pull the raw container logs using the CLI&lt;/STRONG&gt; to see exactly what happened before the container exited:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;az containerapp logs show 
  --name my-dotnet-api 
  --resource-group my-rg 
  --type console 
  --tail 50&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;Scenario 2: Your Django Application Fails to Start&lt;/STRONG&gt;&lt;/H5&gt;
&lt;H6&gt;&lt;STRONG&gt;What You See&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;Your Django app deploys, the container starts, but within seconds it exits. In the logs you see one of these common errors:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY environment variable&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;django.db.utils.OperationalError: could not connect to server: Connection refused&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; Is the server running on host "localhost" (127.0.0.1) and accepting&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; TCP/IP connections on port 5432?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or the static files problem that catches almost everyone:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;[Errno 2] No such file or directory: '/app/staticfiles'&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H6&gt;&lt;STRONG&gt;Why This Happens&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;Django validates its configuration eagerly when the WSGI/ASGI server starts. If `&lt;STRONG&gt;SECRET_KEY&lt;/STRONG&gt;` is not set, if `&lt;STRONG&gt;ALLOWED_HOSTS&lt;/STRONG&gt;` does not include the container's hostname or the ingress FQDN, or if `&lt;STRONG&gt;DEBUG=True&lt;/STRONG&gt;` is set in a configuration branch that requires a proper database, Django refuses to serve any requests.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The static files error comes up because many teams forget to run `&lt;STRONG&gt;python manage.py collectstatic&lt;/STRONG&gt;` as part of the container image build process. The `&lt;STRONG&gt;STATIC_ROOT&lt;/STRONG&gt;` directory simply does not exist at runtime.&lt;/P&gt;
&lt;H6&gt;&lt;STRONG&gt;Step-by-Step Fix&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1 — Set required Django environment variables in your Container App.&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;az containerapp secret set 
  --name my-django-app 
  --resource-group my-rg 
  --secrets 
    "django-secret-key=your-very-secret-key-here" 
    "db-password=your-db-password"
az containerapp update 
  --name my-django-app 
  --resource-group my-rg 
  --set-env-vars 
    "DJANGO_SECRET_KEY=secretref:django-secret-key" 
    "DEBUG=False" 
    "ALLOWED_HOSTS=my-django-app.happyfield-abc123.eastus.azurecontainerapps.io" 

    "DATABASE_URL=secretref:db-password"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2 — Run `collectstatic` during Docker image build, not at runtime.*&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This is a very common mistake. Static files should be baked into the image, not generated when the container starts. Update your `&lt;STRONG&gt;Dockerfile&lt;/STRONG&gt;`:&lt;/P&gt;
&lt;LI-CODE lang="docker"&gt;FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# Collect static files at build time with a dummy SECRET_KEY
RUN SECRET_KEY=build-time-placeholder python manage.py collectstatic --noinput
EXPOSE 8000
CMD ["gunicorn", "myproject.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "2", "--timeout", "120"]&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3 — Make sure Gunicorn is configured correctly for Container Apps.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The most important thing to verify is that Gunicorn is binding to `&lt;STRONG&gt;0.0.0.0&lt;/STRONG&gt;` and not `&lt;STRONG&gt;127.0.0.1&lt;/STRONG&gt;`. Container Apps expects the application to listen on all interfaces so that the ingress layer can reach it. Also make sure the port matches what you defined in your Container App's ingress target port:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# Set ingress to match Gunicorn's bind port
az containerapp ingress update 
  --name my-django-app 
  --resource-group my-rg 
  --target-port 8000 
  --type external&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Step 4 — Handle database migrations safely.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Never run `&lt;STRONG&gt;python manage.py migrate&lt;/STRONG&gt;` as part of your container startup command. If you have multiple replicas, all of them will try to run migrations simultaneously, which can corrupt your schema. Instead, use a Container App Job to run migrations as a pre-deployment step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# Create a one-time Container App Job to run migrations

az containerapp job create 
  --name django-migrate-job 
  --resource-group my-rg 
  --environment my-aca-env 
  --trigger-type Manual 
  --replica-timeout 300 
  --image myregistry.azurecr.io/my-django-app:latest 
  --command "python" 
  --args "manage.py" "migrate" 
  --env-vars 
    "DJANGO_SECRET_KEY=secretref:django-secret-key" 
    "DATABASE_URL=secretref:db-password"


# Execute the migration job before deploying the new revision
az containerapp job start 
  --name django-migrate-job 
  --resource-group my-rg&lt;/LI-CODE&gt;
&lt;H5&gt;&lt;STRONG&gt;Scenario 3: Your Container App Job Fails Silently or Times Out&lt;/STRONG&gt;&lt;/H5&gt;
&lt;H6&gt;&lt;STRONG&gt;What You See&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;You trigger a Container App Job — maybe it is a nightly data processing job, a scheduled report generator, or a cleanup task — and in the Azure portal the execution shows as &lt;STRONG&gt;Failed &lt;/STRONG&gt;with no helpful error message. Or it shows as&amp;nbsp;&lt;STRONG&gt;Running&lt;/STRONG&gt;&amp;nbsp;for an unusually long time and then transitions to&amp;nbsp;&lt;STRONG&gt;Failed&lt;/STRONG&gt;&amp;nbsp;with a timeout error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why This Happens&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Container App Jobs have a `&lt;STRONG&gt;replicaTimeout&lt;/STRONG&gt;` property. If your job process does not complete within that window, Azure Container Apps kills it and marks the execution as failed. This is different from Container Apps (services) where the container keeps running. Jobs are expected to run to completion and exit with code `&lt;STRONG&gt;0&lt;/STRONG&gt;`.&lt;/P&gt;
&lt;P&gt;The silent failure happens when your job process exits with a non-zero exit code but does not write anything to `&lt;STRONG&gt;stdout&lt;/STRONG&gt;` or `&lt;STRONG&gt;stderr&lt;/STRONG&gt;`. Container Apps records the exit code but has no log content to show you.&lt;/P&gt;
&lt;H6&gt;&lt;STRONG&gt;Step-by-Step Fix&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1 — Make your job emit logs to stdout explicitly.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Every print statement, every log line should go to `stdout` or `stderr`. In Python:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import sys
import logging
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s",
    handlers=[logging.StreamHandler(sys.stdout)]
)
logger = logging.getLogger(__name__)

def main():
    logger.info("Job starting")
    try:
        # your job logic here
        process_data()
        logger.info("Job completed successfully")
        sys.exit(0)

    except Exception as e:
        logger.error(f"Job failed with error: {e}", exc_info=True)
        sys.exit(1)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In .NET:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;// Use ILogger which writes to stdout by default in containers
public class MyJob
{
    private readonly ILogger&amp;lt;MyJob&amp;gt; _logger;
    public MyJob(ILogger&amp;lt;MyJob&amp;gt; logger)
    {
        _logger = logger;
    }

    public async Task RunAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("Job starting at {Time}", DateTimeOffset.UtcNow);
        try
        {
            await ProcessDataAsync(cancellationToken);
            _logger.LogInformation("Job completed successfully");
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Job failed");
            throw; // Let the process exit with non-zero code
        }
    }
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2 — Set an appropriate replica timeout and retry count.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Be realistic about how long your job takes in production, then add a buffer:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;az containerapp job update 
  --name my-processing-job 
  --resource-group my-rg 
  --replica-timeout 1800    # 30 minutes
  --replica-retry-limit 2    # Retry twice before marking as failed&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 3 — Check job execution history and logs.&lt;/STRONG&gt;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# List recent job executions and their status
az containerapp job execution list 
  --name my-processing-job 
  --resource-group my-rg 
  --output table

# Get logs for a specific execution
az containerapp job execution show 
  --name my-processing-job 
  --resource-group my-rg 
  --job-execution-name my-processing-job-abc123&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From Log Analytics:&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;ContainerAppConsoleLogs_CL
| where ContainerAppName_s == "my-processing-job"
| where TimeGenerated &amp;gt; ago(24h)
| project TimeGenerated, Log_s, ContainerName_s
| order by TimeGenerated desc&lt;/LI-CODE&gt;
&lt;H3&gt;Summary: Your Startup Troubleshooting Checklist&lt;/H3&gt;
&lt;P&gt;Before you dig into complex diagnostics, run through this checklist whenever a Container App or Job fails to start:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Are all required environment variables and secrets defined and correctly referenced?&lt;/LI&gt;
&lt;LI&gt;Is the application listening on `0.0.0.0` and on the port that matches the ingress target port?&lt;/LI&gt;
&lt;LI&gt;Does the Dockerfile copy everything needed for the app to run (migrations, static files, etc.)?&lt;/LI&gt;
&lt;LI&gt;Are health probes configured with enough initial delay for the app to start?&lt;/LI&gt;
&lt;LI&gt;For jobs: is the replica timeout long enough, and does the process exit with code 0 on success?&lt;/LI&gt;
&lt;LI&gt;Is the container registry accessible from the Container Apps environment (managed identity or registry credentials configured)?&lt;/LI&gt;
&lt;LI&gt;Are the resource allocations (CPU and memory) sufficient for the application to start without OOM-killing?&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;References and Sample Resources&lt;/H3&gt;
&lt;P&gt;Use these resources for deeper implementation details and production-ready patterns.&lt;/P&gt;
&lt;H6&gt;&lt;STRONG&gt;Azure Container Apps docs (core)&lt;/STRONG&gt;&lt;/H6&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/overview" target="_blank"&gt;Azure Container Apps overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/manage-secrets" target="_blank"&gt;Manage secrets in Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/environment-variables" target="_blank"&gt;Manage environment variables in Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/health-probes" target="_blank"&gt;Health probes in Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/ingress-overview" target="_blank"&gt;Ingress in Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/log-streaming" target="_blank"&gt;View logs in Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/jobs" target="_blank"&gt;Azure Container Apps Jobs overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/container-apps/revisions" target="_blank"&gt;Azure Container Apps revisions&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H6&gt;&lt;STRONG&gt;.NET and Django references&lt;/STRONG&gt;&lt;/H6&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/aspnet/core/fundamentals/configuration" target="_blank"&gt;ASP.NET Core configuration fundamentals&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/aspnet/core/host-and-deploy/health-checks" target="_blank"&gt;ASP.NET Core health checks&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://docs.djangoproject.com/en/stable/howto/deployment/checklist/" target="_blank"&gt;Django deployment checklist&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://docs.gunicorn.org/en/stable/settings.html" target="_blank"&gt;Gunicorn settings&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H6&gt;&lt;STRONG&gt;Sample repositories&lt;/STRONG&gt;&lt;/H6&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure-Samples/containerapps-albumapi-csharp" target="_blank"&gt;Azure Samples: .NET on Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure-Samples/containerapps-albumapi-python" target="_blank"&gt;Azure Samples: Python on Azure Container Apps&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://github.com/Azure-Samples/mcp-container-ts" target="_blank"&gt;Azure Samples: TypeScript MCP container sample&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;What's Next&lt;/H3&gt;
&lt;P&gt;In Part 2 of this series, we move past startup failures and look at what happens after your app is running — the frustrating world of cold starts, scaling delays, and startup latency spikes that make your application feel slow under real production traffic.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Part of the series: Troubleshooting Azure Container Apps in Production&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Next: Part 2 — From Slow to Snappy: Performance Tuning Cold Starts and Scaling Delays in Azure Container Apps&lt;/P&gt;</description>
      <pubDate>Tue, 09 Jun 2026 07:58:44 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/troubleshooting-azure-container-apps-and-jobs-for-net-and-django/ba-p/4518303</guid>
      <dc:creator>BhaktiRath95</dc:creator>
      <dc:date>2026-06-09T07:58:44Z</dc:date>
    </item>
    <item>
      <title>Getting Secrets Out of YAML: Implementing Azure Key Vault CSI Driver on AKS with Workload Identity</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/getting-secrets-out-of-yaml-implementing-azure-key-vault-csi/ba-p/4522590</link>
      <description>&lt;H2&gt;Table of Contents&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Why This Pattern Matters&lt;/LI&gt;
&lt;LI&gt;The Problem with Secrets in YAML&lt;/LI&gt;
&lt;LI&gt;What We Wanted to Achieve&lt;/LI&gt;
&lt;LI&gt;Architecture Overview&lt;/LI&gt;
&lt;LI&gt;How the Flow Works&lt;/LI&gt;
&lt;LI&gt;Implementation Prerequisites&lt;/LI&gt;
&lt;LI&gt;Step-by-Step Implementation&lt;/LI&gt;
&lt;LI&gt;Understanding the YAML Components&lt;/LI&gt;
&lt;LI&gt;Secret Rotation and Reloaders&lt;/LI&gt;
&lt;LI&gt;Common Pitfalls and Troubleshooting&lt;/LI&gt;
&lt;LI&gt;Security and Operational Benefits&lt;/LI&gt;
&lt;LI&gt;Key Takeaways&lt;/LI&gt;
&lt;LI&gt;Microsoft Documentation References&lt;/LI&gt;
&lt;LI&gt;Final Thoughts&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Why This Pattern Matters&lt;/H2&gt;
&lt;P&gt;Most Kubernetes environments start with good intentions around secret management.&lt;/P&gt;
&lt;P&gt;Over time, however, many AKS deployments gradually evolve toward patterns like:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;value: "#{SomeSecret}#"&lt;/LI-CODE&gt;
&lt;P&gt;A pipeline substitutes the value during deployment, the application works, and the pattern spreads across services.&lt;/P&gt;
&lt;P&gt;The problem is that this quietly turns:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;deployment pipelines&lt;/LI&gt;
&lt;LI&gt;rendered manifests&lt;/LI&gt;
&lt;LI&gt;release artifacts&lt;/LI&gt;
&lt;LI&gt;CI/CD logs&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;into part of the secret distribution path.&lt;/P&gt;
&lt;P&gt;Even if the secret originates from Azure Key Vault, the value itself still travels through multiple systems before reaching the pod.&lt;/P&gt;
&lt;P&gt;That creates:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;unnecessary exposure risk&lt;/LI&gt;
&lt;LI&gt;difficult rotation workflows&lt;/LI&gt;
&lt;LI&gt;broader operational blast radius&lt;/LI&gt;
&lt;LI&gt;audit complexity&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This article walks through a cleaner runtime-based model using:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure Key Vault CSI Driver&lt;/LI&gt;
&lt;LI&gt;AKS Workload Identity&lt;/LI&gt;
&lt;LI&gt;Managed Identity federation&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;where workloads authenticate directly to Key Vault without secret values ever appearing in YAML or pipelines.&lt;/P&gt;
&lt;H2&gt;The Problem with Secrets in YAML&lt;/H2&gt;
&lt;P&gt;The traditional pattern usually looks like this:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;env: - name: APPLICATION_SECRET value: "#{ApplicationSecret}#"&lt;/LI-CODE&gt;
&lt;P&gt;At deployment time:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The pipeline retrieves the secret&lt;/LI&gt;
&lt;LI&gt;The placeholder is replaced&lt;/LI&gt;
&lt;LI&gt;Kubernetes receives the rendered manifest&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Operationally, this means:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;the pipeline temporarily possesses the secret&lt;/LI&gt;
&lt;LI&gt;the rendered YAML contains the secret&lt;/LI&gt;
&lt;LI&gt;logs or artifacts may accidentally retain it&lt;/LI&gt;
&lt;LI&gt;secret rotation requires redeployment&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This often exists because:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Key Vault secret names don't match application configuration names&lt;/LI&gt;
&lt;LI&gt;teams want backward compatibility&lt;/LI&gt;
&lt;LI&gt;changing application code is expensive&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The Azure Key Vault CSI Driver solves this by introducing a runtime mapping layer instead of a pipeline substitution layer.&lt;/P&gt;
&lt;H2&gt;What We Wanted to Achieve&lt;/H2&gt;
&lt;P&gt;The design goals were simple:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;No secret values in YAML&lt;/LI&gt;
&lt;LI&gt;No secret substitution in CI/CD pipelines&lt;/LI&gt;
&lt;LI&gt;Runtime-only secret retrieval&lt;/LI&gt;
&lt;LI&gt;Identity-based authentication&lt;/LI&gt;
&lt;LI&gt;Support for mapping Key Vault names to application config names&lt;/LI&gt;
&lt;LI&gt;Minimal or zero application code changes&lt;/LI&gt;
&lt;LI&gt;Secure secret rotation workflows&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Architecture Overview&lt;/H2&gt;
&lt;LI-CODE lang="mermaid"&gt;+----------------------+
|   AKS Application    |
|        Pod           |
+----------+-----------+
           |
           v
+----------------------+
| Kubernetes           |
| ServiceAccount       |
+----------+-----------+
           |
           v
+----------------------+
| AKS Workload         |
| Identity Webhook     |
+----------+-----------+
           |
           v
+----------------------+
| Federated Managed    |
| Identity             |
+----------+-----------+
           |
           v
+----------------------+
| Azure Key Vault      |
+----------+-----------+
           |
           v
+----------------------+
| CSI Driver Mount     |
| (/mnt/secrets-store) |
+----------+-----------+
           |
           v
+----------------------+
| Application Reads    |
| Secret at Runtime    |
+----------------------+
&lt;/LI-CODE&gt;
&lt;H2&gt;How the Flow Works&lt;/H2&gt;
&lt;P&gt;When a pod starts:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The pod uses a Kubernetes ServiceAccount&lt;/LI&gt;
&lt;LI&gt;AKS Workload Identity injects an OIDC token&lt;/LI&gt;
&lt;LI&gt;The Secrets Store CSI Driver uses that token&lt;/LI&gt;
&lt;LI&gt;Azure validates the federated identity relationship&lt;/LI&gt;
&lt;LI&gt;The Managed Identity receives access to Key Vault&lt;/LI&gt;
&lt;LI&gt;Secrets are retrieved at runtime&lt;/LI&gt;
&lt;LI&gt;Secrets become available&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This entire process happens dynamically during pod startup.&lt;/P&gt;
&lt;P&gt;No secret values pass through:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;YAML manifests&lt;/LI&gt;
&lt;LI&gt;pipeline variables&lt;/LI&gt;
&lt;LI&gt;Helm values&lt;/LI&gt;
&lt;LI&gt;release artifacts&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The pod authenticates as itself.&lt;/P&gt;
&lt;H2&gt;Implementation Prerequisites&lt;/H2&gt;
&lt;P&gt;Before implementation, ensure:&lt;/P&gt;
&lt;P&gt;Requirement - Purpose&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AKS Cluster - Runtime environment&lt;/LI&gt;
&lt;LI&gt;Azure Key Vault - Centralized secret store&lt;/LI&gt;
&lt;LI&gt;OIDC Enabled - Required for federation&lt;/LI&gt;
&lt;LI&gt;Workload Identity Enabled - Enables identity injection&lt;/LI&gt;
&lt;LI&gt;Managed Identity - Authentication mechanism&lt;/LI&gt;
&lt;LI&gt;Secrets Store CSI Driver - Runtime secret retrieval&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Implementation&lt;/H2&gt;
&lt;P&gt;The implementation can generally be divided into two phases:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Platform Setup&lt;/STRONG&gt; - One-time AKS and Azure configuration performed by platform/infrastructure teams&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Application Onboarding&lt;/STRONG&gt; - Per-service configuration performed by application teams&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This separation is important because most of the complexity exists only once at the platform layer. After the foundational setup is complete, onboarding additional workloads becomes significantly simpler and more repeatable.&lt;/P&gt;
&lt;P&gt;The examples below are intended to demonstrate the overall implementation pattern and architecture flow. Exact implementation details may vary depending on:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;organizational RBAC models&lt;/LI&gt;
&lt;LI&gt;networking restrictions&lt;/LI&gt;
&lt;LI&gt;Key Vault access configuration&lt;/LI&gt;
&lt;LI&gt;GitOps/Helm workflows&lt;/LI&gt;
&lt;LI&gt;cluster governance policies&lt;/LI&gt;
&lt;LI&gt;AKS versions and add-on configurations&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Phase 1 — Platform Setup&lt;/H2&gt;
&lt;H2&gt;1. Enable Required AKS Capabilities&lt;/H2&gt;
&lt;P&gt;A typical implementation starts by enabling the AKS capabilities required for identity federation and runtime secret retrieval.&lt;/P&gt;
&lt;P&gt;These usually include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;OIDC Issuer - Enables identity federation between AKS and Microsoft Entra ID&lt;/LI&gt;
&lt;LI&gt;Workload Identity - Injects federated identity tokens into workloads&lt;/LI&gt;
&lt;LI&gt;Azure Key Vault CSI Driver - Retrieves secrets securely at runtime&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Example Azure CLI commands:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;az aks update \
  --resource-group &amp;lt;resource-group&amp;gt; \
  --name &amp;lt;aks-cluster&amp;gt; \
  --enable-oidc-issuer \
  --enable-workload-identity&lt;/LI-CODE&gt;&lt;LI-CODE lang="bash"&gt;az aks enable-addons \
  --addons azure-keyvault-secrets-provider \
  --resource-group &amp;lt;resource-group&amp;gt; \
  --name &amp;lt;aks-cluster&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;Most organizations validate these capabilities before onboarding workloads.&lt;/P&gt;
&lt;H2&gt;2. Configure a Managed Identity&lt;/H2&gt;
&lt;P&gt;Each workload or application typically receives its own User-Assigned Managed Identity.&lt;/P&gt;
&lt;P&gt;This follows least-privilege principles and helps reduce operational blast radius between services.&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;az identity create \
  --name workload-identity \
  --resource-group &amp;lt;resource-group&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;The identity is then granted access to retrieve secrets from Azure Key Vault.&lt;/P&gt;
&lt;P&gt;Common approaches include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure RBAC role assignments&lt;/LI&gt;
&lt;LI&gt;Azure AD group-based access&lt;/LI&gt;
&lt;LI&gt;Key Vault access policies (legacy environments)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Typical required permissions include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Get&lt;/LI&gt;
&lt;LI&gt;List&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;for secrets stored in the vault.&lt;/P&gt;
&lt;H2&gt;3. Configure Federated Identity Trust&lt;/H2&gt;
&lt;P&gt;Workload Identity relies on federation between:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AKS&lt;/LI&gt;
&lt;LI&gt;Kubernetes ServiceAccounts&lt;/LI&gt;
&lt;LI&gt;Microsoft Entra ID&lt;/LI&gt;
&lt;LI&gt;Managed Identities&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;A Federated Identity Credential establishes this trust relationship.&lt;/P&gt;
&lt;P&gt;The implementation usually maps:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;a Kubernetes namespace&lt;/LI&gt;
&lt;LI&gt;a Kubernetes ServiceAccount&lt;/LI&gt;
&lt;LI&gt;an AKS OIDC issuer&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;to a specific Managed Identity.&lt;/P&gt;
&lt;P&gt;Example structure:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;system:serviceaccount:&amp;lt;namespace&amp;gt;:&amp;lt;serviceaccount&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;This configuration is one of the most important parts of the setup because federation mismatches are a very common source of authentication failures.&lt;/P&gt;
&lt;H2&gt;4. Prepare Kubernetes Namespaces and ServiceAccounts&lt;/H2&gt;
&lt;P&gt;Application namespaces and ServiceAccounts are typically created before workload onboarding begins.&lt;/P&gt;
&lt;P&gt;The ServiceAccount acts as the identity boundary for the workload.&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;apiVersion: v1
kind: ServiceAccount
metadata:
  name: workload-sa
  namespace: application-namespace
  annotations:
    azure.workload.identity/client-id: "&amp;lt;managed-identity-client-id&amp;gt;"&lt;/LI-CODE&gt;
&lt;P&gt;This annotation links the Kubernetes ServiceAccount to the Azure Managed Identity.&lt;/P&gt;
&lt;H2&gt;Phase 2 — Application Onboarding&lt;/H2&gt;
&lt;P&gt;Once the platform capabilities are available, application onboarding becomes significantly simpler.&lt;/P&gt;
&lt;H2&gt;5. Define Secret Retrieval Using SecretProviderClass&lt;/H2&gt;
&lt;P&gt;The SecretProviderClass resource defines:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;which Key Vault secrets should be retrieved&lt;/LI&gt;
&lt;LI&gt;how those secrets should be exposed inside Kubernetes&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: workload-kv-secrets
  namespace: application-namespace

spec:
  provider: azure

  parameters:
    usePodIdentity: "false"
    clientID: "&amp;lt;managed-identity-client-id&amp;gt;"
    keyvaultName: "&amp;lt;keyvault-name&amp;gt;"
    tenantId: "&amp;lt;tenant-id&amp;gt;"

    objects: |
      array:
        - |
          objectName: application-secret
          objectType: secret

  secretObjects:
  - secretName: workload-secret
    type: Opaque
    data:
    - key: APPLICATION_SECRET
      objectName: application-secret&lt;/LI-CODE&gt;
&lt;P&gt;A few important concepts exist here:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;objects - Defines which Key Vault secrets to retrieve&lt;/LI&gt;
&lt;LI&gt;secretObjects - Optionally syncs secrets into Kubernetes Secrets&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This separation allows:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Key Vault secret naming&lt;/LI&gt;
&lt;LI&gt;Kubernetes secret naming&lt;/LI&gt;
&lt;LI&gt;application environment variable naming&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;to remain independent from one another.&lt;/P&gt;
&lt;P&gt;That flexibility is one of the biggest advantages of the CSI Driver approach.&lt;/P&gt;
&lt;H2&gt;6. Update Workloads to Use Workload Identity&lt;/H2&gt;
&lt;P&gt;Application deployments are then updated to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;use the correct ServiceAccount&lt;/LI&gt;
&lt;LI&gt;enable Workload Identity&lt;/LI&gt;
&lt;LI&gt;mount the CSI volume&lt;/LI&gt;
&lt;LI&gt;optionally consume synced Kubernetes Secrets&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Typical workload changes include:&lt;/P&gt;
&lt;H3&gt;Enable Workload Identity&lt;/H3&gt;
&lt;LI-CODE lang="yaml"&gt;labels:
  azure.workload.identity/use: "true"&lt;/LI-CODE&gt;
&lt;P&gt;Without this label:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;token injection does not occur&lt;/LI&gt;
&lt;LI&gt;workload federation fails&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Attach the ServiceAccount&lt;/H3&gt;
&lt;LI-CODE lang="yaml"&gt;serviceAccountName: workload-sa&lt;/LI-CODE&gt;
&lt;H3&gt;Mount the CSI Volume&lt;/H3&gt;
&lt;LI-CODE lang="yaml"&gt;volumes:
- name: secrets-store
  csi:
    driver: secrets-store.csi.k8s.io
    readOnly: true
    volumeAttributes:
      secretProviderClass: "workload-kv-secrets"&lt;/LI-CODE&gt;&lt;LI-CODE lang="yaml"&gt;volumeMounts:
- name: secrets-store
  mountPath: "/mnt/secrets-store"
  readOnly: true&lt;/LI-CODE&gt;
&lt;P&gt;Even if the application ultimately consumes secrets through environment variables, the CSI volume still needs to be mounted because the Kubernetes Secret synchronization occurs only after a successful mount.&lt;/P&gt;
&lt;H3&gt;Consume Secrets Inside the Application&lt;/H3&gt;
&lt;P&gt;Applications can consume secrets:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;directly as mounted files&lt;/LI&gt;
&lt;LI&gt;or through synced Kubernetes Secrets using secretKeyRef&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;env:
- name: APPLICATION_SECRET
  valueFrom:
    secretKeyRef:
      name: workload-secret
      key: APPLICATION_SECRET&lt;/LI-CODE&gt;
&lt;P&gt;One of the biggest operational advantages here is that applications usually require little or no code change.&lt;/P&gt;
&lt;P&gt;The application still reads:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;environment variables&lt;/LI&gt;
&lt;LI&gt;configuration values&lt;/LI&gt;
&lt;LI&gt;mounted files&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The underlying secret delivery mechanism changes — not the application contract.&lt;/P&gt;
&lt;H2&gt;7. Validate the Integration&lt;/H2&gt;
&lt;P&gt;Once deployed, teams typically validate:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;pod startup success&lt;/LI&gt;
&lt;LI&gt;successful CSI volume mounts&lt;/LI&gt;
&lt;LI&gt;secret retrieval from Key Vault&lt;/LI&gt;
&lt;LI&gt;environment variable injection&lt;/LI&gt;
&lt;LI&gt;workload authentication&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Common validation activities include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;inspecting mounted secret paths&lt;/LI&gt;
&lt;LI&gt;checking pod logs&lt;/LI&gt;
&lt;LI&gt;reviewing CSI Driver logs&lt;/LI&gt;
&lt;LI&gt;confirming Key Vault access logs&lt;/LI&gt;
&lt;LI&gt;validating Workload Identity token injection&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Most implementation issues generally fall into one of these categories:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Federated Identity Credential mismatches&lt;/LI&gt;
&lt;LI&gt;missing workload labels&lt;/LI&gt;
&lt;LI&gt;Key Vault permission issues&lt;/LI&gt;
&lt;LI&gt;incorrect ServiceAccount mappings&lt;/LI&gt;
&lt;LI&gt;missing CSI volume mounts&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Operational Recommendation&lt;/H2&gt;
&lt;P&gt;For production environments, many organizations also add:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;automated secret rotation handling&lt;/LI&gt;
&lt;LI&gt;restart controllers such as Stakater Reloader&lt;/LI&gt;
&lt;LI&gt;readiness probes&lt;/LI&gt;
&lt;LI&gt;rolling deployment strategies&lt;/LI&gt;
&lt;LI&gt;monitoring and alerting around secret retrieval failures&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These additions help ensure secret updates can occur safely with minimal or zero downtime.&lt;/P&gt;
&lt;H2&gt;Understanding the YAML Components&lt;/H2&gt;
&lt;P&gt;The implementation consists of three connected resources:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ServiceAccount - Identity binding&lt;/LI&gt;
&lt;LI&gt;SecretProviderClass - Secret retrieval definition&lt;/LI&gt;
&lt;LI&gt;Deployment - Secret consumption&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Think of them as a chain:&lt;/P&gt;
&lt;LI-CODE lang="mermaid"&gt;ServiceAccount
   ↓
Managed Identity
   ↓
SecretProviderClass
   ↓
CSI Driver
   ↓
Deployment&lt;/LI-CODE&gt;
&lt;P&gt;If any naming mismatch exists, secret retrieval fails.&lt;/P&gt;
&lt;P&gt;Consistency matters.&lt;/P&gt;
&lt;H2&gt;Secret Rotation and Reloaders&lt;/H2&gt;
&lt;P&gt;One major operational advantage is secret rotation.&lt;/P&gt;
&lt;P&gt;Previously:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Update secret&lt;/LI&gt;
&lt;LI&gt;Update pipeline variable&lt;/LI&gt;
&lt;LI&gt;Redeploy application&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Now:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Rotate secret in Key Vault&lt;/LI&gt;
&lt;LI&gt;CSI driver refreshes mounted content&lt;/LI&gt;
&lt;LI&gt;Application consumes updated value&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For applications using environment variables:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;pod restarts are usually required&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Many teams use:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Stakater Reloader&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;to automatically restart workloads when secrets change.&lt;/P&gt;
&lt;P&gt;Combined with:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;multiple replicas&lt;/LI&gt;
&lt;LI&gt;readiness probes&lt;/LI&gt;
&lt;LI&gt;rolling deployments&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;this enables zero-downtime secret refresh workflows.&lt;/P&gt;
&lt;H2&gt;Common Pitfalls and Troubleshooting&lt;/H2&gt;
&lt;H3&gt;Federated Credential Subject Mismatch&lt;/H3&gt;
&lt;P&gt;Most common issue.&lt;/P&gt;
&lt;P&gt;The subject must exactly match:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;system:serviceaccount:&amp;lt;namespace&amp;gt;:&amp;lt;serviceaccount&amp;gt;&lt;/LI-CODE&gt;
&lt;H3&gt;Missing Workload Identity Label&lt;/H3&gt;
&lt;P&gt;This label is mandatory:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;azure.workload.identity/use: "true"
&lt;/LI-CODE&gt;
&lt;P&gt;Without it:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;no token injection occurs&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Missing CSI Volume Mount&lt;/H3&gt;
&lt;P&gt;Even if using:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;secretKeyRef&lt;/LI-CODE&gt;
&lt;P&gt;the CSI volume must still be mounted.&lt;/P&gt;
&lt;P&gt;Otherwise:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Kubernetes Secret sync never occurs&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Key Vault Permission Issues&lt;/H3&gt;
&lt;P&gt;Federation success does not guarantee Key Vault authorization.&lt;/P&gt;
&lt;P&gt;The Managed Identity still requires:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Get&lt;/LI&gt;
&lt;LI&gt;List&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;permissions on the vault.&lt;/P&gt;
&lt;H3&gt;Environment Variables Do Not Auto-Refresh&lt;/H3&gt;
&lt;P&gt;Secrets mounted as files can refresh dynamically depending on application behavior.&lt;/P&gt;
&lt;P&gt;Environment variables do not.&lt;/P&gt;
&lt;P&gt;If using:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;secretKeyRef&lt;/LI-CODE&gt;
&lt;P&gt;consider:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Reloader controllers&lt;/LI&gt;
&lt;LI&gt;rolling restart strategies&lt;/LI&gt;
&lt;LI&gt;readiness probes&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;to safely consume rotated secrets.&lt;/P&gt;
&lt;H2&gt;Security and Operational Benefits&lt;/H2&gt;
&lt;P&gt;After migration, several improvements become immediately visible:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;No secret values in YAML&lt;/LI&gt;
&lt;LI&gt;No secret values in pipelines&lt;/LI&gt;
&lt;LI&gt;Runtime-only secret resolution&lt;/LI&gt;
&lt;LI&gt;Per-service identity isolation&lt;/LI&gt;
&lt;LI&gt;Centralized audit visibility in Azure&lt;/LI&gt;
&lt;LI&gt;Easier secret rotation&lt;/LI&gt;
&lt;LI&gt;Reduced operational blast radius&lt;/LI&gt;
&lt;LI&gt;Cleaner DevSecOps posture&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Most importantly:&lt;/P&gt;
&lt;P&gt;The deployment pipeline stops being part of the secret distribution mechanism.&lt;/P&gt;
&lt;H2&gt;Key Takeaways&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Secrets should never flow through deployment pipelines&lt;/LI&gt;
&lt;LI&gt;Workload Identity removes the need for static credentials&lt;/LI&gt;
&lt;LI&gt;CSI Driver enables runtime secret retrieval directly from Key Vault&lt;/LI&gt;
&lt;LI&gt;SecretProviderClass allows clean secret name mapping&lt;/LI&gt;
&lt;LI&gt;File-based secret consumption is more secure than environment variables&lt;/LI&gt;
&lt;LI&gt;Secret rotation becomes operationally simpler and safer&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Microsoft Documentation References&lt;/H2&gt;
&lt;P&gt;Official Microsoft guidance:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AKS Workload Identity &lt;A href="https://learn.microsoft.com/azure/aks/workload-identity-overview" target="_blank"&gt;https://learn.microsoft.com/azure/aks/workload-identity-overview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Azure Key Vault Provider for Secrets Store CSI Driver &lt;A href="https://learn.microsoft.com/azure/aks/csi-secrets-store-driver" target="_blank"&gt;https://learn.microsoft.com/azure/aks/csi-secrets-store-driver&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Secrets Store CSI Driver &lt;A href="https://secrets-store-csi-driver.sigs.k8s.io/" target="_blank"&gt;https://secrets-store-csi-driver.sigs.k8s.io/&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Federated Identity Credentials &lt;A href="https://learn.microsoft.com/entra/workload-id/workload-identity-federation" target="_blank"&gt;https://learn.microsoft.com/entra/workload-id/workload-identity-federation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These references are extremely useful when troubleshooting federation, RBAC, or CSI mounting issues.&lt;/P&gt;
&lt;H2&gt;Final Thoughts&lt;/H2&gt;
&lt;P&gt;The Azure Key Vault CSI Driver + Workload Identity pattern fundamentally changes how secrets flow through AKS environments.&lt;/P&gt;
&lt;P&gt;Instead of distributing secrets through:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;YAML&lt;/LI&gt;
&lt;LI&gt;CI/CD systems&lt;/LI&gt;
&lt;LI&gt;deployment artifacts&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;secrets remain protected behind:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;identities&lt;/LI&gt;
&lt;LI&gt;runtime authorization&lt;/LI&gt;
&lt;LI&gt;centralized access control&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The initial setup is slightly more involved than pipeline substitution, but once the platform foundations are established, onboarding additional workloads becomes lightweight and repeatable.&lt;/P&gt;
&lt;P&gt;This is one of the highest-leverage security improvements available for Kubernetes platforms because it removes an entire category of secret exposure risk without requiring major application rewrites.&lt;/P&gt;
&lt;P&gt;Secrets belong to identities — not deployment manifests.&lt;/P&gt;
&lt;P&gt;#Azure #AKS #Kubernetes #DevSecOps #CloudSecurity #KeyVault #WorkloadIdentity #PlatformEngineering&lt;/P&gt;</description>
      <pubDate>Mon, 08 Jun 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/getting-secrets-out-of-yaml-implementing-azure-key-vault-csi/ba-p/4522590</guid>
      <dc:creator>anandranjan</dc:creator>
      <dc:date>2026-06-08T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Harness-Driven Agents: Secure Podcast Pipeline in Hyperlight MicroVM Sandbox</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/harness-driven-agents-secure-podcast-pipeline-in-hyperlight/ba-p/4525512</link>
      <description>&lt;H2 data-line="10"&gt;The moment the agent reached for rm -rf&lt;/H2&gt;
&lt;P data-line="12"&gt;For most of 2024 and 2025, "agents" were a demo word. By 2026 they are something you run — autonomously, in a loop, executing code they wrote themselves a second ago.&lt;/P&gt;
&lt;P data-line="14"&gt;I was watching one work late one night. I had given it a goal, a handful of tools, and the freedom to write and run its own Python. For twenty minutes it was magic: read a file, reason about it, write a script, run it, inspect the output, correct itself, try again. Then it produced this:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import shutil
shutil.rmtree("/")   # "cleaning up temporary files"&lt;/LI-CODE&gt;
&lt;P data-line="21"&gt;It was trying to be helpful — it had decided the workspace was cluttered and wanted a clean start. The "workspace," as far as that process was concerned, was my entire machine.&lt;/P&gt;
&lt;P data-line="23"&gt;I killed it in time. But the lesson is the one every agent builder eventually arrives at:&amp;nbsp;&lt;STRONG&gt;the model is not the dangerous part — the execution is.&lt;/STRONG&gt;&amp;nbsp;A chatbot that answers wrong is annoying. An agent that fetches a web page, runs code, and writes files has a&amp;nbsp;&lt;EM&gt;blast radius&lt;/EM&gt;. The bounding box has to come from infrastructure, not from a system prompt.&lt;/P&gt;
&lt;P data-line="25"&gt;harnessagent_sandbox_demo&amp;nbsp;is a concrete build that puts that bounding box in exactly the right place — and it does it in service of a real, charming little product:&amp;nbsp;&lt;STRONG&gt;a daily five-minute Mandarin podcast about the FIFA World Cup 2026.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 data-line="29"&gt;The scenario: a daily World Cup podcast, written by agents&lt;/H2&gt;
&lt;P data-line="31"&gt;Strip away the infrastructure for a second and look at what this thing actually&amp;nbsp;&lt;EM&gt;does&lt;/EM&gt;.&lt;/P&gt;
&lt;P data-line="33"&gt;Every day it produces a fresh Mandarin podcast script about the FIFA World Cup 2026. Three LLM agents run in sequence:&lt;/P&gt;
&lt;OL data-line="35"&gt;
&lt;LI data-line="35"&gt;&lt;STRONG&gt;SearchAgent&lt;/STRONG&gt;&amp;nbsp;— goes out and gathers the day's World Cup news.&lt;/LI&gt;
&lt;LI data-line="36"&gt;&lt;STRONG&gt;ContentAgent&lt;/STRONG&gt;&amp;nbsp;— turns that raw material into structured podcast content.&lt;/LI&gt;
&lt;LI data-line="37"&gt;&lt;STRONG&gt;GenScriptAgent&lt;/STRONG&gt;&amp;nbsp;— writes the final, readable five-minute script.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="39"&gt;The output is two text files — one in&amp;nbsp;&lt;STRONG&gt;Simplified Chinese&lt;/STRONG&gt;, one in&amp;nbsp;&lt;STRONG&gt;Traditional Chinese&lt;/STRONG&gt;:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.simple.zh.txt
./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.tranditional.zh.txt&lt;/LI-CODE&gt;
&lt;P data-line="46"&gt;That's the whole product. It sounds simple — and the point of the project is that making it&amp;nbsp;&lt;EM&gt;safe&lt;/EM&gt;&amp;nbsp;is the hard part. SearchAgent has to reach the open internet. All three agents write and run code. If you wire that naively, you have just built the exact machine that types&amp;nbsp;shutil.rmtree("/")&amp;nbsp;for you. So the entire architecture is organized around one principle:&amp;nbsp;&lt;STRONG&gt;the agents get to do real work, but every dangerous capability is fenced behind a hardware boundary.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 data-line="50"&gt;Why the obvious sandboxes fall short for agents&lt;/H2&gt;
&lt;P data-line="52"&gt;An agent is&amp;nbsp;&lt;EM&gt;defined&lt;/EM&gt;&amp;nbsp;by an act-observe-correct loop running untrusted, model-generated code over and over. That single property breaks most conventional isolation choices.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Option&lt;/th&gt;&lt;th&gt;Why it falls short for agents&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;No sandbox&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;One&amp;nbsp;rm -rf, one leaked&amp;nbsp;.env, one rogue network call — the blast radius is the whole machine.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Container&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Great for shipping apps, but a coding agent wants to&amp;nbsp;&lt;EM&gt;build and run its own container&lt;/EM&gt;, which means Docker-in-Docker and elevated privileges that quietly undo the isolation.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;WASM / V8 isolate&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Fast to start, but you isolate a&amp;nbsp;&lt;EM&gt;language runtime&lt;/EM&gt;, not an&amp;nbsp;&lt;EM&gt;OS&lt;/EM&gt;&amp;nbsp;— no system packages, no arbitrary shell, and hardening the engine is a moving target.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Full VM&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Rock-solid isolation, but cold starts in seconds and heavy memory — exactly the friction that pushes developers to skip isolation entirely.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="61"&gt;Each option trades away safety, speed, or compatibility. A podcast pipeline that runs every day, spinning agents up and down, needs all three at once:&lt;/P&gt;
&lt;UL data-line="63"&gt;
&lt;LI data-line="63"&gt;&lt;STRONG&gt;A real environment&lt;/STRONG&gt;&amp;nbsp;— to fetch URLs, run shells, call tools.&lt;/LI&gt;
&lt;LI data-line="64"&gt;&lt;STRONG&gt;A hard boundary&lt;/STRONG&gt;&amp;nbsp;— so a bad step can't reach the host.&lt;/LI&gt;
&lt;LI data-line="65"&gt;&lt;STRONG&gt;Near-instant lifecycle&lt;/STRONG&gt;&amp;nbsp;— because a slow sandbox is a sandbox developers skip, and an unused safety feature protects nobody.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="69"&gt;The MicroVM answer, embedded as a library: Hyperlight&lt;/H2&gt;
&lt;P data-line="71"&gt;A&amp;nbsp;&lt;STRONG&gt;MicroVM&lt;/STRONG&gt;&amp;nbsp;gives each workload its own kernel and a hardware-enforced boundary — the isolation strength of a full VM — stripped down to start in&amp;nbsp;&lt;EM&gt;milliseconds&lt;/EM&gt;&amp;nbsp;and tear down just as fast. Misbehave inside, and you hit a wall; there is no path back to the host. And it is disposable by design: when an agent goes off the rails, you delete the sandbox and reopen in milliseconds, with nothing to clean up.&lt;/P&gt;
&lt;P data-line="73"&gt;Most MicroVM runtimes (Firecracker and friends) are cloud infrastructure — server-side.&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://github.com/hyperlight-dev/hyperlight" target="_blank" rel="noopener" data-href="https://github.com/hyperlight-dev/hyperlight"&gt;Hyperlight&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;is different: a lightweight Virtual Machine Manager (a CNCF sandbox project) designed to be&amp;nbsp;&lt;EM&gt;embedded inside your application&lt;/EM&gt;, like a library.&lt;/P&gt;
&lt;UL data-line="75"&gt;
&lt;LI data-line="75"&gt;&lt;STRONG&gt;MicroVMs that boot in milliseconds&lt;/STRONG&gt;, with guest function calls completing in&amp;nbsp;&lt;STRONG&gt;microseconds&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI data-line="76"&gt;&lt;STRONG&gt;No guest kernel, no OS&lt;/STRONG&gt;&amp;nbsp;— the guest is a purpose-built&amp;nbsp;no_std&amp;nbsp;Rust/C binary. Nothing in there to attack.&lt;/LI&gt;
&lt;LI data-line="77"&gt;&lt;STRONG&gt;Sandboxed by default&lt;/STRONG&gt;&amp;nbsp;— no filesystem, no network, nothing, unless explicitly granted.&lt;/LI&gt;
&lt;LI data-line="78"&gt;&lt;STRONG&gt;Typed function calls across the VM boundary&lt;/STRONG&gt;, and&amp;nbsp;&lt;STRONG&gt;snapshot/restore&lt;/STRONG&gt;&amp;nbsp;to rewind to a clean state between calls.&lt;/LI&gt;
&lt;LI data-line="79"&gt;&lt;STRONG&gt;Runs on KVM, MSHV (Microsoft Hypervisor), and Windows Hypervisor Platform.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="81"&gt;This project uses the&amp;nbsp;&lt;STRONG&gt;Wasm backend&lt;/STRONG&gt;: the three agents share a single&amp;nbsp;HyperlightRuntime, and the guest is reset to a clean snapshot&amp;nbsp;&lt;EM&gt;before every code execution&lt;/EM&gt;. That detail is what makes a daily, many-step pipeline cheap — you capture the sandbox state once and rewind to it, instead of rebuilding a VM hundreds of times.&lt;/P&gt;
&lt;H2 data-line="85"&gt;Agent = Model + Harness&lt;/H2&gt;
&lt;P data-line="87"&gt;The community has converged on a simple equation:&amp;nbsp;&lt;STRONG&gt;Agent = Model + Harness.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="89"&gt;The&amp;nbsp;&lt;STRONG&gt;model&lt;/STRONG&gt;&amp;nbsp;is a brain in a jar — text in, text out, no memory between calls, no loop, no hands. It can&amp;nbsp;&lt;EM&gt;express the intent&lt;/EM&gt;&amp;nbsp;to call a tool; it cannot actually call it.&lt;/P&gt;
&lt;P data-line="91"&gt;The&amp;nbsp;&lt;STRONG&gt;harness&lt;/STRONG&gt;&amp;nbsp;is the execution layer: it calls the model, handles its tool calls, and decides when to stop. As the Hugging Face glossary puts it,&amp;nbsp;&lt;EM&gt;"if you're not the model, you're the harness."&lt;/EM&gt;&lt;/P&gt;
&lt;P data-line="93"&gt;That reframes the safety problem precisely. When my agent emitted&amp;nbsp;shutil.rmtree("/"), the model deleted nothing — it merely&amp;nbsp;&lt;EM&gt;suggested&lt;/EM&gt;.&amp;nbsp;&lt;STRONG&gt;The harness would have run it.&lt;/STRONG&gt;&amp;nbsp;The harness is where reasoning meets reality, so it is exactly where safety must live. The question stops being "how do I make the model safer?" and becomes:&amp;nbsp;&lt;STRONG&gt;how do I build a harness that executes the model's intent inside a boundary it cannot escape?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="95"&gt;The&amp;nbsp;&lt;A href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/" target="_blank" rel="noopener" data-href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/"&gt;Microsoft Agent Framework&lt;/A&gt;&amp;nbsp;answers that with first-class&amp;nbsp;&lt;STRONG&gt;agent harness&lt;/STRONG&gt;&amp;nbsp;capabilities in Python and .NET, and it ships with one security note stated plainly:&lt;/P&gt;
&lt;P data-line="97"&gt;&lt;EM&gt;For local shell execution, we recommend running this logic in an isolated environment and keeping explicit approval in place before commands are allowed to run.&lt;/EM&gt;&lt;/P&gt;
&lt;P data-line="99"&gt;The harness is the steering wheel — it does not pretend to be the seatbelt and the crumple zone. For that, it points you outward:&amp;nbsp;&lt;EM&gt;run this somewhere isolated.&lt;/EM&gt;&amp;nbsp;Hyperlight is that isolated somewhere. This project snaps the two pieces together.&lt;/P&gt;
&lt;H2 data-line="103"&gt;The architecture: two planes, one bridge&lt;/H2&gt;
&lt;P data-line="105"&gt;Here is the heart of the design. Two planes run together every episode:&lt;/P&gt;
&lt;UL data-line="107"&gt;
&lt;LI data-line="107"&gt;An&amp;nbsp;&lt;STRONG&gt;orchestration plane on the host&lt;/STRONG&gt;&amp;nbsp;— the&amp;nbsp;WorkflowBuilder&amp;nbsp;graph, the LLM clients, and the deterministic save step.&lt;/LI&gt;
&lt;LI data-line="108"&gt;An&amp;nbsp;&lt;STRONG&gt;execution plane inside one Hyperlight Wasm sandbox&lt;/STRONG&gt;&amp;nbsp;— the&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;place LLM-generated code is allowed to run.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="110"&gt;The single bridge between them is one call: call_tool("fetch_url", ...).&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="145"&gt;The mapping to layers:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Layer&lt;/th&gt;&lt;th&gt;Component&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Model&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure AI Foundry via&amp;nbsp;FoundryChatClient&amp;nbsp;(AzureCliCredential)&lt;/td&gt;&lt;td&gt;The reasoning brain behind each harness agent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Agent runtime&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Microsoft Agent Framework&amp;nbsp;create_harness_agent&lt;/td&gt;&lt;td&gt;Drives the model, advertises skills, handles tool calls, decides when to stop&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Orchestration&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;WorkflowBuilder&amp;nbsp;graph&lt;/td&gt;&lt;td&gt;prepare → SearchAgent → adapt → ContentAgent → adapt → GenScriptAgent → save_scripts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Code execution&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;CodeAct provider&lt;/td&gt;&lt;td&gt;Runs model-written code via the one&amp;nbsp;execute_code&amp;nbsp;tool — inside the MicroVM, never on the host&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Isolation&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Hyperlight Wasm MicroVM&lt;/td&gt;&lt;td&gt;One shared&amp;nbsp;HyperlightRuntime; clean snapshot restored before every&amp;nbsp;execute_code&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Host tool&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;fetch_url&amp;nbsp;(sandbox/podcast_tools.py)&lt;/td&gt;&lt;td&gt;The&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;network path; urllib + a&amp;nbsp;&lt;STRONG&gt;BBC-only&lt;/STRONG&gt;&amp;nbsp;allow-list&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Persistence&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;save_scripts&amp;nbsp;Executor&lt;/td&gt;&lt;td&gt;Deterministic, no LLM — parses two fenced blocks and writes the two output files&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2 data-line="159"&gt;The four invariants that make it safe&lt;/H2&gt;
&lt;P data-line="161"&gt;The README is explicit about what the diagram guarantees. These four invariants are the whole security argument.&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-line="163"&gt;&lt;STRONG&gt; The model never sees the network.&lt;/STRONG&gt;Its only tool isexecute_code. Network access happens&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;when the guest itself runs&amp;nbsp;call_tool("fetch_url", ...)&amp;nbsp;from inside the sandbox. The model cannot reach the internet directly — it can only ask the guest to, and the guest can only reach BBC.&lt;/LI&gt;
&lt;LI data-line="165"&gt;&lt;STRONG&gt; One sandbox per run, snapshot per call.&lt;/STRONG&gt;All three agents share the sameHyperlightRuntime. Before every&amp;nbsp;execute_code, the guest is reset to a clean snapshot — so nothing one step does can leak into the next, and there is no VM to rebuild.&lt;/LI&gt;
&lt;LI data-line="167"&gt;&lt;STRONG&gt; Two counter paths — and why there are two.&lt;/STRONG&gt;Thefunction_middleware&amp;nbsp;(make_tool_call_recorder) sees the model-direct&amp;nbsp;execute_code&amp;nbsp;calls. But the&amp;nbsp;&lt;EM&gt;inner&lt;/EM&gt;, guest-initiated&amp;nbsp;fetch_url&amp;nbsp;is dispatched by Hyperlight straight to the&amp;nbsp;FunctionTool, bypassing the middleware entirely. So a second counter —&amp;nbsp;make_call_tool_counter(on_call=)&amp;nbsp;— bumps&amp;nbsp;state["tool_call_counts"][&amp;lt;agent&amp;gt;]["fetch_url"]&amp;nbsp;on every guest invocation. Two observation points, because the architecture has two genuinely different call surfaces.&lt;/LI&gt;
&lt;LI data-line="169"&gt;&lt;STRONG&gt; Deterministic save — no LLM in the persistence step.&lt;/STRONG&gt;GenScriptAgentonly emits text. The&amp;nbsp;save_scripts&amp;nbsp;Executor parses the two fenced code blocks out of that text and writes the simplified and traditional files itself. There is no model in the loop when bytes hit disk, so the output path is fully predictable.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2 data-line="173"&gt;Now let's look at the real code surface&lt;/H2&gt;
&lt;P data-line="175"&gt;The README documents the API the demo is built on. The snippets below reflect that surface.&lt;/P&gt;
&lt;H3 data-line="177"&gt;1. Install and environment&lt;/H3&gt;
&lt;LI-CODE lang="bash"&gt;pip install agent-framework-hyperlight --pre&lt;/LI-CODE&gt;&lt;LI-CODE lang=""&gt;# Hyperlight needs a hypervisor: KVM on Linux, WHP on Windows. macOS is not yet supported.
# The model runs on Azure AI Foundry; FoundryChatClient authenticates via AzureCliCredential.
az login
export HYPERLIGHT_PYTHON_GUEST_PATH="/path/to/python_guest"&lt;/LI-CODE&gt;
&lt;H3 data-line="190"&gt;2. A harness agent that carries only a stub — skills do the rest&lt;/H3&gt;
&lt;P&gt;Each of the three agents is built with&amp;nbsp;create_harness_agent&amp;nbsp;+&amp;nbsp;FoundryChatClient. The agents themselves carry only a&amp;nbsp;&lt;EM&gt;tiny stub instruction&lt;/EM&gt;; their real role prompts and the shared sandbox/CodeAct guardrails live as file-based&amp;nbsp;&lt;STRONG&gt;Agent Skills&lt;/STRONG&gt; under&amp;nbsp;skills/. The harness's built-in&amp;nbsp;SkillsProvider&amp;nbsp;advertises those&amp;nbsp;SKILL.md&amp;nbsp;packages, and the model loads them at runtime via&amp;nbsp;load_skill.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;from agent_framework import create_harness_agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential

# Model on Azure AI Foundry — not Azure OpenAI directly.
client = FoundryChatClient(credential=AzureCliCredential())

# The agent carries a tiny stub. Its real persona — "you gather World Cup
# news", "you write the script" — lives in a SKILL.md package under skills/,
# advertised by the harness SkillsProvider and pulled in via load_skill.
search_agent = create_harness_agent(
    chat_client=client,
    name="SearchAgent",
    instructions="You are a harness agent. Load your skill, then begin.",
)&lt;/LI-CODE&gt;
&lt;H3 data-line="212"&gt;3 The CodeAct surface: one tool the model can see&lt;/H3&gt;
&lt;P data-line="214"&gt;This is the CodeAct pattern from&amp;nbsp;02-agents/context_providers/code_act/code_act.py. The model sees exactly one tool —&amp;nbsp;execute_code. Any extra capability (here, only&amp;nbsp;fetch_url) is reachable&amp;nbsp;&lt;EM&gt;from inside the guest&lt;/EM&gt; via&amp;nbsp;call_tool(...).&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# What the MODEL sees and writes — one script, not ten tool round-trips:
#
#   # inside execute_code, running in the Hyperlight Wasm guest:
page = call_tool("fetch_url", url="https://www.bbc.com/sport/football/world-cup")
#   # ... parse page["BODY"], pull out today's stories ...
print(top_stories)
#
# execute_code is the ONLY tool on the model's surface.
call_tool("fetch_url", ...) is reachable only from inside the sandbox.&lt;/LI-CODE&gt;
&lt;H3 data-line="228"&gt;4. The one host tool, with a BBC-only allow-list&lt;/H3&gt;
&lt;P data-line="230"&gt;fetch_url lives on the host (sandbox/podcast_tools.py). It is the single bridge across the boundary, and it is deliberately narrow.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import urllib.request
from urllib.parse import urlparse

ALLOWED_DOMAINS = {"bbc.com", "www.bbc.com"}   # allow-list: BBC only

def fetch_url(url: str) -&amp;gt; dict:
    """The ONLY network path out of the sandbox. Host-side, allow-listed."""
    host = urlparse(url).netloc
    if host not in ALLOWED_DOMAINS:
        return {"STATUS": "blocked", "URL": url}

    with urllib.request.urlopen(url, timeout=20) as resp:
        body = resp.read(8192).decode("utf-8", "ignore")   # BODY capped at ~8 KB

    return {
        "STATUS": "ok",
        "URL": url,
        "TITLE": _extract_title(body),
        "DESCRIPTION": _extract_description(body),
        "LINKS": _extract_links(body),
        "BODY": body,
    }&lt;/LI-CODE&gt;
&lt;P data-line="257"&gt;Notice what this buys you: even if&amp;nbsp;SearchAgent&amp;nbsp;writes hostile code, the worst it can do over the network is read BBC, 8 KB at a time. The allow-list is host-side and the model never sees it — it cannot be prompt-injected away.&lt;/P&gt;
&lt;H3 data-line="259"&gt;5. Wiring the graph and the deterministic save&lt;/H3&gt;
&lt;LI-CODE lang="python"&gt;from agent_framework import WorkflowBuilder

workflow = (
    WorkflowBuilder()
    .add_node("prepare", prepare)
    .add_node("SearchAgent", search_agent)
    .add_node("adapt_1", adapt)
    .add_node("ContentAgent", content_agent)
    .add_node("adapt_2", adapt)
    .add_node("GenScriptAgent", genscript_agent)
    .add_node("save_scripts", save_scripts)   # deterministic Executor, NO LLM
    .build()
)

# GenScriptAgent emits text containing two fenced blocks (simplified +
# traditional). save_scripts parses them and writes the files itself —
# there is no model in the persistence step.
await workflow.run()
# -&amp;gt; ./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.simple.zh.txt
# -&amp;gt; ./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.tranditional.zh.txt&lt;/LI-CODE&gt;
&lt;H3 data-line="284"&gt;6. The payoff&lt;/H3&gt;
&lt;P data-line="286"&gt;Run that&amp;nbsp;shutil.rmtree("/")&amp;nbsp;inside this pipeline now and the result is delightfully boring: the agent deletes its own throwaway sandbox, the host never notices, and the next&amp;nbsp;execute_code&amp;nbsp;starts from a clean snapshot. Two things to call out:&lt;/P&gt;
&lt;UL data-line="288"&gt;
&lt;LI data-line="288"&gt;&lt;STRONG&gt;Snapshot/restore&lt;/STRONG&gt;&amp;nbsp;means every code execution starts from a clean, reusable baseline — capture state once, rewind between calls, instead of rebuilding the whole VM. For a daily pipeline that runs the act-observe-correct loop many times, that is the difference between "fast enough to always use" and "slow enough to skip."&lt;/LI&gt;
&lt;LI data-line="289"&gt;Because each agent writes&amp;nbsp;&lt;STRONG&gt;one script&lt;/STRONG&gt;&amp;nbsp;instead of ten round-tripped tool calls, the CodeAct approach keeps both latency and token usage down — the model reasons once and lets the guest do the busywork behind the boundary.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="293"&gt;Where it fits, and the one idea to keep&lt;/H2&gt;
&lt;img /&gt;
&lt;P data-line="295"&gt;harnessagent_sandbox_demo&amp;nbsp;lives inside&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native" target="_blank" rel="noopener" data-href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native"&gt;Multi-AI-Agents-Cloud-Native&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;— a gallery of patterns for running agent systems safely on Azure: A2A multi-agent orchestration, the Kubernetes sidecar pattern, hardened pipelines, and a sibling sample that runs Copilot agents on AKS inside&amp;nbsp;&lt;STRONG&gt;Kata Containers&lt;/STRONG&gt;&amp;nbsp;MicroVMs at the&amp;nbsp;&lt;EM&gt;pod&lt;/EM&gt;&amp;nbsp;level.&lt;/P&gt;
&lt;P data-line="297"&gt;And the README is explicit that this design is cloud-native: running it in-cluster on&amp;nbsp;&lt;STRONG&gt;AKS&lt;/STRONG&gt;&amp;nbsp;changes nothing about the architecture — the same&amp;nbsp;WorkflowBuilder&amp;nbsp;graph, the same Hyperlight sandbox, the same deterministic&amp;nbsp;save_scripts&amp;nbsp;executor. The local build and the in-cluster build are the same shape.&lt;/P&gt;
&lt;P data-line="299"&gt;The two MicroVM samples are two ends of one spectrum. The Kata sample puts the boundary around the whole&amp;nbsp;&lt;STRONG&gt;pod&lt;/STRONG&gt;&amp;nbsp;— a deployment topology. This Hyperlight demo pulls the boundary all the way into the&amp;nbsp;&lt;STRONG&gt;agent process itself&lt;/STRONG&gt;&amp;nbsp;— the sandbox becomes a library call. Same question —&amp;nbsp;&lt;EM&gt;where do you place the hardware boundary in an agent stack?&lt;/EM&gt;&amp;nbsp;— answered at two different altitudes.&lt;/P&gt;
&lt;P data-line="301"&gt;The old pitch for sandboxing always carried an asterisk:&amp;nbsp;&lt;EM&gt;yes, it's safer, but you'll pay in speed, compatibility, or friction.&lt;/EM&gt;&amp;nbsp;MicroVMs erase the asterisk — VM-grade isolation, cold starts fast enough that there's no reason to skip it, and a real environment your agents can actually work in. Enough of a real environment, in fact, to write you a World Cup podcast every morning.&lt;/P&gt;
&lt;P data-line="303"&gt;The one idea to internalize:&amp;nbsp;&lt;STRONG&gt;the harness decides, the MicroVM contains.&lt;/STRONG&gt;&amp;nbsp;Give your agent a room where it is allowed to fail — then let it be brilliant.&lt;/P&gt;
&lt;H3 data-line="307"&gt;References&lt;/H3&gt;
&lt;UL data-line="309"&gt;
&lt;LI data-line="309"&gt;&lt;STRONG&gt;Project:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/tree/main/code/harnessagent_sandbox_demo" target="_blank" rel="noopener" data-href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/tree/main/code/harnessagent_sandbox_demo"&gt;harnessagent_sandbox_demo&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native" target="_blank" rel="noopener" data-href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native"&gt;Multi-AI-Agents-Cloud-Native&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="310"&gt;&lt;STRONG&gt;Hyperlight:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://github.com/hyperlight-dev/hyperlight" target="_blank" rel="noopener" data-href="https://github.com/hyperlight-dev/hyperlight"&gt;hyperlight-dev/hyperlight&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://github.com/hyperlight-dev/hyperlight-sandbox" target="_blank" rel="noopener" data-href="https://github.com/hyperlight-dev/hyperlight-sandbox"&gt;hyperlight-dev/hyperlight-sandbox&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="311"&gt;&lt;STRONG&gt;Agent Framework:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/" target="_blank" rel="noopener" data-href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/"&gt;Agent Harness in Microsoft Agent Framework&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="312"&gt;&lt;STRONG&gt;Background:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/" target="_blank" rel="noopener" data-href="https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/"&gt;Why MicroVMs (Docker)&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://huggingface.co/blog/agent-glossary" target="_blank" rel="noopener" data-href="https://huggingface.co/blog/agent-glossary"&gt;Harness vs. Scaffold glossary (Hugging Face)&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="313"&gt;&lt;STRONG&gt;Install:&lt;/STRONG&gt;&amp;nbsp;pip install agent-framework-hyperlight --pre&amp;nbsp;· .NET:&amp;nbsp;dotnet add package Microsoft.Agents.AI.Hyperlight --prerelease&lt;/LI&gt;
&lt;LI data-line="314"&gt;&lt;STRONG&gt;Requirements:&lt;/STRONG&gt; KVM (Linux) or WHP (Windows); macOS not yet supported.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 04 Jun 2026 14:12:41 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/harness-driven-agents-secure-podcast-pipeline-in-hyperlight/ba-p/4525512</guid>
      <dc:creator>kinfey</dc:creator>
      <dc:date>2026-06-04T14:12:41Z</dc:date>
    </item>
    <item>
      <title>Foundry Toolkit for VS Code at //build: Hosted Agents End-to-End, a Smarter Toolbox, and More</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/foundry-toolkit-for-vs-code-at-build-hosted-agents-end-to-end-a/ba-p/4524941</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re excited to share what’s new for Foundry Toolkit for Visual Studio Code at //build 2026. Since going generally available, the toolkit has kept moving fast, and this release is a big one. The headline: a complete, end-to-end Hosted Agent experience, scaffold, run, deploy, and observe without ever leaving VS Code. On top of that, we’ve expanded the Toolbox with native enterprise integrations and shipped a wave of LangGraph samples so every developer has a clear path from idea to production. From your first prompt to a production-grade, observable agent, Foundry Toolkit meets you where you are.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 20"&gt;Hosted Agents, End to End&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:280,&amp;quot;335559739&amp;quot;:140}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Building an agent is the easy part; getting it from a first draft to a production-grade, observable service is what matters. This release makes the full Hosted Agent lifecycle available in VS Code, and it follows the way you actually work — scaffold, run, deploy, observe.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 32px;"&gt;Scaffold — start from a rich set of samples&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Hosted Agent creation now opens with a refreshed scaffolding experience and a rich sample selection, so you start from a working, framework-appropriate template instead of a blank file. Creation is smarter, too: we auto-select your subscription when there’s only one, gate tabs more clearly, and tightened spacing for a cleaner setup flow.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img&gt;&lt;EM&gt;New Hosted Agent scaffolding dialog with the rich sample picker open&lt;/EM&gt;&lt;/img&gt;
&lt;P&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 28px;"&gt;Run (F5) — inspect as you build&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Press &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;F5&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; and your agent runs locally with the Agent Inspector, now aligned with the rest of the extension and featuring Copilot SDK visualization so you can see&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;what the Inspector visualizes&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;as the agent executes. It’s the fastest loop from change to verification before anything leaves your machine.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 28px;"&gt;Deploy — a new UX and new ways to ship&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Different teams ship differently, so deployment got a refreshed UX and two new options for Hosted Agents:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;ZIP Code Deploy: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Package your agent source as a ZIP and deploy it directly to Microsoft Foundry Agent Service.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Bring-Your-Own-Image (BYOI): &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Already have a pre-built container in your own Azure Container Registry? Deploy straight from it.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;img&gt;&lt;EM&gt;Hosted Agent deploy dialog showing "ZIP code deploy" and "Bring-your-own-image (ACR)" side by side.&lt;/EM&gt;&lt;/img&gt;
&lt;P&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 28px;" data-ccp-parastyle="heading 30"&gt;Observe&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30); font-size: 28px;" data-ccp-parastyle="heading 30"&gt; — know it works in production&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once deployed, the full observability story is now available:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Hosted Agent Tracing: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Inspect end-to-end traces of Hosted Agent invocations directly from VS Code — tool calls, delegation chains, and timing for real debugging instead of guesswork.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Continuous Evaluation Settings: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;A new page to configure ongoing evaluation for deployed Hosted Agents, so quality is measured continuously — not just at ship time.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Evaluations Node: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;One-click access to evaluation runs and results right from the Foundry project tree.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;img&gt;&lt;EM&gt;Hosted Agent trace view showing a span tree of tool calls and timings.&lt;/EM&gt;&lt;/img&gt;
&lt;H1&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 20"&gt;A Smarter, More Connected Toolbox&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:280,&amp;quot;335559739&amp;quot;:140}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 30"&gt;What it is, and why it matters&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:180,&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A Toolbox is how your agent gets its capabilities — the curated set of tools, knowledge sources, and integrations it can call at runtime. Instead of hand-wiring each connection, you assemble a Toolbox once and your agent consumes it consistently across local runs and production. The result: agents that can act on real enterprise data and systems, with the connections managed in one place.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 30"&gt;From what to how: create, connect, consume&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:180,&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Create: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Start a new Toolbox &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;from the Foundry Toolkit sidebar “Tools Catalog”&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; and pick the capabilities your agent needs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="7" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Connect: Configure and w&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ire in enterprise systems through native, first-class connections once, and use it for all your agents.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="8" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Consume: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Reference the Toolbox from your Hosted Agent so its tools are available the moment the agent runs, locally (F5) and once deployed.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 30"&gt;New this release&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:180,&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Building on that flow, the Toolbox is now richer and more enterprise-ready:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="9" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;WorkIQ as a Built-in Tool: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;A first-class WorkIQ experience powered by A2A connections — no MCP fallback required. End-to-end toolbox creation with WorkIQ works out of the box.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="10" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Fabric IQ (OneLake Catalog) Integration: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Connect your agents to Microsoft Fabric OneLake catalogs directly from the Toolbox.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="11" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Toolbox Guardrails: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Apply content-safety guardrails to your Toolbox for safer agent execution.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="12" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Faster discovery: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;A new Toolbox Search Toggle and Agent Tool Multi-Select let you find and wire in multiple tools in a single action.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;img&gt;&lt;EM&gt;Redesigned Tools Catalog, including WorkIQ and Fabric IQ tiles.&lt;/EM&gt;&lt;/img&gt;
&lt;H1&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 20"&gt;LangGraph Reaches Parity&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:280,&amp;quot;335559739&amp;quot;:140}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;LangGraph developers, this one is for you. We’ve added five new Hosted Agent samples that bring LangGraph to full parity with the Agent Framework Responses learning path — so you get an equivalent, end-to-end walkthrough no matter which framework you prefer:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="13" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;MCP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — tool loading from a remote MCP server (defaults to GitHub Copilot MCP) via MultiServerMCPClient.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="14" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Workflows&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — a custom StateGraph chaining three specialized LLM nodes: slogan writer, legal reviewer, and formatter.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="15" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Files&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — local filesystem tools plus the Foundry-Toolbox code_interpreter working over session-uploaded files.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="16" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Human-in-the-Loop&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — a StateGraph that drafts a proposal and pauses for approval via langgraph.types.interrupt.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="17" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Observability&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; — GenAI OpenTelemetry tracing with enable_auto_tracing(); spans, metrics, and logs flow to Application Insights.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’ve also refreshed the existing bring-your-own LangGraph samples against the new hosting layer (chat with local tools, Foundry-managed Toolbox loading, and SSE-streamed multi-turn sessions backed by a MemorySaver checkpointer), so every sample reflects how Hosted Agents work today.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;img&gt;&lt;EM&gt;&lt;SPAN data-contrast="auto"&gt;Workflow visualization of the LangGraph human-in-the-loop sample paused at an approval node.&lt;/SPAN&gt;&lt;/EM&gt;&lt;/img&gt;
&lt;H1&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 20"&gt;Polish Across the Board&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:280,&amp;quot;335559739&amp;quot;:140}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A release is more than headline features. This one also includes a redesigned Prompt Builder “Improve an Instruction” dialog for faster iteration, fixes for MCP toolbox tool icons, clearer ZIP-deploy error surfacing, and assorted Agent Builder and Playground regression fixes — the whole experience feels tighter end to end.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 20"&gt;Get Started Today&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:280,&amp;quot;335559739&amp;quot;:140}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="18" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Install: &lt;/SPAN&gt;&lt;A href="https://aka.ms/foundrytk" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Foundry Toolkit on the VS Code Marketplace&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="19" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Quick Start: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Follow our getting-started tutorial to &lt;/SPAN&gt;&lt;A href="https://code.visualstudio.com/docs/intelligentapps/hosted-agents" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;build your first Hosted Agent&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="•" data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;•&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="20" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Deep Dive: &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Explore the &lt;/SPAN&gt;&lt;A href="https://code.visualstudio.com/docs/intelligentapps/overview" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;documentation&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft-foundry/foundry-samples" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;samples&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, and &lt;/SPAN&gt;&lt;A href="https://pypi.org/project/langchain-azure-ai/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;LangGraph&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; parity walkthroughs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:100}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 20"&gt;Join the Community&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:280,&amp;quot;335559739&amp;quot;:140}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Share your projects, file issues, or suggest features on our &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/foundry-toolkit/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;GitHub repository&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. We can’t wait to see what you build.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559739&amp;quot;:160}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Welcome to the next chapter of AI development!&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559738&amp;quot;:120}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/foundry-toolkit-for-vs-code-at-build-hosted-agents-end-to-end-a/ba-p/4524941</guid>
      <dc:creator>leoyao</dc:creator>
      <dc:date>2026-06-04T07:00:00Z</dc:date>
    </item>
    <item>
      <title>DevOps for Microsoft Hosted Agents: From Terraform Apply to Production-Grade Agent Delivery</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/devops-for-microsoft-hosted-agents-from-terraform-apply-to/ba-p/4523740</link>
      <description>&lt;P&gt;&lt;EM&gt;A companion piece to &lt;A href="https://techcommunity.microsoft.com/blog/AzureDevCommunityBlog/infrastructure-as-code-for-ai-building-and-deploying-microsoft-hosted-agents-wit/4523389" target="_blank" rel="noopener"&gt;Infrastructure as Code for AI: Building and Deploying Microsoft Hosted Agents with Terraform&lt;/A&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Just announced — source-code deploy (preview).&lt;/STRONG&gt; Foundry has just added a second Hosted Agent deploy path alongside the container path this post covers. Instead of a container image, you upload a &lt;CODE&gt;.zip&lt;/CODE&gt; of your source plus a &lt;CODE&gt;requirements.txt&lt;/CODE&gt; (Python 3.13 / 3.14) or a &lt;CODE&gt;.csproj&lt;/CODE&gt; (.NET 10), and the Agent Service either builds dependencies for you (&lt;CODE&gt;remote_build&lt;/CODE&gt;) or runs a prebuilt bundle (&lt;CODE&gt;bundled&lt;/CODE&gt;). The version definition uses &lt;CODE&gt;code_configuration&lt;/CODE&gt; instead of &lt;CODE&gt;container_configuration&lt;/CODE&gt; — the two are mutually exclusive on a given version. Versioning is content-addressable on the zip's SHA-256, so the dedup behaviour described below still applies. Required roles shift slightly: deploying the agent needs &lt;STRONG&gt;Foundry Project Manager&lt;/STRONG&gt; at project scope, and the platform-assigned agent identity gets &lt;STRONG&gt;Foundry User&lt;/STRONG&gt; (both handled automatically by &lt;CODE&gt;azd&lt;/CODE&gt; and the Foundry VS Code Toolkit). The DevOps loop in this post — immutable versions, eval gating, manifest-driven promotion, traffic-split canary, per-version observability — transfers directly; only the build-and-push stage changes (no Dockerfile, no ACR for &lt;CODE&gt;remote_build&lt;/CODE&gt;). The container path covered here remains fully supported and is still the right choice if you need custom base images, system packages, or non-Python/.NET runtimes. Full details: &lt;A href="https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/deploy-hosted-agent-code" target="_blank" rel="noopener"&gt;Deploy a hosted agent from source code (preview)&lt;/A&gt;.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;What this post assumes.&lt;/STRONG&gt; It describes recommended enterprise DevOps patterns on top of Microsoft Foundry Hosted Agents. Some patterns — evaluation gating, traffic-based rollout, manifest-driven promotion — are best practices and may not be enforced by the platform itself. Hosted Agents and several related capabilities (A2A, certain deployment and routing controls) are in &lt;STRONG&gt;preview&lt;/STRONG&gt; and may evolve.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;TL;DR&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Terraform provisions the platform: Foundry account, project, model deployment, ACR, App Insights, RBAC.&lt;/LI&gt;
&lt;LI&gt;DevOps pipelines ship &lt;STRONG&gt;agent versions&lt;/STRONG&gt;, not source branches — the deploy artifact is a container image &lt;STRONG&gt;digest&lt;/STRONG&gt; plus an immutable version spec.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Evaluation should be treated as a release gate&lt;/STRONG&gt;, not a dashboard. Quality regressions should fail the build the same way unit-test failures do.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Traffic split between versions&lt;/STRONG&gt; is the rollout &lt;EM&gt;and&lt;/EM&gt; rollback primitive. Rollback typically avoids rebuilding or redeploying artifacts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Observability is sliced per version&lt;/STRONG&gt; — during canary, two versions serve simultaneously and aggregate metrics lie.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2&gt;The Delivery Pipeline at a Glance&lt;/H2&gt;
&lt;PRE&gt;&lt;CODE&gt;  Terraform  ───►  Foundry project (AIServices) + model deployment + ACR + App Insights
                              │
   PR opened                  ▼
      └─►  docker build  ───►  push to ACR  ───►  capture image digest
                                                              │
                                                              ▼
                                            Foundry SDK: create agent version
                                            (image digest + cpu/mem + env + protocols)
                                                              │
                                                              ▼
                                                   Evaluation gate  ────►  fail → stop
                                                              │
                                                              ▼ pass
                                          Promote via manifest → staging → prod
                                                              │
                                                              ▼
                                       Traffic-split canary (0% → 10% → 100%)
                                                              │
                                                              ▼
                                       App Insights: per-version latency, cost,
                                       sampled quality, sandbox sizing
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Infrastructure as Code gets the platform stood up. It does not, on its own, ship an agent. The gap between &lt;CODE&gt;terraform apply&lt;/CODE&gt; succeeding and a customer-facing agent reliably serving requests in production is where DevOps lives — and for &lt;A href="https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/hosted-agents" target="_blank" rel="noopener"&gt;Microsoft Hosted Agents&lt;/A&gt; on Microsoft Foundry, that gap has its own shape.&lt;/P&gt;
&lt;P&gt;A Hosted Agent is not a prompt and a tool list. It is &lt;STRONG&gt;your own code&lt;/STRONG&gt;, packaged as a container image, pushed to Azure Container Registry, and deployed to a Foundry project. The Foundry Agent Service pulls the image, provisions an isolated execution environment per agent session, assigns the agent its own dedicated Microsoft Entra ID (agent identity), and exposes a dedicated endpoint. An agent supports up to four protocols, any of which can be combined in a single deployment:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Responses&lt;/STRONG&gt; (&lt;CODE&gt;.../protocols/openai/responses&lt;/CODE&gt;) — OpenAI-compatible chat-style API. Implemented in the container.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Invocations&lt;/STRONG&gt; (&lt;CODE&gt;.../protocols/invocations&lt;/CODE&gt;) — arbitrary JSON in / arbitrary JSON out for webhook receivers and non-conversational workloads. Implemented in the container.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://a2a-protocol.org/" target="_blank" rel="noopener"&gt;A2A&lt;/A&gt;&lt;/STRONG&gt; (&lt;CODE&gt;.../protocols/a2a&lt;/CODE&gt;, preview) — the open Agent2Agent protocol for agent-to-agent delegation across frameworks and vendors. Surfaced on its own endpoint path by the platform.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Activity&lt;/STRONG&gt; — the Teams / M365 channel protocol. The platform bridges Responses to Activity automatically when an agent is published to a Microsoft 365 channel.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Microsoft manages the runtime, scaling, session state, and lifecycle. You ship the image and the version definition.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Important — Foundry version compatibility.&lt;/STRONG&gt; Hosted Agents are supported on the &lt;STRONG&gt;new Microsoft Foundry project&lt;/STRONG&gt; resource model (&lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt; under a Cognitive Services account of &lt;CODE&gt;kind = "AIServices"&lt;/CODE&gt;). The older &lt;STRONG&gt;Azure AI Foundry Hub&lt;/STRONG&gt; model (&lt;CODE&gt;azurerm_ai_foundry&lt;/CODE&gt; / &lt;CODE&gt;azurerm_ai_foundry_project&lt;/CODE&gt;, &lt;CODE&gt;kind = "Hub"&lt;/CODE&gt;) — the Azure ML–derived workspace surface — does not expose Hosted Agent capabilities. They are two distinct Azure resource types with different APIs. Everything in this post assumes the new Foundry project.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That shape drives three things every DevOps loop for Hosted Agents has to handle:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;The deploy artifact is a container image plus an immutable agent version.&lt;/STRONG&gt; A version snapshots the image digest, CPU/memory, environment variables, and protocol configuration. To change anything, you create a new version. The platform supports weighted traffic between versions, which is your blue/green and canary primitive.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The agent identity is created for you, per agent.&lt;/STRONG&gt; You don't pick one or wire managed-identity references manually. Each agent is assigned a dedicated Microsoft Entra ID (agent identity) at deploy time; RBAC to downstream resources is granted to that identity.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Quality is non-deterministic.&lt;/STRONG&gt; Two &lt;CODE&gt;terraform apply&lt;/CODE&gt; runs against the same configuration produce identical resources. Two agent runs against the same input can produce different outputs. Your pipeline has to gate on evaluation, not only on tests passing and HTTP 200s.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This post lays out an end-to-end DevOps loop on top of that shape: how to structure the repository, what runs in CI versus CD, how to gate releases on evaluation, how to promote across environments, how to use version traffic split for safe rollouts and instant rollback, and what observability is worth wiring beyond the defaults.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;A Quick Tour of Microsoft Foundry&lt;/H2&gt;
&lt;P&gt;If you've spent more time in Azure OpenAI or AI Studio than in Foundry, a short orientation helps before the DevOps patterns make sense.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/what-is-azure-ai-foundry" target="_blank" rel="noopener"&gt;Microsoft Foundry&lt;/A&gt;&lt;/STRONG&gt; is Microsoft's unified platform for building, evaluating, deploying, and operating AI applications and agents. It consolidates what used to be spread across Azure OpenAI, Azure AI Studio, and the AI Hub model into a single resource and a single portal at &lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;ai.azure.com&lt;/A&gt;. Three pieces are worth knowing up front.&lt;/P&gt;
&lt;H3&gt;The resource model&lt;/H3&gt;
&lt;P&gt;Foundry is built on two Azure resources:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Foundry account&lt;/STRONG&gt; — an &lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt; with &lt;CODE&gt;kind = "AIServices"&lt;/CODE&gt;, &lt;CODE&gt;project_management_enabled = true&lt;/CODE&gt;, a &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt;, and a managed identity. This is the top-level container: it holds your model deployments (Azure OpenAI and the broader Foundry model catalog), connections to backing services, and the Foundry-managed Toolbox MCP endpoint.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Foundry project&lt;/STRONG&gt; — an &lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt; under that account. A project is the scope for agents, evaluations, conversation history, indexes, and per-app connections. One project per app or per environment is the usual shape.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This is the &lt;EM&gt;new&lt;/EM&gt; Foundry model — and it is the &lt;STRONG&gt;only&lt;/STRONG&gt; model that supports Hosted Agents. The older &lt;STRONG&gt;Azure AI Foundry Hub&lt;/STRONG&gt; (&lt;CODE&gt;azurerm_ai_foundry&lt;/CODE&gt; + &lt;CODE&gt;azurerm_ai_foundry_project&lt;/CODE&gt;, &lt;CODE&gt;kind = "Hub"&lt;/CODE&gt;) is a separate Azure ML–derived workspace and &lt;STRONG&gt;cannot host Hosted Agents&lt;/STRONG&gt;. The two surfaces look superficially similar in the portal but are distinct Azure resource types with different APIs and feature sets. If a tutorial, sample, or piece of Terraform you find online creates an &lt;CODE&gt;azurerm_ai_foundry&lt;/CODE&gt; Hub, it is targeting the classic surface and the Hosted Agents APIs (&lt;CODE&gt;/agents&lt;/CODE&gt;, agent versions, traffic split, dedicated endpoints) will not be available against it. To use Hosted Agents you must provision a new Foundry account + project as described above. There is no in-place upgrade from a Hub.&lt;/P&gt;
&lt;H3&gt;What Foundry gives you&lt;/H3&gt;
&lt;P&gt;A Foundry project is more than a container. Out of the box it provides:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;A model catalog and deployment surface&lt;/STRONG&gt; — Azure OpenAI models (GPT-4.1, GPT-4o, o-series, embeddings), plus open and partner models, all deployed and invoked through the same project endpoint with the same auth model.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Two agent execution modes&lt;/STRONG&gt; — &lt;STRONG&gt;prompt-based agents&lt;/STRONG&gt; (defined entirely by instructions + tool configuration in the portal, suitable for conversational assistants) and &lt;STRONG&gt;Hosted Agents&lt;/STRONG&gt; (your own containerized code, the subject of this post).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;A managed Toolbox&lt;/STRONG&gt; — a project-level MCP endpoint that exposes Foundry-curated tools (Code Interpreter, Web Search, Azure AI Search, OpenAPI, custom MCP, A2A) with consolidated auth. Hosted Agent code connects to the Toolbox using standard MCP client libraries.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;First-class evaluation&lt;/STRONG&gt; — datasets, graders (similarity, LLM-as-judge, safety, groundedness), and evaluation runs as a built-in concept, not a bolt-on.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Built-in tracing&lt;/STRONG&gt; — OpenTelemetry traces from agents land in a linked Application Insights resource automatically. No manual instrumentation needed to get the basics.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Per-agent identity&lt;/STRONG&gt; — when you deploy a Hosted Agent, the platform creates a dedicated Microsoft Entra ID (agent identity) for it and gives it a dedicated endpoint. RBAC to downstream resources is granted to that identity.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;How the pieces line up for Hosted Agents&lt;/H3&gt;
&lt;P&gt;For the rest of this post, the mental model is:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;Resource group
└── Foundry account (Cognitive Services, kind=AIServices)
    ├── Model deployments (e.g. gpt-4.1)
    └── Foundry project
        ├── Hosted Agent: customer-support
        │   ├── Version v1 (image digest A, 100% traffic)
        │   └── Version v2 (image digest B, 0% traffic — canary)
        ├── Hosted Agent: webhook-handler
        ├── Evaluations
        ├── Connections (ACR, AI Search, Key Vault…)
        └── Toolbox (MCP)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Terraform provisions the account, project, model deployments, ACR, App Insights, and RBAC. Hosted Agents — images, versions, traffic weights — are managed through &lt;CODE&gt;azd&lt;/CODE&gt; or the Foundry SDK. That boundary is what the rest of this post automates.&lt;/P&gt;
&lt;H3&gt;The minimal Terraform shape&lt;/H3&gt;
&lt;P&gt;For Hosted Agents you need the new-model shape instead. The skeleton below is the minimum that lets you deploy a Hosted Agent on top of it — storage, Key Vault, monitoring, networking, and OIDC for CI live alongside for more details see &lt;A href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/infrastructure-as-code-for-ai-building-and-deploying-microsoft-hosted-agents-wit/4523389" target="_blank" rel="noopener"&gt;Infrastructure as Code for AI: Building and Deploying Microsoft Hosted Agents with Terraform | Microsoft Community Hub&lt;/A&gt;.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# Foundry account (new model — required for Hosted Agents)
resource "azurerm_cognitive_account" "foundry" {
  name                       = "ai-${local.name}"
  resource_group_name        = azurerm_resource_group.main.name
  location                   = azurerm_resource_group.main.location
  kind                       = "AIServices"
  sku_name                   = "S0"
  project_management_enabled = true
  custom_subdomain_name      = "ai-${local.name}"   # required for AAD auth

  identity {
    type = "SystemAssigned"
  }
}

# Model deployment the agent will call
resource "azurerm_cognitive_deployment" "gpt" {
  name                 = "gpt-4.1"   # stable name — agents pin to this
  cognitive_account_id = azurerm_cognitive_account.foundry.id

  model {
    format  = "OpenAI"
    name    = "gpt-4.1"
    version = "2025-04-14"
  }

  sku {
    name     = "GlobalStandard"
    capacity = 10
  }
}

# Foundry project — the scope for Hosted Agents, evals, conversations
resource "azurerm_cognitive_account_project" "main" {
  name                 = "proj-${local.name}"
  cognitive_account_id = azurerm_cognitive_account.foundry.id
  location             = azurerm_resource_group.main.location

  identity {
    type = "SystemAssigned"
  }
}

# Container registry the agent image is pushed to and pulled from
resource "azurerm_container_registry" "acr" {
  name                = "acr${replace(local.name, "-", "")}"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  sku                 = "Standard"
  admin_enabled       = false   # use RBAC, not admin user
}

# The project's managed identity needs to pull the agent image
resource "azurerm_role_assignment" "project_acr_pull" {
  scope                = azurerm_container_registry.acr.id
  role_definition_name = "AcrPull"   # use Container Registry Repository Reader if the ACR has ABAC enabled
  principal_id         = azurerm_cognitive_account_project.main.identity[0].principal_id
}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;A few things worth calling out:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;CODE&gt;kind = "AIServices"&lt;/CODE&gt; + &lt;CODE&gt;project_management_enabled = true&lt;/CODE&gt; + &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt;&lt;/STRONG&gt; are what make this a &lt;EM&gt;new-model&lt;/EM&gt; Foundry account. Omit &lt;CODE&gt;project_management_enabled&lt;/CODE&gt; and &lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt; will not provision; omit &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt; and you lose the Foundry endpoint shape that Entra-authenticated access depends on.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt;&lt;/STRONG&gt; is the new-Foundry project resource. Do not use &lt;CODE&gt;azurerm_ai_foundry_project&lt;/CODE&gt; — that targets the Hub model and does not host agents.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Keep the model deployment &lt;CODE&gt;name&lt;/CODE&gt; stable.&lt;/STRONG&gt; Agent code (and your &lt;CODE&gt;agent.yaml&lt;/CODE&gt;) pins to the deployment name, not the model version. Changing the version is safe; changing the name forces a new agent version.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The project MI needs ACR pull&lt;/STRONG&gt;, not push. CI pushes the image (via its own identity); the platform pulls it on the project's behalf when the agent runs.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ABAC-enabled ACR&lt;/STRONG&gt; is supported but requires &lt;CODE&gt;--source-acr-auth-id [caller]&lt;/CODE&gt; on &lt;CODE&gt;az acr build&lt;/CODE&gt; in your CI script — a common gotcha.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;A note on the provider.&lt;/STRONG&gt;&amp;nbsp;Everything above uses the&amp;nbsp;&lt;A href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs" target="_blank" rel="noopener"&gt;hashicorp/azurerm&lt;/A&gt;&amp;nbsp;provider. Foundry's surface evolves quickly, and you will occasionally hit a property or child resource that AzureRM hasn't caught up with yet — project connections, capability hosts, and some newer agent-related fields are common examples. When that happens, reach for&amp;nbsp;&lt;A href="https://registry.terraform.io/providers/Azure/azapi/latest/docs" target="_blank" rel="noopener"&gt;azure/azapi&lt;/A&gt;: use&amp;nbsp;&lt;A href="https://registry.terraform.io/providers/Azure/azapi/latest/docs/resources/azapi_update_resource" target="_blank" rel="noopener"&gt;azapi_update_resource&lt;/A&gt;&amp;nbsp;to patch a missing property on an AzureRM-owned resource, and&amp;nbsp;&lt;A href="https://registry.terraform.io/providers/Azure/azapi/latest/docs/resources/azapi_resource" target="_blank" rel="noopener"&gt;azapi_resource&lt;/A&gt;&amp;nbsp;for resources AzureRM doesn't model at all. Keep AzureRM as the default and use AzAPI as a targeted gap-filler, so you don't fork ownership of mainstream resources.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;The Hosted Agent Delivery Loop&lt;/H2&gt;
&lt;P&gt;A working delivery loop has five stages. Each maps to a specific artifact, a specific tool, and a specific failure mode.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Stage&lt;/th&gt;&lt;th&gt;Artifact&lt;/th&gt;&lt;th&gt;Tool&lt;/th&gt;&lt;th&gt;Primary failure mode&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Infra provisioning&lt;/td&gt;&lt;td&gt;Terraform state&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;terraform apply&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;Quota, RBAC propagation, ACR not reachable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Image build &amp;amp; push&lt;/td&gt;&lt;td&gt;OCI image in ACR (ACR must remain publicly reachable today)&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;docker build&lt;/CODE&gt; / &lt;CODE&gt;az acr build&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;Image too large, base image CVEs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Agent version create&lt;/td&gt;&lt;td&gt;Immutable version (image digest + config)&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;azd&lt;/CODE&gt; or Foundry SDK&lt;/td&gt;&lt;td&gt;Bad env var, wrong protocol declared&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Evaluation&lt;/td&gt;&lt;td&gt;Eval dataset + grader&lt;/td&gt;&lt;td&gt;Foundry evaluators&lt;/td&gt;&lt;td&gt;Quality / safety regression&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Traffic shift &amp;amp; observe&lt;/td&gt;&lt;td&gt;Version weights, App Insights traces&lt;/td&gt;&lt;td&gt;Foundry SDK + Azure Monitor&lt;/td&gt;&lt;td&gt;Silent quality decay, sandbox over/under-sizing&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;The first stage is where the prior post left off. The remaining four are this post.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Infra provisioning assumes the standard pattern:&lt;/STRONG&gt; terraform plan runs on every PR as a review gate (posted as a PR comment) and terraform apply runs only on merge to the environment branch. Everything below assumes the platform is already applied.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Repository Shape&lt;/H2&gt;
&lt;P&gt;A repository that supports the loop end-to-end looks roughly like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;agent-platform/
├── infra/                          # Terraform from the prior post (AIServices + project)
│   ├── modules/foundry-project/
│   └── environments/
│       ├── dev.tfvars
│       ├── staging.tfvars
│       └── prod.tfvars
├── agents/
│   ├── customer-support/
│   │   ├── Dockerfile
│   │   ├── src/                    # Agent code (Python or C#)
│   │   ├── agent.yaml              # Version spec: image, cpu/memory, protocols, env
│   │   ├── evals/
│   │   │   ├── dataset.jsonl
│   │   │   └── graders.yaml
│   │   └── README.md
│   └── webhook-handler/
│       └── ...
├── scripts/
│   ├── deploy_agent_version.py     # Build → push → create version → optional weight shift
│   ├── run_evals.py
│   └── promote_version.py          # Shifts traffic between versions
└── .github/workflows/
    ├── infra.yml                   # Terraform plan/apply
    ├── agent-pr.yml                # Build, push to ACR, deploy candidate version, run evals
    └── agent-release.yml           # Promote a tested version to staging / prod
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Two deliberate choices. First, infrastructure and agents live in the same repo but in separate top-level directories with separate pipelines. They have different cadences and different reviewers. Second, each agent is its own folder with its own &lt;CODE&gt;Dockerfile&lt;/CODE&gt;, code, version spec, and eval suite. A single PR touches one agent's directory cleanly; a code-review diff stays focused.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;The Agent Version as the Deploy Unit&lt;/H2&gt;
&lt;P&gt;A Hosted Agent is deployed as a &lt;STRONG&gt;version&lt;/STRONG&gt;. A version is immutable — once created it captures:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;the container image digest (not just the tag — the digest, so it cannot drift),&lt;/LI&gt;
&lt;LI&gt;CPU and memory allocation for the per-session sandbox (e.g. 1 vCPU / 2 GiB),&lt;/LI&gt;
&lt;LI&gt;the &lt;STRONG&gt;container protocols&lt;/STRONG&gt; the image implements — &lt;CODE&gt;responses&lt;/CODE&gt;, &lt;CODE&gt;invocations&lt;/CODE&gt;, or both,&lt;/LI&gt;
&lt;LI&gt;environment variables passed to the container at runtime,&lt;/LI&gt;
&lt;LI&gt;any other version-scoped configuration (e.g. base model deployment name).&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The container's &lt;CODE&gt;container_protocol_versions&lt;/CODE&gt; only declares &lt;CODE&gt;responses&lt;/CODE&gt; and/or &lt;CODE&gt;invocations&lt;/CODE&gt; — the two protocols the container itself implements. A2A (preview) is surfaced by the platform on its own endpoint path, and Activity is bridged from Responses automatically when the agent is published to a Microsoft 365 channel. Under the hood, agent versions run on Azure Container Apps with VM-isolated sandboxes, which is also why you may see the term &lt;EM&gt;revision&lt;/EM&gt; in some Container Apps–surfaced APIs and limits — a Hosted Agent version corresponds to one such revision.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To change any of those, you create a new version. The platform keeps the old one and shifts traffic between them by weight. This is the primitive you use for canary rollouts and for rollback — both reduce to a traffic-weight change, not a redeploy.&lt;/P&gt;
&lt;P&gt;An &lt;CODE&gt;agent.yaml&lt;/CODE&gt; per agent makes the version reproducible from source:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# agents/customer-support/agent.yaml
name: customer-support
container:
  image: ${ACR_LOGIN_SERVER}/customer-support  # digest resolved at deploy time
  cpu: 1
  memory: 2Gi
protocols:                                 # container_protocol_versions
  - responses
  # add `invocations` here if the container also handles webhook-style payloads
env:
  # The platform automatically injects FOUNDRY_PROJECT_ENDPOINT,
  # AZURE_AI_MODEL_DEPLOYMENT_NAME, and APPLICATIONINSIGHTS_CONNECTION_STRING
  # — you only set what's specific to your agent.
  LOG_LEVEL: info
metadata:
  owner: support-team
  source_commit: ${GITHUB_SHA}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE&gt;scripts/deploy_agent_version.py&lt;/CODE&gt; is the executable form of this spec. Its job per agent is:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Build the container image (&lt;CODE&gt;docker build&lt;/CODE&gt; locally, or &lt;CODE&gt;az acr build&lt;/CODE&gt; server-side for ABAC ACRs).&lt;/LI&gt;
&lt;LI&gt;Push to ACR and capture the resulting image &lt;STRONG&gt;digest&lt;/STRONG&gt; — not the &lt;CODE&gt;:latest&lt;/CODE&gt; tag.&lt;/LI&gt;
&lt;LI&gt;Resolve environment variables from the target environment's config.&lt;/LI&gt;
&lt;LI&gt;Call the Foundry SDK to create a new agent version pinned to that digest.&lt;/LI&gt;
&lt;LI&gt;Emit a &lt;CODE&gt;deployment-manifest.json&lt;/CODE&gt; containing the agent name, version ID, image digest, source commit SHA, and the eval dataset hash used.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;One gotcha: the platform deduplicates. A &lt;CODE&gt;create version&lt;/CODE&gt; call with no change to the version parameters (same image digest, same env, same CPU/memory, same protocols) will not produce a new version object. Write the script to treat "no new version returned" as success and reuse the existing version ID in the manifest, not as a failure to retry.&lt;/P&gt;
&lt;P&gt;That manifest is the cross-pipeline contract. PR pipelines produce one. Promotion pipelines consume one. Rollback consumes a previous one.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Evaluation as a Release Gate&lt;/H2&gt;
&lt;P&gt;Foundry ships evaluators (datasets, graders, evaluation runs) as a first-class platform feature. Whether to &lt;EM&gt;block&lt;/EM&gt; a release on their results is a team decision, not a platform mandate — but it is the recommended pattern for any agent serving real users. A pipeline that promotes an agent because the image built, the container started, and the version was created with HTTP 200 will eventually ship a regression that an integration test cannot catch. Treat the eval suite the way you treat unit tests: failures stop the pipeline.&lt;/P&gt;
&lt;P&gt;A minimal but honest evaluation setup has three pieces.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A reference dataset.&lt;/STRONG&gt; Twenty to fifty representative scenarios is enough to start. Each row is an input plus either a reference answer, a set of must-include facts, or a rubric. Store as JSONL alongside the agent:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;{"id":"refund-1","input":"How do I get a refund for order 12345?","must_include":["return window","14 days","original payment method"]}
{"id":"escalate-1","input":"This is the third time my package is late.","rubric":"Agent should acknowledge, apologize, offer escalation, not promise compensation."}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Graders.&lt;/STRONG&gt; Foundry's evaluators library ships templates — exact match, similarity, LLM-as-judge for rubric scoring, and built-in safety and groundedness graders. Pick what matches your dataset shape. LLM-as-judge is the workhorse for open-ended responses; pin its model deployment explicitly so the grader itself does not drift between runs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thresholds.&lt;/STRONG&gt; Decide what "passing" means before the first run. A common pattern:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Hard floor on safety / groundedness — any regression fails the build.&lt;/LI&gt;
&lt;LI&gt;Relative threshold on quality — no more than X% drop versus the last known-good version.&lt;/LI&gt;
&lt;LI&gt;Absolute floor on must-include coverage — for example ≥ 90%.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Wire it into the PR pipeline:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# .github/workflows/agent-pr.yml (excerpt)
- name: Build, push, and create candidate version
  run: |
    python scripts/deploy_agent_version.py \
      --agent customer-support \
      --project $EVAL_PROJECT \
      --version-suffix pr-${{ github.event.number }} \
      --traffic 0   # create the version, do not route traffic yet

- name: Run evaluations against candidate endpoint
  run: |
    python scripts/run_evals.py \
      --agent customer-support \
      --version pr-${{ github.event.number }} \
      --baseline last-known-good \
      --fail-on-regression
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The PR creates a candidate version with &lt;STRONG&gt;zero traffic weight&lt;/STRONG&gt; against a long-lived "eval" Foundry project, runs evaluations against the candidate version's dedicated endpoint, and then deletes the candidate version on PR close. A standing eval project beats a per-PR Foundry project — provisioning a project per PR is slow and adds RBAC overhead that does not earn its keep.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Environment Promotion&lt;/H2&gt;
&lt;P&gt;Three environments is the floor: &lt;CODE&gt;dev&lt;/CODE&gt;, &lt;CODE&gt;staging&lt;/CODE&gt;, &lt;CODE&gt;prod&lt;/CODE&gt;. Each is its own Foundry project, ideally its own Foundry account in its own resource group. What promotes between them is &lt;STRONG&gt;the image digest and the version spec&lt;/STRONG&gt; — not source code, and not "redeploy from main."&lt;/P&gt;
&lt;P&gt;A workable model:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;dev&lt;/STRONG&gt; — every push to a feature branch builds an image and creates a dev version. Loose evaluation thresholds. Used for human poking and end-to-end debugging.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;staging&lt;/STRONG&gt; — merges to &lt;CODE&gt;main&lt;/CODE&gt; create a staging version. Full eval suite, strict thresholds. Same sandbox sizing, same env vars, same protocols as prod.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;prod&lt;/STRONG&gt; — manually approved promotion from staging. Promotion script reads the staging manifest, finds the image &lt;STRONG&gt;digest&lt;/STRONG&gt; that passed, and creates the prod version pointed at that exact digest. No rebuild.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The "same digest" rule is the recommended pattern for safe promotion. If staging passed evaluations on &lt;CODE&gt;customer-support@sha256:abc…&lt;/CODE&gt; running &lt;CODE&gt;gpt-4.1&lt;/CODE&gt;, prod should get that exact image. Re-building from &lt;CODE&gt;main&lt;/CODE&gt; in the prod pipeline reintroduces the risk you spent staging trying to eliminate — a different base-image patch level, a different transitive dependency, a different build clock — even though nothing in your source changed.&lt;/P&gt;
&lt;P&gt;GitHub Actions environments make the approval concrete:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;jobs:
  promote-prod:
    needs: deploy-staging
    environment: production    # requires reviewer approval
    runs-on: ubuntu-latest
    steps:
      - name: Create prod version from staging manifest
        run: |
          python scripts/deploy_agent_version.py \
            --agent customer-support \
            --project $PROD_PROJECT \
            --from-manifest staging-manifest.json \
            --traffic 10   # canary at 10%
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The canary weight is the second half of safe promotion: create the prod version, give it a small fraction of traffic, watch the App Insights traces, then shift the rest with &lt;CODE&gt;promote_version.py&lt;/CODE&gt;.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Traffic-Split Rollout and Instant Rollback&lt;/H2&gt;
&lt;P&gt;Weighted version traffic changes the rollback model entirely. Rollback typically avoids rebuilding or redeploying artifacts — the previous version is still there, ready to take traffic.&lt;/P&gt;
&lt;P&gt;A typical canary flow:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create new version &lt;CODE&gt;v42&lt;/CODE&gt; at 0% traffic. Endpoint exists; no production calls reach it.&lt;/LI&gt;
&lt;LI&gt;Shift to 10%. Observe for an hour or a day, depending on traffic volume.&lt;/LI&gt;
&lt;LI&gt;Shift to 50%, then 100%. Old version stays at 0% but is not deleted.&lt;/LI&gt;
&lt;LI&gt;After a stability window (commonly a week), delete the previous version to free quota.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Rollback is the reverse: shift weights back to the previous version. It is a control-plane call, not a deploy. The agent's endpoint URL does not change, sessions in flight continue on whichever version they started on, and new sessions land on whatever the weights say.&lt;/P&gt;
&lt;P&gt;Two consequences worth internalizing:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Keep at least the last two known-good versions live.&lt;/STRONG&gt; Rollback is only as fast as your ability to flip weights to a version that already exists.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Do not skip the canary step under deadline pressure.&lt;/STRONG&gt; A 0%→100% cutover gives you the same blast radius as a non-canaried deploy. The platform supports incremental rollout; use it.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;For a destructive change — a removed protocol, a renamed agent, an env var the previous version cannot tolerate — rollback may not be safe. Forward-fix is the answer. Identify those changes in PR review and require an explicit "rollback path: forward-fix" note in the PR.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Handling Model Version Changes&lt;/H2&gt;
&lt;P&gt;A model deployment bump is the highest-blast-radius runtime change you can make to a Hosted Agent: the agent's behaviour on every input can shift. Treat it like a dependency upgrade.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open a PR that changes only the &lt;CODE&gt;AZURE_AI_MODEL_DEPLOYMENT_NAME&lt;/CODE&gt; (or the model version on the deployment, via Terraform).&lt;/LI&gt;
&lt;LI&gt;Build a new image if needed, create a new agent version, run the full eval suite at 0% traffic.&lt;/LI&gt;
&lt;LI&gt;Run a larger regression dataset if you have one.&lt;/LI&gt;
&lt;LI&gt;Require a human reviewer who is not the PR author.&lt;/LI&gt;
&lt;LI&gt;Promote through staging, then canary in prod for at least one business day before shifting full traffic.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If the new model is faster or cheaper, the temptation is to skip steps. Don't. A quality regression in prod almost always costs more than a careful upgrade.&lt;/P&gt;
&lt;P&gt;The Terraform side is small: &lt;CODE&gt;openai_model_version&lt;/CODE&gt; is a variable on the &lt;CODE&gt;azurerm_cognitive_deployment&lt;/CODE&gt;. Terraform recreates the deployment if the version changes. The Hosted Agent picks up the new deployment the next time it calls the model — &lt;EM&gt;if&lt;/EM&gt; you kept the deployment &lt;STRONG&gt;name&lt;/STRONG&gt; stable, which is your contract with the agent code. If you change the deployment name as well, the agent needs a new version that knows the new name.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Observability That Actually Tells You Something&lt;/H2&gt;
&lt;P&gt;The platform injects an Application Insights connection string into every Hosted Agent container as an environment variable. Agents that use the protocol libraries emit OpenTelemetry traces by default. That gives you per-request latency, token counts, tool invocations, and conversation IDs out of the box. That is the floor. Add to it:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Custom span attributes on every request.&lt;/STRONG&gt; Agent name, &lt;STRONG&gt;agent version ID&lt;/STRONG&gt;, image digest (short), model deployment name. Without these, post-incident analysis cannot tell you which version was live when a problem started — especially during a traffic-split rollout where two versions are serving simultaneously.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Quality signal capture.&lt;/STRONG&gt; Sample a percentage of production conversations into a queue for offline grading. Run the same graders you used in CI against that sample on a schedule. This is your drift detector for response quality.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Sandbox right-sizing signals.&lt;/STRONG&gt; Hosted Agents bill on the CPU/memory you allocate per session. Oversizing multiplies cost by your concurrency. Track CPU and available memory inside the sandbox and compare against the version's allocation — if peaks stay below ~50%, the next version should drop a tier; if they push above ~70%, raise it. Right-sizing is a per-version decision because versions are immutable.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Per-version error and latency.&lt;/STRONG&gt; Slice every standard metric by version ID. A canary that looks fine in aggregate can be quietly worse than the previous version on specific request shapes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost dimensions.&lt;/STRONG&gt; Tag traces with &lt;CODE&gt;customer_id&lt;/CODE&gt; or &lt;CODE&gt;tenant_id&lt;/CODE&gt; if you have multi-tenancy. Aggregating session cost by tenant in App Insights is straightforward once the dimension is on the span.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Alerts on shape, not just rate.&lt;/STRONG&gt; A doubling in average response length or a sudden drop in tool invocation frequency often precedes a quality regression that error-rate alerts will miss entirely.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;A weekly "agent health" report in your team channel — pulling these App Insights queries together — beats a perfect dashboard nobody opens.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;A Pragmatic Maturity Path&lt;/H2&gt;
&lt;P&gt;Most teams cannot build the whole loop on day one. A reasonable order:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Infrastructure in Terraform.&lt;/STRONG&gt; AIServices account, project, model deployment, ACR, App Insights, role assignment so the project MI can pull from ACR.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;First agent deployed manually with &lt;CODE&gt;azd&lt;/CODE&gt;.&lt;/STRONG&gt; Just to prove the round trip end to end.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;CODE&gt;agent.yaml&lt;/CODE&gt; plus a deploy script that builds, pushes by digest, and creates a version.&lt;/STRONG&gt; One environment.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Three environments with manual promotion by manifest.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;A 20-row eval dataset with one grader, run on every PR.&lt;/STRONG&gt; Advisory only at first.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Eval as a blocking gate.&lt;/STRONG&gt; Thresholds tuned from the advisory phase.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Canary rollout via traffic split.&lt;/STRONG&gt; Versions held live for a stability window before deletion.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Production sampling into offline evaluation.&lt;/STRONG&gt; Drift detection.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model version upgrade playbook.&lt;/STRONG&gt; Documented, exercised once on a low-risk agent.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tested rollback via weight shift.&lt;/STRONG&gt; The first time you discover a rollback bug should not be during an incident.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Each step is independently useful. Skipping ahead — particularly to step 6 without time in step 5 — produces thresholds that block legitimate changes and erode trust in the pipeline.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Where This Is Heading&lt;/H2&gt;
&lt;P&gt;The platform is moving. A few things to watch as you build:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Declarative Hosted Agent versions in Terraform.&lt;/STRONG&gt; AzureRM coverage of Hosted Agents and agent versions is expanding. Parts of the deploy script will collapse into Terraform as that lands. The script-driven approach in this post is the bridge, not the destination.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Continuous evaluation as a first-class platform feature.&lt;/STRONG&gt; Sampling production traffic into scheduled evals — what you wire by hand today — is moving into the Foundry control plane.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Multi-agent composition over &lt;A href="https://a2a-protocol.org/" target="_blank" rel="noopener"&gt;A2A&lt;/A&gt;.&lt;/STRONG&gt; As the A2A endpoint moves from preview to general availability and more frameworks ship A2A clients, multi-agent workflows become a first-class deployment shape. The DevOps loop extends — version pinning between agents, eval at the workflow level, observability across the agent graph — but the manifest grows accordingly.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Toolbox-managed tool surfaces.&lt;/STRONG&gt; As more tool integrations move behind the project Toolbox MCP endpoint, the agent image gets smaller and the tool configuration becomes a project-level concern. That changes what belongs in &lt;CODE&gt;agent.yaml&lt;/CODE&gt; versus what belongs in Terraform.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The throughline: the more the platform absorbs, the more your job shifts from wiring plumbing to defining policy. What "good" means for your agent, what the quality floor is, who can approve a model upgrade, how fast you can roll back. Those decisions do not get automated away. The pipeline just makes them executable.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;Terraform provisions the Foundry project, model deployment, ACR, and observability. The DevOps loop on top of it — container builds pinned by digest, immutable agent versions, evaluation as a release gate, manifest-driven promotion across environments, traffic-split canary and rollback, and observability sliced by version — gets Hosted Agents to production and keeps them there.&lt;/P&gt;
&lt;P&gt;Build it incrementally. Treat the image digest and the version spec as the deploy artifact, not the source branch. Make evaluation a check the pipeline cares about. Use version weights as your rollout and rollback primitive. And design for the day the platform absorbs the next layer of plumbing, so that when it does, your work moves up the stack instead of getting thrown away.&lt;/P&gt;</description>
      <pubDate>Wed, 03 Jun 2026 19:34:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/devops-for-microsoft-hosted-agents-from-terraform-apply-to/ba-p/4523740</guid>
      <dc:creator>LZhang</dc:creator>
      <dc:date>2026-06-03T19:34:50Z</dc:date>
    </item>
    <item>
      <title>Token economics–driven architecture: hybrid models, AI Runway, AKS Kata MicroVM, MCP</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/token-economics-driven-architecture-hybrid-models-ai-runway-aks/ba-p/4524276</link>
      <description>&lt;H2 data-line="6"&gt;1. The moment the bill arrived&lt;/H2&gt;
&lt;P data-line="8"&gt;For most of 2024 and 2025, "Agents" were a demo word. In 2026 they are a line item on the cloud invoice.&lt;/P&gt;
&lt;P data-line="10"&gt;Every major model provider — OpenAI, Anthropic, Google, Mistral, DeepSeek, and even the in-cluster open-weights serving stacks — now bills by the token. Input tokens, output tokens, cached tokens, reasoning tokens, tool-call tokens. The unit price has come down. The number of tokens an autonomous agent burns through has gone up by an order of magnitude.&lt;/P&gt;
&lt;P data-line="12"&gt;The slide deck I keep coming back to is module 02 of the&amp;nbsp;&lt;A href="https://github.com/kinfey/EnterpriseAgenticWorkshop" target="_blank" rel="noopener" data-href="https://github.com/kinfey/EnterpriseAgenticWorkshop"&gt;Enterprise Agent Workshop&lt;/A&gt;&amp;nbsp;—&amp;nbsp;&lt;EM&gt;Token Economics and Cost Control&lt;/EM&gt;. The short version: an agentic system is&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;a chat app. A chat app emits one model call per user turn. An agent emits a model call to plan, another to pick a tool, another to interpret the tool result, another to decide the next step, and another to summarize — and then it loops. Multiply by tools that themselves invoke models. Multiply again by retries and reflection.&lt;/P&gt;
&lt;P data-line="14"&gt;The bill is no longer "what does the model cost per million tokens." The bill is "what does my&amp;nbsp;&lt;STRONG&gt;architecture&lt;/STRONG&gt;&amp;nbsp;cost per user request."&lt;/P&gt;
&lt;P data-line="16"&gt;This post is about an architecture that answers that question on purpose — and that does it without giving up the security properties an enterprise actually needs. The blueprint lives in this repo,&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/tree/main/code/BYOT_Dev" target="_blank" rel="noopener" data-href="../README.md"&gt;BYOT_Dev&lt;/A&gt;: a four-agent SDLC tower (Requirements → Code → Test → Deploy) running on AKS, each agent boxed inside its own Kata MicroVM, each one exposing tools to GitHub Copilot Chat over the Model Context Protocol, and all of them sharing a single on-cluster small-language-model endpoint served by&amp;nbsp;&lt;STRONG&gt;AI Runway&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 data-line="20"&gt;2. Why agentic workloads inflate the token bill&lt;/H2&gt;
&lt;P data-line="22"&gt;Three forces compound:&lt;/P&gt;
&lt;OL data-line="24"&gt;
&lt;LI data-line="24"&gt;&lt;STRONG&gt;Autonomy multiplies call count.&lt;/STRONG&gt;&amp;nbsp;A user typing "build me a URL shortener" produces&amp;nbsp;&lt;EM&gt;one&lt;/EM&gt;&amp;nbsp;prompt at the IDE. By the time a 4-agent pipeline has clarified requirements, generated code, written tests, and produced a Kubernetes manifest, you have spent 30–200 model calls — most of them invisible to the user.&lt;/LI&gt;
&lt;LI data-line="25"&gt;&lt;STRONG&gt;Reasoning eats output tokens.&lt;/STRONG&gt;&amp;nbsp;Modern reasoning models think before they speak. That hidden chain-of-thought is&amp;nbsp;&lt;STRONG&gt;billed&lt;/STRONG&gt;. A 5-line answer might charge you for 3,000 reasoning tokens.&lt;/LI&gt;
&lt;LI data-line="26"&gt;&lt;STRONG&gt;Context inflation.&lt;/STRONG&gt;&amp;nbsp;Every tool result is re-injected into the next call. A 50 KB code review answer becomes the context of the next refactor turn. Costs grow super-linearly with conversation depth.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="28"&gt;You can't out-prompt-engineer this. The only durable mitigation is&amp;nbsp;&lt;STRONG&gt;architectural&lt;/STRONG&gt;&amp;nbsp;— and it has three levers:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Lever&lt;/th&gt;&lt;th&gt;What it means in practice&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Model tiering&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Use a small, cheap model for narrow tasks; reserve the frontier model for orchestration and judgement.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Placement tiering&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Place each model where it's cheapest to run: on-cluster CPU for tiny SLMs, on-cluster GPU for mid-size models, cloud APIs for frontier reasoning.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Protocol tiering&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Use a standard like MCP so the expensive orchestrator can hand off subtasks to the cheap workers without lock-in.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="36"&gt;The architecture this post describes pulls all three levers at once.&lt;/P&gt;
&lt;H2 data-line="40"&gt;3. The mental model: frontier brain, small-model hands&lt;/H2&gt;
&lt;P data-line="42"&gt;Look at this picture:&lt;/P&gt;
&lt;img /&gt;&lt;LI-CODE lang="yaml"&gt;spec:
  image: ghcr.io/kaito-project/aikit/llama3.2:1b
  model: { id: "kaito/llama3.2-1b", source: huggingface }
  engine: { type: llamacpp }
  provider:
    name: kaito
    overrides:
      resource:
        instanceType: Standard_D4s_v3
        preferredNodes: ["aks-nodepool1-21523631-vmss000001"]
  nodeSelector: { agentpool: nodepool1 }
  resources: { cpu: "2", memory: "4Gi" }
  scaling: { replicas: 1 }&lt;/LI-CODE&gt;
&lt;P data-line="111"&gt;AI Runway then takes care of:&lt;/P&gt;
&lt;UL data-line="113"&gt;
&lt;LI data-line="113"&gt;selecting the&amp;nbsp;&lt;STRONG&gt;engine&lt;/STRONG&gt;&amp;nbsp;(llamacpp&amp;nbsp;for CPU,&amp;nbsp;vllm&amp;nbsp;or&amp;nbsp;dynamo&amp;nbsp;for GPU);&lt;/LI&gt;
&lt;LI data-line="114"&gt;selecting the&amp;nbsp;&lt;STRONG&gt;provider&lt;/STRONG&gt;&amp;nbsp;(kaito&amp;nbsp;today, others coming);&lt;/LI&gt;
&lt;LI data-line="115"&gt;pulling the&amp;nbsp;&lt;STRONG&gt;model image&lt;/STRONG&gt;&amp;nbsp;from the AIKit catalog;&lt;/LI&gt;
&lt;LI data-line="116"&gt;exposing an OpenAI-compatible&amp;nbsp;Service&amp;nbsp;at&amp;nbsp;http://llama3-2-1b-cpu.airunway-models.svc:80/v1.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="118"&gt;&lt;STRONG&gt;A note on the CPU-only example.&lt;/STRONG&gt;&amp;nbsp;This repo deliberately uses&amp;nbsp;&lt;STRONG&gt;CPU + Llama-3.2-1B&lt;/STRONG&gt;&amp;nbsp;to prove the architecture can run on the cheapest node SKU available. In production you should not assume CPU is always right. The right answer is&amp;nbsp;&lt;STRONG&gt;scenario-driven&lt;/STRONG&gt;:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Scenario&lt;/th&gt;&lt;th&gt;Suggested placement&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;High-volume, narrow, latency-tolerant task (e.g. "expand a requirement into bullet points")&lt;/td&gt;&lt;td&gt;On-cluster CPU SLM (1B–3B) — what this repo demonstrates&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Code generation, refactoring, multi-file reasoning&lt;/td&gt;&lt;td&gt;On-cluster GPU mid-model (7B–14B) via KAITO&amp;nbsp;vllm, on an AKS GPU pool that auto-scales from zero&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Privacy-sensitive enterprise data, must not leave the cluster&lt;/td&gt;&lt;td&gt;On-cluster GPU, possibly with confidential compute&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Frontier reasoning, planning, judging tool output&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;The Copilot seat's already-included frontier model&lt;/STRONG&gt;, called sparingly via MCP — not a second pay-per-token endpoint you have to provision&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="127"&gt;AI Runway makes that choice a YAML edit, not a refactor. The point of the abstraction is&amp;nbsp;&lt;STRONG&gt;optionality&lt;/STRONG&gt;&amp;nbsp;— the right to change your mind about token economics quarter by quarter without rewriting agents.&lt;/P&gt;
&lt;H2 data-line="131"&gt;5. Hybrid scaling: all inference on AKS, planning on the Copilot tokens you already pay for&lt;/H2&gt;
&lt;P data-line="133"&gt;The single biggest token-economics mistake an enterprise can make right now is treating model placement as a binary — "all in the cluster" or "all on a pay-per-token cloud API." Real workloads are neither. The pattern that actually saves money has two ingredients,&amp;nbsp;&lt;STRONG&gt;and both of them are already on your invoice&lt;/STRONG&gt;:&lt;/P&gt;
&lt;OL data-line="135"&gt;
&lt;LI data-line="135"&gt;&lt;STRONG&gt;AKS that you already provisioned.&lt;/STRONG&gt;&amp;nbsp;A small CPU node pool for the steady-state workload, plus a GPU node pool that scales from&amp;nbsp;&lt;STRONG&gt;zero&lt;/STRONG&gt;&amp;nbsp;when the small pool can't keep up. Same cluster, same Kata isolation, one invoice line.&lt;/LI&gt;
&lt;LI data-line="136"&gt;&lt;STRONG&gt;The Copilot seat the developer already pays for.&lt;/STRONG&gt;&amp;nbsp;Copilot Chat's frontier model has its own token allowance baked into the seat. Use&amp;nbsp;&lt;EM&gt;that&lt;/EM&gt;&amp;nbsp;allowance — not a separately provisioned cloud inference endpoint — to do the planning that drives the cheap AKS workers via MCP.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="138"&gt;That is the whole "hybrid." No external Foundry endpoint, no second per-token meter for inference. Just AKS capacity that grows when you need it + a frontier brain you already pay for.&lt;/P&gt;
&lt;P data-line="140"&gt;The agent traffic split is roughly:&lt;/P&gt;
&lt;UL data-line="142"&gt;
&lt;LI data-line="142"&gt;&lt;STRONG&gt;~85% of agent calls&lt;/STRONG&gt;&amp;nbsp;are short, narrow, predictable —&amp;nbsp;&lt;EM&gt;"expand this requirement"&lt;/EM&gt;,&amp;nbsp;&lt;EM&gt;"format this YAML"&lt;/EM&gt;,&amp;nbsp;&lt;EM&gt;"summarize this diff"&lt;/EM&gt;. A 1B–3B model on a CPU node answers these in seconds; the bill is the node, not the token.&lt;/LI&gt;
&lt;LI data-line="143"&gt;&lt;STRONG&gt;~15%&lt;/STRONG&gt;&amp;nbsp;are heavier — multi-file refactors, long-context reasoning, the 400-line FastAPI generation. They need a 7B–14B model on a GPU.&lt;/LI&gt;
&lt;LI data-line="144"&gt;&lt;STRONG&gt;Planning and judgement on top of all of it&lt;/STRONG&gt;&amp;nbsp;are done by the Copilot seat's frontier model, which the user is paying for whether you build BYOT or not.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-line="146"&gt;Lever A — a GPU node pool on the same AKS cluster, scaled 0 → N&lt;/H3&gt;
&lt;P data-line="148"&gt;Keep the always-on&amp;nbsp;tiny-cpu&amp;nbsp;ModelDeployment for steady state. Add a second AI Runway&amp;nbsp;ModelDeployment&amp;nbsp;for the mid model on a GPU node pool that is&amp;nbsp;&lt;STRONG&gt;created at size zero&lt;/STRONG&gt; and managed by the AKS Cluster Autoscaler&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;az aks nodepool add \
  --cluster-name $CLUSTER --resource-group $RG \
  --name gpupool \
  --node-vm-size Standard_NC24ads_A100_v4 \
  --node-count 0 --min-count 0 --max-count 4 \
  --enable-cluster-autoscaler \
  --node-taints sku=gpu:NoSchedule \
  --workload-runtime KataVmIsolation&lt;/LI-CODE&gt;&lt;LI-CODE lang="yaml"&gt;# airunway/modeldeployment-mid-gpu.yaml (sketch)
spec:
  image: ghcr.io/kaito-project/aikit/qwen2.5:7b
  engine: { type: vllm }
  provider:
    name: kaito
    overrides:
      resource:
        instanceType: Standard_NC24ads_A100_v4
  nodeSelector: { agentpool: gpupool }
  tolerations: [{ key: sku, operator: Equal, value: gpu, effect: NoSchedule }]
  resources: { cpu: "4", memory: "32Gi", nvidia.com/gpu: "1" }
  scaling: { replicas: 0, maxReplicas: 4 }&lt;/LI-CODE&gt;
&lt;P data-line="177"&gt;The key trick is&amp;nbsp;replicas: 0&amp;nbsp;plus an autoscaler&amp;nbsp;min-count 0.&amp;nbsp;&lt;STRONG&gt;When nobody is asking the mid model anything, no GPU node is running and no GPU node is billed.&lt;/STRONG&gt;&amp;nbsp;The first request causes AI Runway to scale to 1, which triggers the Cluster Autoscaler to provision a GPU node, which gets scheduled with Kata Pod Sandboxing intact. When traffic dies down, both the replica and the node go back to zero. All of this is&amp;nbsp;&lt;EM&gt;inside&lt;/EM&gt;&amp;nbsp;AKS — the agents never leave the cluster to find a GPU.&lt;/P&gt;
&lt;H3 data-line="179"&gt;Lever B — reuse the Copilot frontier tokens you already pay for&lt;/H3&gt;
&lt;P data-line="181"&gt;This is the lever most token-cost writeups miss.&amp;nbsp;&lt;STRONG&gt;Every developer using BYOT already has a Copilot seat.&lt;/STRONG&gt;&amp;nbsp;That seat carries a frontier-model token allowance which Copilot Chat consumes the moment the user types into the chat. The orchestration loop in&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/docs/workflow.md" target="_blank" rel="noopener" data-href="../docs/workflow.md"&gt;docs/workflow.md&lt;/A&gt;&amp;nbsp;—&amp;nbsp;&lt;EM&gt;"plan which tool to call next, read the tool's output, summarize the result"&lt;/EM&gt;&amp;nbsp;— is paid out of&amp;nbsp;&lt;STRONG&gt;that&lt;/STRONG&gt;&amp;nbsp;allowance, not out of a new inference endpoint you provision.&lt;/P&gt;
&lt;P data-line="183"&gt;This means:&lt;/P&gt;
&lt;UL data-line="185"&gt;
&lt;LI data-line="185"&gt;You do&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;stand up a separate cloud OpenAI / Foundry deployment for "the smart model." The smart model is already on the user's screen.&lt;/LI&gt;
&lt;LI data-line="186"&gt;You do&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;put a per-token meter on the agent-to-frontier path. The frontier is upstream of your agents — it calls&amp;nbsp;&lt;EM&gt;them&lt;/EM&gt;&amp;nbsp;via MCP, not the other way around.&lt;/LI&gt;
&lt;LI data-line="187"&gt;The only per-token spend the architecture introduces is what Copilot itself charges against the seat, which is independent of how many BYOT agents you stand up.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="189"&gt;The net effect: the parts of the workload that are&amp;nbsp;&lt;EM&gt;expensive per token&lt;/EM&gt;&amp;nbsp;(planning, judgement) run on tokens the company already buys; the parts that are&amp;nbsp;&lt;EM&gt;cheap to compute&lt;/EM&gt;&amp;nbsp;(long-form generation) run on AKS compute you already pay for as node hours.&lt;/P&gt;
&lt;H3 data-line="191"&gt;How the agents pick between the two AKS backends&lt;/H3&gt;
&lt;P data-line="193"&gt;The Agent Framework client in&amp;nbsp;&lt;A class="lia-external-url" href="https://file+.vscode-resource.vscode-cdn.net/Users/lokinfey/Desktop/SLM/AIRunway/Train/BYOT_Dev/agents/app/airunway_client.py" target="_blank" rel="noopener" data-href="../agents/app/airunway_client.py"&gt;https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/agents/app/airunway_client.py&lt;/A&gt;&amp;nbsp;takes its&amp;nbsp;base_url&amp;nbsp;and&amp;nbsp;model&amp;nbsp;from the ConfigMap. Three strategies, in increasing sophistication:&lt;/P&gt;
&lt;OL data-line="195"&gt;
&lt;LI data-line="195"&gt;&lt;STRONG&gt;Per-role static binding.&lt;/STRONG&gt;&amp;nbsp;byot-requirements&amp;nbsp;and&amp;nbsp;byot-test&amp;nbsp;(cheap, narrow) get&amp;nbsp;AIRUNWAY_BASE_URL=tiny-cpu.&amp;nbsp;byot-code&amp;nbsp;and&amp;nbsp;byot-deploy&amp;nbsp;(heavier generation) get&amp;nbsp;AIRUNWAY_BASE_URL=mid-gpu. One ConfigMap, one rollout.&lt;/LI&gt;
&lt;LI data-line="196"&gt;&lt;STRONG&gt;Try-then-scale-up inside the tool.&lt;/STRONG&gt;&amp;nbsp;Each tool tries&amp;nbsp;tiny-cpu&amp;nbsp;first; if the answer is too short, fails a quality check, or times out, it retries against&amp;nbsp;mid-gpu. The small model handles the easy 85%; the GPU pool handles only the 15% that actually needed it.&lt;/LI&gt;
&lt;LI data-line="197"&gt;&lt;STRONG&gt;AI Gateway in front of both.&lt;/STRONG&gt;&amp;nbsp;Put&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/api-management/genai-gateway-capabilities" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/azure/api-management/genai-gateway-capabilities"&gt;Azure API Management as an AI Gateway&lt;/A&gt;&amp;nbsp;in front of the two AI Runway services. The agent talks to one URL; the gateway does semantic caching, token budgeting, and load-aware routing between&amp;nbsp;tiny-cpu&amp;nbsp;and&amp;nbsp;mid-gpu. Both backends remain in your AKS — the gateway only routes.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3 data-line="199"&gt;A back-of-envelope token saving&lt;/H3&gt;
&lt;P data-line="201"&gt;Assume one Copilot Chat session through the BYOT tower fires&amp;nbsp;&lt;STRONG&gt;30 model calls&lt;/STRONG&gt;&amp;nbsp;at the lower agents. If those 30 went to an external frontier API at, say, $5 / million output tokens with an average 2 K output per call, that is&amp;nbsp;&lt;STRONG&gt;$0.30 / session&lt;/STRONG&gt;&amp;nbsp;in&amp;nbsp;&lt;EM&gt;additional&lt;/EM&gt;&amp;nbsp;lower-tier model spend — stacked on top of what Copilot Chat already charges the seat for planning.&lt;/P&gt;
&lt;P data-line="203"&gt;With the hybrid AKS + seat-tokens pattern:&lt;/P&gt;
&lt;UL data-line="205"&gt;
&lt;LI data-line="205"&gt;25–26 calls (~85%) →&amp;nbsp;tiny-cpu&amp;nbsp;on a CPU node that is already running for the always-on agents →&amp;nbsp;&lt;STRONG&gt;≈ $0 marginal&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-line="206"&gt;4–5 calls (~15%) →&amp;nbsp;mid-gpu, billed as GPU node hours only while AI Runway has scaled up, and amortised across every concurrent BYOT user that lands on the same node →&amp;nbsp;&lt;STRONG&gt;≈ $0.02–0.05&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-line="207"&gt;Planning / judgement → already inside the Copilot seat allowance the developer is paying for →&amp;nbsp;&lt;STRONG&gt;$0 additional&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="209"&gt;A $0.30-per-session pay-per-token outcome collapses toward&amp;nbsp;&lt;STRONG&gt;≈ $0.02–0.05 of pure AKS compute&lt;/STRONG&gt;, and the GPU bill returns to zero when nobody is asking hard questions. That is the lever. The reason it works is that&amp;nbsp;&lt;STRONG&gt;AI Runway gives the agents a single in-cluster front door&lt;/STRONG&gt;, AKS gives the cluster elastic GPU capacity it doesn't pay for while idle, and Copilot Chat brings its own pre-paid frontier brain.&lt;/P&gt;
&lt;H2 data-line="213"&gt;6. Kata MicroVM: the hardware-level helmet for agentic code&lt;/H2&gt;
&lt;P data-line="215"&gt;Cost is one half of the agentic-workload problem. The other half is what happens&amp;nbsp;&lt;STRONG&gt;inside&lt;/STRONG&gt;&amp;nbsp;the box you put the agent in.&lt;/P&gt;
&lt;P data-line="217"&gt;Earlier this year I published&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/giving-the-copilot-sdk-agent-a-hardware-level-helmet-using-kata-microvm-on-aks/4518668" target="_blank" rel="noopener" data-href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/giving-the-copilot-sdk-agent-a-hardware-level-helmet-using-kata-microvm-on-aks/4518668"&gt;&lt;EM&gt;Giving the Copilot SDK Agent a "hardware-level helmet" using Kata microVM on AKS&lt;/EM&gt;&lt;/A&gt;. The argument, compressed:&lt;/P&gt;
&lt;P data-line="219"&gt;A traditional container is an apartment with shared roof — the host Linux kernel. For a hand-written service the tenant is predictable. For an agent,&amp;nbsp;&lt;STRONG&gt;the tenant is the model&lt;/STRONG&gt;, deciding at runtime which shell command to run, which file to read, which&amp;nbsp;npx&amp;nbsp;package to install. That's a new threat model. Container namespaces aren't sized for it. You want a&amp;nbsp;&lt;STRONG&gt;dedicated guest kernel per Pod&lt;/STRONG&gt;&amp;nbsp;— a microVM.&lt;/P&gt;
&lt;P data-line="221"&gt;&lt;A href="https://katacontainers.io/" target="_blank" rel="noopener" data-href="https://katacontainers.io/"&gt;Kata Containers&lt;/A&gt;&amp;nbsp;is the integration layer that gives Kubernetes microVMs. AKS ships it as&amp;nbsp;&lt;STRONG&gt;Pod Sandboxing&lt;/STRONG&gt;&amp;nbsp;with the&amp;nbsp;kata-vm-isolation&amp;nbsp;RuntimeClass on top of Hyper-V — created automatically when the node pool is provisioned with&amp;nbsp;--workload-runtime KataVmIsolation.&lt;/P&gt;
&lt;P data-line="223"&gt;In&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/README.md" target="_blank" rel="noopener" data-href="../README.md"&gt;BYOT_Dev&lt;/A&gt; every agent Pod sets:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;spec:
  runtimeClassName: kata-vm-isolation
  containers:
    - name: agent
      securityContext:
        runAsNonRoot: true
        readOnlyRootFilesystem: true
        capabilities: { drop: ["ALL"] }
        seccompProfile: { type: RuntimeDefault }&lt;/LI-CODE&gt;
&lt;P&gt;…and AKS does the rest. The Pod boots a real Hyper-V microVM, with its own guest kernel, before the container even starts. Verifying it is one command:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;kubectl -n agents exec deploy/byot-requirements -- uname -r
# compare with the kernel on the node — they differ → microVM confirmed&lt;/LI-CODE&gt;
&lt;P data-line="244"&gt;The repository also pins&amp;nbsp;&lt;STRONG&gt;one agent per node&lt;/STRONG&gt;&amp;nbsp;via&amp;nbsp;podAntiAffinity&amp;nbsp;on&amp;nbsp;kubernetes.io/hostname, so the four agents live on four physically distinct Kata hosts — a model escape in one cannot reach the others through a shared host kernel, because there is no shared host kernel.&lt;/P&gt;
&lt;P data-line="246"&gt;The connection to token economics is this: the moment you trust a cheap on-cluster model to run agent loops on real customer code, the security envelope has to be&amp;nbsp;&lt;STRONG&gt;stronger&lt;/STRONG&gt;&amp;nbsp;than a normal container, not weaker. Kata is the thing that makes "cheap" and "safe" not a trade-off. And because AKS Pod Sandboxing applies the same way to the CPU pool, the GPU pool, and any future node pool you add for burst, the hybrid placement story above&amp;nbsp;&lt;STRONG&gt;does not weaken the isolation story&lt;/STRONG&gt;&amp;nbsp;— every Pod, on every tier, still boots its own guest kernel.&lt;/P&gt;
&lt;H2 data-line="250"&gt;7. MCP: how GitHub Copilot Chat actually drives this tower&lt;/H2&gt;
&lt;P data-line="252"&gt;The final piece is the protocol. The agents inside the Kata MicroVMs are useless unless something can call them. The "something" the user already has open is&amp;nbsp;&lt;STRONG&gt;GitHub Copilot Chat in VS Code&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P data-line="254"&gt;The&amp;nbsp;&lt;A href="https://modelcontextprotocol.io/" target="_blank" rel="noopener" data-href="https://modelcontextprotocol.io"&gt;Model Context Protocol&lt;/A&gt;&amp;nbsp;is the standard Copilot Chat (and almost every other serious agentic IDE) speaks to remote tool servers. In this repo each role exposes its tools via&amp;nbsp;FastMCP&amp;nbsp;over Streamable HTTP — see&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/agents/app/main.py" target="_blank" rel="noopener"&gt;agents/app/main.py&amp;nbsp;&lt;/A&gt;and the per-role tool sets in&amp;nbsp;&lt;A href="https://file+.vscode-resource.vscode-cdn.net/Users/lokinfey/Desktop/SLM/AIRunway/Train/BYOT_Dev/agents/app/roles/" target="_blank" rel="noopener" data-href="../agents/app/roles/"&gt;agents/app/roles/&lt;/A&gt;.&lt;/P&gt;
&lt;P data-line="256"&gt;Service exposure is a small but important detail. The repo uses&amp;nbsp;type: LoadBalancer&amp;nbsp;for each role's Service — see&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/k8s/services.yaml" target="_blank" rel="noopener" data-href="../k8s/services.yaml"&gt;k8s/services.yaml&lt;/A&gt;&amp;nbsp;— because:&lt;/P&gt;
&lt;UL data-line="258"&gt;
&lt;LI data-line="258"&gt;kubectl port-forward&amp;nbsp;&lt;STRONG&gt;does not work against Kata Pods&lt;/STRONG&gt;&amp;nbsp;(the listener lives inside the microVM, not in the host sandbox netns);&lt;/LI&gt;
&lt;LI data-line="259"&gt;kubectl proxy&amp;nbsp;works but pins Copilot to&amp;nbsp;localhost&amp;nbsp;and requires a long-running local process;&lt;/LI&gt;
&lt;LI data-line="260"&gt;a LoadBalancer gives each agent a public Azure IP the IDE can hit directly.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="262"&gt;Once the four LoadBalancer IPs are in&amp;nbsp;&lt;A href="https://file+.vscode-resource.vscode-cdn.net/Users/lokinfey/Desktop/SLM/AIRunway/Train/BYOT_Dev/README.md" target="_blank" rel="noopener" data-href="../README.md"&gt;.vscode/mcp.json&lt;/A&gt;, Copilot Chat in agent mode sees four MCP servers —&amp;nbsp;byot-requirements,&amp;nbsp;byot-code,&amp;nbsp;byot-test,&amp;nbsp;byot-deploy&amp;nbsp;— and the user can simply say:&lt;/P&gt;
&lt;P data-line="264"&gt;&lt;EM&gt;"Use the byot tower to take this idea — a URL shortener with click analytics — from requirements through deployment."&lt;/EM&gt;&lt;/P&gt;
&lt;P data-line="266"&gt;What happens under the covers (&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/docs/workflow.md" target="_blank" rel="noopener" data-href="../docs/workflow.md"&gt;docs/workflow.md&lt;/A&gt;):&lt;/P&gt;
&lt;OL data-line="268"&gt;
&lt;LI data-line="268"&gt;Copilot's frontier model&amp;nbsp;&lt;STRONG&gt;plans&lt;/STRONG&gt;&amp;nbsp;the sequence.&amp;nbsp;&lt;EM&gt;Frontier tokens spent: small, but smart.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-line="269"&gt;It calls&amp;nbsp;byot-requirements.gather_requirements({"idea": "URL shortener…"})&amp;nbsp;over MCP.&amp;nbsp;&lt;EM&gt;No frontier tokens; the cluster-side Llama-3.2-1B does the work.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-line="270"&gt;It calls&amp;nbsp;byot-code.implement_from_requirements({...}).&amp;nbsp;&lt;EM&gt;Same — cluster-side small model.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-line="271"&gt;It calls&amp;nbsp;byot-test.generate_test_plan({...}).&amp;nbsp;&lt;EM&gt;Same.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-line="272"&gt;It calls&amp;nbsp;byot-deploy.generate_k8s_manifest({...}).&amp;nbsp;&lt;EM&gt;Same.&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-line="273"&gt;Copilot's frontier model&amp;nbsp;&lt;STRONG&gt;reads&lt;/STRONG&gt;&amp;nbsp;the four results and presents a coherent summary to the user.&amp;nbsp;&lt;EM&gt;Frontier tokens spent: small.&lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="275"&gt;The expensive model decided&amp;nbsp;&lt;STRONG&gt;what&lt;/STRONG&gt;&amp;nbsp;to do five times. The cheap model did the actual long-form generation four times. That is the token-economics win, and the only reason it's possible without lock-in is that MCP is an open standard.&lt;/P&gt;
&lt;H2 data-line="279"&gt;8. Reading the architecture as a budget statement&lt;/H2&gt;
&lt;P data-line="281"&gt;Translate the picture into a unit-cost table — now with the hybrid tiers explicit:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Layer&lt;/th&gt;&lt;th&gt;Where the cost lives&lt;/th&gt;&lt;th&gt;What controls it&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;User input + IDE planning&lt;/td&gt;&lt;td&gt;Copilot seat (per-user subscription)&lt;/td&gt;&lt;td&gt;Already paid — flat rate&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Frontier orchestration tokens&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Copilot seat token allowance — already included, used for MCP planning, no separate endpoint&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Number of agent rounds Copilot does&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tool-call traffic&lt;/td&gt;&lt;td&gt;Azure LoadBalancer egress&lt;/td&gt;&lt;td&gt;Negligible at this scale&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;tiny-cpu&amp;nbsp;inference (steady state, ~85%)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;AKS CPU node hours (1×&amp;nbsp;D4s_v3&amp;nbsp;in this demo)&lt;/td&gt;&lt;td&gt;Replicas, model size, batch size&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;mid-gpu&amp;nbsp;inference (autoscaled, ~15%)&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;AKS GPU node hours on the same cluster,&amp;nbsp;&lt;STRONG&gt;only while replicas &amp;gt; 0&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Cluster Autoscaler / Karpenter&amp;nbsp;min=0 max=N, scale-to-zero&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Hardware isolation&lt;/td&gt;&lt;td&gt;AKS Pod Sandboxing (Kata) — same node hours&lt;/td&gt;&lt;td&gt;Whether you turn it on (you should)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Provider swap-out&lt;/td&gt;&lt;td&gt;AI Runway YAML&lt;/td&gt;&lt;td&gt;A&amp;nbsp;kubectl apply&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="293"&gt;Three things to notice.&lt;/P&gt;
&lt;P data-line="295"&gt;First,&amp;nbsp;&lt;STRONG&gt;most of the per-request variable cost has moved from a token meter to a node meter&lt;/STRONG&gt;. CPU hours are easier to forecast, easier to chargeback, and easier to cap than per-call token spend. You know how many&amp;nbsp;D4s_v3&amp;nbsp;cores you're paying for; you do not know in advance how many tokens a frontier model will decide it needs.&lt;/P&gt;
&lt;P data-line="297"&gt;Second,&amp;nbsp;&lt;STRONG&gt;GPU capacity is no longer a fixed bet, and it never leaves AKS.&lt;/STRONG&gt;&amp;nbsp;The GPU node pool sits at zero nodes until AI Runway needs it, and when it does, it scales up&amp;nbsp;&lt;EM&gt;inside the same cluster&lt;/EM&gt;&amp;nbsp;under the same Kata RuntimeClass — no second region, no second tenancy, no second per-token bill.&lt;/P&gt;
&lt;P data-line="299"&gt;Third,&amp;nbsp;&lt;STRONG&gt;the frontier brain is reused, not re-bought.&lt;/STRONG&gt;&amp;nbsp;The planning and judgement that drives the whole tower runs on the Copilot seat token allowance the developer already pays for. There is no separate "smart model" cloud endpoint provisioned by BYOT, so there is no second per-token meter to babysit.&lt;/P&gt;
&lt;P data-line="301"&gt;And because Kata Pod Sandboxing is included in AKS and applies the same way on the CPU pool and the GPU pool,&amp;nbsp;&lt;STRONG&gt;the security cost on top of the compute cost is zero&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P data-line="303"&gt;That is what makes this architecture cost-aware&amp;nbsp;&lt;STRONG&gt;and&lt;/STRONG&gt;&amp;nbsp;elastically-scalable&amp;nbsp;&lt;STRONG&gt;and&lt;/STRONG&gt;&amp;nbsp;safety-aware at the same time. Those three used to be a trade-off. They no longer are.&lt;/P&gt;
&lt;H2 data-line="307"&gt;9. Six commands, end-to-end&lt;/H2&gt;
&lt;P data-line="309"&gt;For completeness, the repo's run order (&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/blob/main/code/BYOT_Dev/README.md" target="_blank" rel="noopener" data-href="../README.md"&gt;README.md&lt;/A&gt;):&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# 0. one-time prereqs: az login, kubectl, helm, docker, aks-preview
az login

# 1. provision AKS with Kata + ACR + AzureLinux
bash infra/01-create-aks-kata.sh

# 2. install AI Runway controller + KAITO provider (pinned to v0.5.0)
bash infra/02-install-airunway.sh

# 3. deploy Llama-3.2-1B on CPU via AI Runway ModelDeployment
bash infra/03-deploy-qwen.sh

# 4. build &amp;amp; push the single agent image to ACR
bash infra/04-build-push-agents.sh

# 5. deploy the 4 Kata-isolated MCP agents
bash infra/05-deploy-agents.sh

# 6. print the public MCP endpoints for GitHub Copilot
bash infra/06-show-mcp-endpoints.sh&lt;/LI-CODE&gt;
&lt;P data-line="334"&gt;Drop the printed IPs into&amp;nbsp;&lt;A href="https://file+.vscode-resource.vscode-cdn.net/Users/lokinfey/Desktop/SLM/AIRunway/Train/BYOT_Dev/README.md" target="_blank" rel="noopener" data-href="../README.md"&gt;.vscode/mcp.json&lt;/A&gt;, open Copilot Chat, and you have a fully working, hardware-isolated, cost-aware agentic tower talking to a small model on a CPU node — driven by the frontier model the user is already paying a seat for. Add the&amp;nbsp;mid-gpu&amp;nbsp;ModelDeployment on a scale-to-zero GPU node pool alongside it whenever your traffic justifies the next tier; the agents and the Copilot integration don't change, and nothing leaves AKS.&lt;/P&gt;
&lt;H2 data-line="338"&gt;10. Wrapping up: the through-line&lt;/H2&gt;
&lt;P data-line="340"&gt;Let me trace it one more time:&lt;/P&gt;
&lt;OL data-line="342"&gt;
&lt;LI data-line="342"&gt;&lt;STRONG&gt;Token economics is the new SLO.&lt;/STRONG&gt;&amp;nbsp;Agentic workloads multiply model calls; every call has a price. Architecture, not prompts, is what bends the curve.&lt;/LI&gt;
&lt;LI data-line="343"&gt;&lt;STRONG&gt;Tier your models, tier your placement.&lt;/STRONG&gt;&amp;nbsp;Frontier reasoning at the top; small models for the bulk work; on-cluster CPU for steady state and on-cluster GPU for the heavy 15%.&lt;/LI&gt;
&lt;LI data-line="344"&gt;&lt;STRONG&gt;Mix AKS compute with the Copilot tokens you already pay for.&lt;/STRONG&gt;&amp;nbsp;Don't add a second pay-per-token cloud endpoint for inference. The heavy compute belongs on an AKS GPU pool that scales from zero; the planning belongs on the Copilot seat allowance the developer already has. That combination both&amp;nbsp;&lt;STRONG&gt;saves tokens&lt;/STRONG&gt;&amp;nbsp;(no new per-token meter) and&amp;nbsp;&lt;STRONG&gt;scales elastically&lt;/STRONG&gt;&amp;nbsp;(the cluster grows only when AI Runway asks).&lt;/LI&gt;
&lt;LI data-line="345"&gt;&lt;STRONG&gt;AI Runway makes placement a YAML edit.&lt;/STRONG&gt;&amp;nbsp;Today's CPU Llama is tomorrow's GPU Qwen on the same cluster. Same agent code.&lt;/LI&gt;
&lt;LI data-line="346"&gt;&lt;STRONG&gt;Kata MicroVM is non-negotiable for agentic code.&lt;/STRONG&gt;&amp;nbsp;The tenant is the model. The roof must be your own. AKS Pod Sandboxing makes it turnkey — and it applies the same way on the CPU pool and the GPU pool.&lt;/LI&gt;
&lt;LI data-line="347"&gt;&lt;STRONG&gt;MCP is the bridge.&lt;/STRONG&gt;&amp;nbsp;GitHub Copilot Chat is already an MCP client. Expose the cheap workers as MCP tools and the frontier brain calls them — burning the seat tokens, not new tokens.&lt;/LI&gt;
&lt;LI data-line="348"&gt;&lt;STRONG&gt;The reference build is in this repo.&lt;/STRONG&gt;&amp;nbsp;Six commands, four agents, one tiny CPU model, full microVM isolation, real Copilot Chat integration — and a hybrid scaling path you can layer on without changing the agents or leaving AKS.&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;P data-line="350"&gt;In the agentic era, a container is not just a box for your application — it is a box for&amp;nbsp;&lt;STRONG&gt;uncertainty and for tokens&lt;/STRONG&gt;. The microVM hardens the box; AI Runway lets you slide the model in and out of the box, between CPU and GPU nodes in the same cluster, without rewriting anything; MCP lets the user's expensive IDE drive the cheap box from the outside on tokens already on its tab. That is the through-line.&lt;/P&gt;
&lt;P data-line="352"&gt;Build the tower. Watch the bill.&lt;/P&gt;
&lt;H3 data-line="356"&gt;Further reading&lt;/H3&gt;
&lt;UL data-line="358"&gt;
&lt;LI data-line="359"&gt;&lt;A class="lia-external-url" href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/tree/main/code/BYOT_Dev" target="_blank" rel="noopener"&gt;Sample Code&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="359"&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/giving-the-copilot-sdk-agent-a-hardware-level-helmet-using-kata-microvm-on-aks/4518668" target="_blank" rel="noopener" data-href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/giving-the-copilot-sdk-agent-a-hardware-level-helmet-using-kata-microvm-on-aks/4518668"&gt;Giving the Copilot SDK Agent a "hardware-level helmet" using Kata microVM on AKS&lt;/A&gt;.&lt;/LI&gt;
&lt;LI data-line="360"&gt;&lt;A href="https://github.com/kaito-project/airunway" target="_blank" rel="noopener" data-href="https://github.com/kaito-project/airunway"&gt;AI Runway&lt;/A&gt;&amp;nbsp;and&amp;nbsp;&lt;A href="https://github.com/kaito-project/kaito" target="_blank" rel="noopener" data-href="https://github.com/kaito-project/kaito"&gt;KAITO&lt;/A&gt;.&lt;/LI&gt;
&lt;LI data-line="361"&gt;&lt;A href="https://katacontainers.io/" target="_blank" rel="noopener" data-href="https://katacontainers.io/"&gt;Kata Containers&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/aks/use-pod-sandboxing" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/azure/aks/use-pod-sandboxing"&gt;AKS Pod Sandboxing&lt;/A&gt;.&lt;/LI&gt;
&lt;LI data-line="362"&gt;&lt;A href="https://modelcontextprotocol.io/" target="_blank" rel="noopener" data-href="https://modelcontextprotocol.io"&gt;Model Context Protocol&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://code.visualstudio.com/docs/copilot/mcp" target="_blank" rel="noopener" data-href="https://code.visualstudio.com/docs/copilot/mcp"&gt;GitHub Copilot Chat MCP support&lt;/A&gt;.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 03 Jun 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/token-economics-driven-architecture-hybrid-models-ai-runway-aks/ba-p/4524276</guid>
      <dc:creator>kinfey</dc:creator>
      <dc:date>2026-06-03T07:00:00Z</dc:date>
    </item>
    <item>
      <title>GitHub Action for Deploying Hosted Agents</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/github-action-for-deploying-hosted-agents/ba-p/4524947</link>
      <description>&lt;H1&gt;Introduction&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With Microsoft's introduction to Hosted Agents comes a next logical question. How to implement this? Organizations need a method that is quick, repeatable, and requires minimal adjustments to their existing tooling and processes. Thus, we will walk through how to deploy a Hosted Agent through a repeatable GitHub Action.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this is new to you this blog is a follow up to &lt;A href="https://techcommunity.microsoft.com/blog/azuredevcommunityblog/deploying-foundry-hosted-agents-via-rest-api/4524523" target="_blank"&gt;Deploying Foundry Hosted Agents via REST API | Microsoft Community Hub&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Before You Start&lt;/H1&gt;
&lt;P&gt;This action assumes the following are already in place in the workflow that calls it:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;An existing Microsoft Foundry project with a deployed model.&lt;/LI&gt;
&lt;LI&gt;A container image already pushed to Azure Container Registry (ACR).&lt;/LI&gt;
&lt;LI&gt;An identity with the **Foundry User** role on the Foundry project. See [hosted agent permissions](https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/hosted-agent-permissions) for the full permissions reference.&lt;/LI&gt;
&lt;LI&gt;A runner with `az`, `jq`, and `python3` installed. This is true on `ubuntu-latest`; if you self-host, install them explicitly.&lt;/LI&gt;
&lt;LI&gt;azure/login configured in the caller workflow **before** this action runs.&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;⚠️ *&lt;STRONG&gt;Identity prerequisite&lt;/STRONG&gt; This action assumes `azure/login` has already run in the caller workflow and that the resulting identity holds a Foundry data-plane role (e.g., Foundry User). Without that, `az account get-access-token` will fail before the REST call is made.&lt;/P&gt;
&lt;H1&gt;Requirements&lt;/H1&gt;
&lt;P&gt;Grounding ourselves in our requirements to implement the deployment processes, in the quickest way that leverages minimal adjustments and a repeatable process, we will leverage GitHub Action and Bash. The Bash script will take a series of arguments that will be used to call the REST API.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The action requires four inputs: `project_endpoint`, `agent_name`, `image`, and `model_deployment_name`. The example pipeline wires these from the outputs of a preceding IaC step, but the action itself takes plain strings. These strings can come from any tool that can hand them off as workflow inputs. This keeps it flexible and limits adjustments to existing CI/CD processes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If interested, one can use the &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/" target="_blank" rel="noopener"&gt;Azure Developer CLI &lt;/A&gt;(`azd up`) command which is documented via Microsoft official examples and MS Learn. This blog chose not to cover this as the majority of enterprise customers already have tooling they are leveraging other than `azd`.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, one could use the `azure.ai.projects` library to create an agent. This blog made the decision not to go down this route as not all organizations have adopted the philosophy of allowing application code to create underlying compute infrastructure. Additionally, some organizations desire teams outside of developers to control and set the size of the Micro VM (referred to as the "sandbox" in the Foundry docs) that the Hosted Agent is running on.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If your organization does not use GitHub Actions this step should be duplicatable in Azure DevOps leveraging the Bash task.&lt;/P&gt;
&lt;H1&gt;Deployment Steps&lt;/H1&gt;
&lt;P&gt;For us to do this appropriately let's take a step back and evaluate a CI/CD workflow for an Agent whose definition is stored in a container.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ideally a pipeline should follow steps outlined in &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/educatordeveloperblog/cicd-for-ai-agents-on-microsoft-foundry/4522218" target="_blank" rel="noopener" data-lia-auto-title="CI/CD for AI Agents on Microsoft Foundry" data-lia-auto-title-active="0"&gt;CI/CD for AI Agents on Microsoft Foundry&lt;/A&gt;. Those pipelines typically take the shape build/push → IaC → update agent → smoke test. For our purposes, since we are hyper-focusing on the Hosted Agent Deployment via REST API we are going to focus on the repeatable GitHub Action of deploying the agent. To emphasize this our workflow will focus on the step called "Update agent — Foundry data plane POST `agents/NAME/versions`".&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Based on organization preference, I can understand the need to break out the update agent step into a separate workflow. We traditionally don't recommend this as keeping everything in one pipeline means one set of failures to triage, one history to read, and one CI/CD surface to keep current. but This action though is structured to support a split if your release process requires it.&lt;/P&gt;
&lt;H1&gt;Hosted Agent REST Deployment Action&lt;/H1&gt;
&lt;P&gt;This is the crux of why the article exists. If you've followed my style of repeatable &lt;A class="lia-external-url" href="https://aka.ms/yamlpipelines" target="_blank" rel="noopener"&gt;DevOps process for YAML Pipelines&lt;/A&gt;, this action follows similar principles. We will parametrize with defaults to empower minimal configuration while also optimizing for flexibility. To view the full example check out the &lt;A class="lia-external-url" href="https://github.com/JFolberth/simple-hosted-agent-responses/blob/blog/cicd_rest_api_github_action/.github/actions/update-agent/action.yml" target="_blank" rel="noopener"&gt;Update Foundry Agent action&lt;/A&gt; .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Inputs, Outputs, and `runs:` blocks shown below all live in a single file: &lt;A class="lia-external-url" href="https://github.com/JFolberth/simple-hosted-agent-responses/blob/main/.github/actions/update-agent/action.yml" target="_blank" rel="noopener"&gt;`.github/actions/update-agent/action.yml&lt;/A&gt;`.&lt;/P&gt;
&lt;H2&gt;Inputs&lt;/H2&gt;
&lt;P&gt;Here are those parameters with descriptions and defaults:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;inputs:
  project_endpoint:
    description: Foundry project endpoint URL
    required: true
  agent_name:
    description: Name of the hosted agent
    required: true
  image:
    description: Full container image reference (registry/name:tag)
    required: true
  model_deployment_name:
    description: Name of the AI model deployment
    required: true
  cpu:
    description: CPU allocation for the agent container
    required: false
    default: '0.25'
  memory:
    description: Memory allocation for the agent container
    required: false
    default: '0.5Gi'
&lt;/LI-CODE&gt;
&lt;P&gt;Verify the latest sandbox sizes at &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/hosted-agents#sandbox-sizes" target="_blank" rel="noopener"&gt;hosted-agents#sandbox-sizes&lt;/A&gt; There is also guidance on right-sizing your Micro VMs. At the time of this writing here are the available combinations:&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Outputs&lt;/H2&gt;
&lt;P&gt;We should output values that make sense for subsequent steps in the workflow. Every instance that calls this action may not use them, but it's always good to expose non-secret values just in case.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In our case we are creating a new version of the agent, so let's output that agent version:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;outputs:
  agent_version:
    description: Version ID returned by the Foundry data plane
    value: ${{ steps.post.outputs.agent_version }}
&lt;/LI-CODE&gt;
&lt;P&gt;`agent_version` is the version identifier returned by the data plane. Capture this in your pipeline (artifact, release tag, etc.) so you have an audit trail and a target to re-deploy against if a future version needs to be rolled back. Subsequent steps in the workflow can reference it via `${{ steps.&amp;lt;step-id&amp;gt;.outputs.agent_version }}`.&lt;/P&gt;
&lt;H2&gt;Action&lt;/H2&gt;
&lt;P&gt;The action will need to map our environment variables being passed into the input as the first step. After that we will need to get an access token from Azure so we can then call the REST API endpoint.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once we have this, we will need to prepare the body of our call. Verify against the API for all valid properties. For our example I chose not to set `rai_config` (&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/foundry/responsible-use-of-ai-overview" target="_blank" rel="noopener"&gt;Responsible AI overview&lt;/A&gt;) and `tools` (&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/tool-catalog" target="_blank" rel="noopener"&gt;function/tool bindings&lt;/A&gt;) to keep things simple.&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;runs:
  using: composite
  steps:
    - name: Post agent version to Foundry data plane
      id: post
      shell: bash
      env:
        PROJECT_ENDPOINT: ${{ inputs.project_endpoint }}
        AGENT_NAME: ${{ inputs.agent_name }}
        IMAGE: ${{ inputs.image }}
        MODEL_DEPLOYMENT_NAME: ${{ inputs.model_deployment_name }}
        CPU: ${{ inputs.cpu }}
        MEMORY: ${{ inputs.memory }}
      run: |
        FOUNDRY_TOKEN=$(az account get-access-token \
          --resource "https://ai.azure.com/" \
          --query accessToken -o tsv)

        AGENT_REQUEST_BODY=$(jq -n \
          --arg cpu            "$CPU" \
          --arg memory         "$MEMORY" \
          --arg model          "$MODEL_DEPLOYMENT_NAME" \
          --arg image          "$IMAGE" \
          '{
            definition: {
              kind: "hosted",
              container_protocol_versions: [{protocol: "responses", version: "1.0.0"}],
              cpu: $cpu,
              memory: $memory,
              environment_variables: {AZURE_AI_MODEL_DEPLOYMENT_NAME: $model},
              image: $image
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;⚠️ **Heads up on logs.** The line that echoes `HTTP ${HTTP_STATUS}: $(cat /tmp/agent_response.json)` dumps the full response body to the job log. If your request body contains sensitive `environment_variables`, the API may return them in the response, where they will appear in plain text in the workflow log. Either scrub the response before echoing, or echo only the `version` field on success.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A 2xx response confirms the data plane accepted the new agent version. Confirming the agent behaves as intended is a separate step. This is done typically with a smoke test against the deployed agent in a later workflow job.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If something goes wrong the most common failures are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;401/403-&lt;/STRONG&gt; `azure/login` didn't run, the identity is missing a Foundry data-plane role, or the wrong subscription is selected. Check the `azure/login` step and confirm the identity holds **Foundry User** (or higher) on the Foundry project (see the *Before You Start* callout above).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;404&lt;/STRONG&gt; - wrong `project_endpoint`, or the agent named in `agent_name` does not yet exist on the project. The agent must exist before posting a new version.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;400&lt;/STRONG&gt; - body or model issue: invalid `cpu` / `memory` shape, a required field missing, or `model_deployment_name` pointing at a deployment that isn't reachable from this project.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Calling the Action&lt;/H1&gt;
&lt;P&gt;So now that we have the action, how can we scale this across multiple workflows? Simple, we just need to pass in the required parameters. Here is an example, with a stubbed `deploy-iac` step so can the outputs passed into the action as inputs:&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;- name: Deploy Bicep infrastructure
        id: deploy-iac
        uses: ./.github/actions/deploy-bicep
        with:
          environment_name: ${{ inputs.environment_name || 'main' }}
          location: ${{ inputs.location || 'swedencentral' }}
- name: Update agent
        uses: ./.github/actions/update-agent
        with:
          project_endpoint: ${{ steps.deploy-iac.outputs.project_endpoint }}
          agent_name: ${{ inputs.agent_name }}
          image: ${{ steps.deploy-iac.outputs.acr_endpoint }}/${{ inputs.image_name }}:${{ inputs.image_tag }}
          model_deployment_name: ${{ steps.deploy-iac.outputs.model_deployment_name }}
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And just to show we can call the same action multiple times here are two examples that do just that: &lt;A class="lia-external-url" href="https://github.com/JFolberth/simple-hosted-agent-responses/blob/blog/cicd_rest_api_github_action/.github/workflows/deploy-bicep.yml" target="_blank" rel="noopener"&gt;Deploy (Bicep) &lt;/A&gt;and &lt;A class="lia-external-url" href="https://github.com/JFolberth/simple-hosted-agent-responses/blob/blog/cicd_rest_api_github_action/.github/workflows/deploy-terraform.yml" target="_blank" rel="noopener"&gt;Deploy (Terraform).&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;The composite action shown above gives organizations what the introduction called for: a quick, repeatable way to deploy a Hosted Agent that requires minimal adjustments to the GitHub Actions tooling and processes already in use. With it wired into a workflow, deploying a new Hosted Agent version becomes a standard step in your pipeline.&lt;/P&gt;</description>
      <pubDate>Wed, 03 Jun 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/github-action-for-deploying-hosted-agents/ba-p/4524947</guid>
      <dc:creator>j_folberth</dc:creator>
      <dc:date>2026-06-03T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Deploying Foundry Hosted Agents via REST API</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/deploying-foundry-hosted-agents-via-rest-api/ba-p/4524523</link>
      <description>&lt;H1 aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Introduction&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;At Microsoft&amp;nbsp;Build&amp;nbsp;`26&amp;nbsp;it was announced that&amp;nbsp;Microsoft Foundry Hosted&amp;nbsp;will soon be&amp;nbsp;generally available.&amp;nbsp;This blog post will outline the deployment process and requirements for creating hosted agents in Foundry. The audience&amp;nbsp;for this blog&amp;nbsp;is designed to range from beginner to more advanced&amp;nbsp;users. We will focus on deploying a Hosted Agent from a local machine using the REST API backed by the Responses protocol.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The key thing to understand upfront: deploying a Hosted Agent is&amp;nbsp;ultimately a&amp;nbsp;data plane operation against the Foundry Service API, not an infrastructure deployment. However, it depends on carefully orchestrated infrastructure, identity, and access configuration being in place first. This post walks through each layer.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The companion repository for this post is available at&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://github.com/JFolberth/simple-hosted-agent-responses" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;github.com/JFolberth/simple-hosted-agent-responses&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&amp;nbsp;contains&amp;nbsp;the full Infrastructure as Code (IaC) templates, deployment scripts, and agent source code referenced throughout.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Background&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;There's&amp;nbsp;a school of thought that to fully understand and control something you must properly name it. Given this context&amp;nbsp;let's&amp;nbsp;level set on terminology on both what an Agent is and specifically when and how an Agent is defined inside Microsoft Foundry.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For our Definition of an&amp;nbsp;Agent&amp;nbsp;we will&amp;nbsp;leverage&amp;nbsp;the definitions provided and backed by&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/agent-framework" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Microsoft Agent Framework&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. At a process level an Agent can be defined as:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For those that want to go another level this can translate into:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:2,&amp;quot;335551620&amp;quot;:2,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:2,&amp;quot;335551620&amp;quot;:2,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Notice anything missing from these&amp;nbsp;documents?&amp;nbsp;There is no mention of where the Agent is hosted in terms of compute. This is open ended by design as Microsoft believes in providing the flexibility to&amp;nbsp;leverage&amp;nbsp;any part of the agentic technology stack for agent hosting.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We can bring our own&amp;nbsp;compute&amp;nbsp;such as Azure Function, Azure Container App (ACA), App Service, Hosted Virtual Machine, AWS Lambda, etc., to make a call to the Foundry. This is an agentic architecture but is&amp;nbsp;not the same as&amp;nbsp;a Foundry Hosted Agent. This is the key architectural element that is important to understand what makes Foundry Hosted Agents different.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;As of this writing there are only three types of Foundry Agents: Prompt, Workflow&amp;nbsp;(preview), and Hosted:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:2,&amp;quot;335551620&amp;quot;:2,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;We are going to focus on this last type, Hosted Agents. The compute for Hosted Agents is managed entirely by Foundry&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;through per-session Micro VMs, lightweight, isolated compute units that scale to zero when idle and resume&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;automatically on the next request.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;When building agentic applications with open-source&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;frameworks&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;you typically&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;manage many cross-cutting concerns: containerization, web server setup, security, memory persistence, scaling,&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;instrumentation, and version rollbacks. Hosted Agents solve these by letting you bring your own code and framework&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;while the platform handles everything else.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Choose a Hosted Agent over a prompt-based agent when you need to use any&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;framework (Agent Framework,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;LangGraph&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;, Semantic Kernel), control compute resources like CPU and memory, run stateful&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;workloads that persist files across turns, or use custom protocols for webhook receivers and non-conversational&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;processing.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Each deployed agent automatically receives its own dedicated Microsoft Entra&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;ID&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;and endpoint with no&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;manual identity configuration&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;required&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;. For the full&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;comparison&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;see&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-foundry/agents/concepts/hosted-agents)" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;What are hosted agents&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;For us to fully understand the deployment&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;process&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;we first need to understand the required infrastructure,&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;access, and tooling to deploy a Hosted&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Agent.&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Requirements&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A Hosted Agent can be deployed via either REST API calls or through the&amp;nbsp;azd&amp;nbsp;CLI. We are going to focus on the REST API process.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To deploy a Hosted Agent via REST API calls the following software needs to be available:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="6" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="0" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/cli/azure/install-azure-cli" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;az cli&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="6" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;A href="https://www.docker.com/products/docker-desktop/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;docker&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="6" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;python (not needed but preferred in our walkthrough)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The following infrastructure and sub resources are&amp;nbsp;required&amp;nbsp;to deploy Hosted Agents:&lt;/SPAN&gt; &lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="2" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="0" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/templates/microsoft.cognitiveservices/accounts?pivots=deployment-language-bicep" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Microsoft Foundry&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Microsoft.CognitiveServices/accounts)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="2" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/templates/microsoft.cognitiveservices/accounts/projects?pivots=deployment-language-bicep" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Microsoft Foundry Project&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Microsoft.CognitiveServices/accounts/projects)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="2" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/templates/microsoft.containerregistry/registries?pivots=deployment-language-bicep" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Azure Container Registry (ACR)&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Microsoft.ContainerRegistry/registries)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="2" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/templates/microsoft.cognitiveservices/accounts/deployments?pivots=deployment-language-bicep" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Microsoft Foundry Model Deployment&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Microsoft.CognitiveServices/accounts/deployments)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="2" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/templates/microsoft.insights/components?pivots=deployment-language-bicep" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Application Insights&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(optional) (Microsoft.Insights/components)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="2" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/templates/microsoft.operationalinsights/workspaces?pivots=deployment-language-bicep" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Log Analytics&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(optional) (Microsoft.OperationalInsights/workspaces)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;From an access perspective the following roles will need to be assigned/assignable:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="1" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="0" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/privileged#contributor" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Contributor&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(provision the infrastructure)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="1" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/ai-machine-learning" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Foundry Project Manager (&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;Optional-Ability to view agent in Foundry Portal)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="1" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/ai-machine-learning#foundry-user" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Foundry User&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Data plane access is needed to create a new agent)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="1" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/containers#acrpull" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;AcrPull&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Foundry Project needs to pull the container from ACR)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="1" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/containers#acrpush" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;AcrPush&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(To deploy the image to ACR)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="-" data-font="Times New Roman" data-listid="1" data-list-defn-props="{&amp;quot;335551671&amp;quot;:0,&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Times New Roman&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;-&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/monitor#log-analytics-reader" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Log Analytics Reader&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(Foundry Project access to read Log Analytics, optional if using)&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To elaborate&amp;nbsp;further&amp;nbsp;the Managed Identity of the Foundry Project will need to have:&amp;nbsp;AcrPull, Log Analytics Reader, Foundry User.&amp;nbsp;Ideally&amp;nbsp;this access provisioning would be contained within your Infrastructure as Code (IaC) processes.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The other access would be&amp;nbsp;required&amp;nbsp;for the user or service principal&amp;nbsp;handling&amp;nbsp;the deployment. These roles would&amp;nbsp;be:&amp;nbsp;Contributor, Foundry Project Manager, Foundry User,&amp;nbsp;AcrPush. In production environments, outside the Contributor role, these roles should be provisioned after the infrastructure has been deployed. Justification being they are&amp;nbsp;one time&amp;nbsp;assignments and it is not a best practice to define the service principal access as part of your template. Luckily, we have a script that will handle all of this for you.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;High Level Steps&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;First, the infrastructure will need to be deployed, either directly in the portal or ideally through an IaC template. After successful&amp;nbsp;completion&amp;nbsp;we will need to grab the Managed Identity of the Foundry Project, Azure Container Registry endpoint, Model(s) deployed, and Foundry Project endpoint. We will need this information for deploying our agent and granting the executing user the ability to view the Agent in Foundry.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;After the IaC&amp;nbsp;deployment&amp;nbsp;we will grant the user Foundry Project Manager. We chose the Foundry Project Manager role here as not only will it give permission to deploy an&amp;nbsp;agent&amp;nbsp;it will also give the deploying user access to the Foundry Portal to view the agent. If viewing the agent is not a&amp;nbsp;requirement&amp;nbsp;then Foundry User should suffice.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Since the IaC deploys our&amp;nbsp;ACR&amp;nbsp;we will need to build and push our container image. At the time of this&amp;nbsp;writing&amp;nbsp;the image must be built with --platform&amp;nbsp;linux/amd64 as the Foundry Micro VM runtime only supports amd64 architecture. See the&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;hosted agent container requirements&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for details.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;docker build --platform linux/amd64 -t &amp;lt;acr-login-server&amp;gt;/&amp;lt;image-name&amp;gt;:&amp;lt;tag&amp;gt; . 
az acr login --name &amp;lt;acr-name&amp;gt; 
docker push &amp;lt;acr-login-server&amp;gt;/&amp;lt;image-name&amp;gt;:&amp;lt;tag&amp;gt; &lt;/LI-CODE&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For the Foundry Micro VM runtime to&amp;nbsp;pull&amp;nbsp;your container image at agent startup, a connection must exist between your&amp;nbsp;Foundry Project and the Azure Container Registry.&amp;nbsp;This is configured as a project-scoped connection of category&amp;nbsp;ContainerRegistry&amp;nbsp;that references the ACR login server and uses the project's Managed Identity for authentication&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;(no stored credentials). &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The IaC templates in the companion repo handle this automatically, but if provisioning&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;manually you will need to create this connection via the Foundry project connections API or through the Foundry Portal. For more details see&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/connections" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Connections in Microsoft Foundry&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt; &lt;SPAN data-contrast="auto"&gt;and&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-foundry/how-to/connections-add" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Configure container registry&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;connections&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The last step is the most important, deploying the agent.&amp;nbsp;At the end of the day a Hosted Agent is actually not an infrastructure change, rather a data plane operation against the Foundry Service API.&amp;nbsp;We pass in the kind as hosted, specify the container image, and provide the CPU and memory allocation for our Micro VMs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;curl -X POST \ 
  "&amp;lt;project-endpoint&amp;gt;/agents/&amp;lt;agent-name&amp;gt;/versions?api-version=2025-11-15-preview" \ 
  -H "Authorization: Bearer $(az account get-access-token --resource https://ai.azure.com --query accessToken -o tsv)" \ 
  -H "Content-Type: application/json" \ 
  -d '{ 
    "kind": "hosted", 
    "configuration": { 
      "container": { 
        "image": "&amp;lt;acr-login-server&amp;gt;/&amp;lt;image-name&amp;gt;:&amp;lt;tag&amp;gt;" 
      }, 
      "resources": { 
        "cpu": "0.25", 
        "memory": "0.5Gi" 
      }, 
      "protocolVersion": "1.0.0", 
      "environmentVariables": { 
        "AZURE_AI_MODEL_DEPLOYMENT_NAME": "&amp;lt;model-deployment-name&amp;gt;" 
      } 
    }, 
    "metadata": { 
      "enableVnextExperience": "true" 
    } 
  }'  &lt;/LI-CODE&gt;
&lt;H1 aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 1"&gt;Conclusion&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:278}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;As we covered, deploying a Hosted Agent comes down to a single REST API call, but getting to that point requires the right infrastructure, roles, and container image in place.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Infrastructure first&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: Your Foundry project, ACR, and model deployments must exist before agent creation. Role assignments, particularly Foundry User for the project managed identity and&amp;nbsp;AcrPull&amp;nbsp;for image access, must be in place before&amp;nbsp;proceeding.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The REST call is the agent&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: Unlike traditional container deployments where you manage&amp;nbsp;compute&amp;nbsp;directly, the POST to the Foundry data plane is what brings your agent to life. You specify the container image, CPU/memory allocation, and protocol version. Foundry handles the rest, provisioning per-session Micro VMs that scale to zero when idle.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You own only the agent logic&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: The platform manages the runtime, session isolation, identity, and scaling. This is the fundamental shift from self-hosted patterns.&amp;nbsp;Less operational overhead in exchange for letting Foundry control the compute layer.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To see a complete, working implementation including Bicep and Terraform IaC templates, deployment scripts with proper RBAC handling, and a Python agent using the Responses protocol, visit the companion repository at&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://github.com/JFolberth/simple-hosted-agent-responses" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;github.com/JFolberth/simple-hosted-agent-responses&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. The repo includes a dev container with all prerequisites pre-installed, making it possible to go from clone to deployed agent in a single&amp;nbsp;azd&amp;nbsp;up command.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Jun 2026 02:52:44 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/deploying-foundry-hosted-agents-via-rest-api/ba-p/4524523</guid>
      <dc:creator>j_folberth</dc:creator>
      <dc:date>2026-06-03T02:52:44Z</dc:date>
    </item>
    <item>
      <title>Infrastructure as Code for AI: Building and Deploying Microsoft Hosted Agents with Terraform</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/infrastructure-as-code-for-ai-building-and-deploying-microsoft/ba-p/4523389</link>
      <description>&lt;P&gt;AI agents are no longer experimental. Teams are shipping production-grade agents that retrieve information, call APIs, reason over documents, and orchestrate multi-step workflows at scale. Microsoft Foundry's Hosted Agents service gives you a fully managed runtime for those agents, built on top of the Microsoft Foundry Agent Service, with Microsoft handling the infrastructure, scaling, and runtime lifecycle.&lt;/P&gt;
&lt;P&gt;The challenge is that provisioning this infrastructure by hand or clicking through the portal, running one-off CLI commands, or relying on undocumented shell scripts, simply does not scale. It introduces configuration drift, makes reproducing environments painful, and creates real governance risk as teams grow.&lt;/P&gt;
&lt;P&gt;This post walks through how to provision and manage the Azure infrastructure required to run Microsoft Hosted Agents using Terraform. You will leave with working configuration, a clear understanding of the resource model, and practical guidance on where Terraform can take you all the way and where you will need to supplement with the Azure CLI or the Microsoft Foundry Agent Service SDK.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;What Are Microsoft Hosted Agents?&lt;/H2&gt;
&lt;P&gt;Microsoft Hosted Agents are AI agents deployed and managed within &lt;A href="https://learn.microsoft.com/en-us/azure/foundry/what-is-azure-ai-foundry" target="_blank" rel="noopener"&gt;Microsoft Foundry&lt;/A&gt;. Microsoft Foundry is Microsoft's unified platform for building, evaluating, and deploying AI applications and agents. It provides:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A managed compute runtime — Microsoft provisions and scales the infrastructure so you do not manage VMs or containers.&lt;/LI&gt;
&lt;LI&gt;An agent execution environment — agents are defined with instructions, tools (code interpreter, Bing grounding, Azure AI Search, function calling), and a backing model endpoint.&lt;/LI&gt;
&lt;LI&gt;Deep Azure integration — identity via Microsoft Entra ID, secrets via Azure Key Vault, storage via Azure Blob, tracing via Azure Monitor and Application Insights.&lt;/LI&gt;
&lt;LI&gt;A project-scoped model — each Microsoft Foundry project encapsulates an agent's resources, connections, and deployments within a logical boundary.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The "Hosted" distinction matters. You are not running agent code on your own Kubernetes cluster or App Service. Microsoft manages the runtime. Your responsibility is to provision the surrounding infrastructure correctly: the Microsoft Foundry resource, the project, the model deployment, the identity configuration, and the monitoring resources that back it all.&lt;/P&gt;
&lt;P&gt;That boundary — the infrastructure you own — is exactly what Terraform manages well.&lt;/P&gt;
&lt;H2&gt;Why Terraform for Hosted Agent Deployments?&lt;/H2&gt;
&lt;P&gt;Infrastructure as Code (IaC) is not a new idea, but its importance grows as AI deployments become more complex. Here is why Terraform is a strong choice for Microsoft Foundry deployments specifically:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Repeatability:&lt;/STRONG&gt; A Terraform configuration produces the same infrastructure every time. Staging mirrors production. Disaster recovery is a &lt;CODE&gt;terraform apply&lt;/CODE&gt; away.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Governance:&lt;/STRONG&gt; Infrastructure definitions live in version control alongside application code. Changes are reviewable, auditable, and reversible. This satisfies most enterprise change-management requirements.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Scale:&lt;/STRONG&gt; Spinning up per-customer or per-team agent environments using Terraform workspaces or module instantiation is far more manageable than manual provisioning.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;State management:&lt;/STRONG&gt; Terraform tracks the actual state of your Azure resources. It detects drift and reconciles it declaratively.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Ecosystem:&lt;/STRONG&gt; The AzureRM provider is mature, actively maintained by HashiCorp and Microsoft, and covers the majority of Azure services including the Microsoft Foundry resources.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Architecture Overview&lt;/H2&gt;
&lt;P&gt;Before writing any Terraform, it helps to understand the resource hierarchy in Microsoft Foundry and how each layer maps to an Azure resource type.&lt;/P&gt;
&lt;H3&gt;The Foundry Resource Hierarchy&lt;/H3&gt;
&lt;P&gt;Microsoft Foundry uses a two-level hierarchy:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Foundry Account&lt;/STRONG&gt; (&lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt;, kind: &lt;CODE&gt;AIServices&lt;/CODE&gt;) — The top-level AI Services resource. It provides the model endpoint, manages agent execution, and acts as the logical boundary for all projects beneath it. You must set &lt;CODE&gt;project_management_enabled = true&lt;/CODE&gt; and provide a &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt; to enable project creation. In ARM terms this is a &lt;CODE&gt;Microsoft.CognitiveServices/accounts&lt;/CODE&gt; resource.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Foundry Project&lt;/STRONG&gt; (&lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt;) — A child resource scoped within the Foundry Account. Each project has its own agents, model deployments, connections, and data assets. In production, you typically have one project per application, product team, or environment.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;EM&gt;Figure 1: The Microsoft Foundry resource hierarchy. A single Foundry Account (Cognitive Services, kind AIServices) acts as the top-level container, with Projects scoped beneath it — one per application, team, or environment.&lt;/EM&gt;&lt;/P&gt;
&lt;H3&gt;Supporting Resources&lt;/H3&gt;
&lt;P&gt;The following Azure resources make up a complete Hosted Agents deployment:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Foundry Account (AI Services):&lt;/STRONG&gt; A single &lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt; of kind &lt;CODE&gt;AIServices&lt;/CODE&gt; serves as both the Foundry Account and the model endpoint host. Model deployments (e.g. &lt;CODE&gt;gpt-4.1&lt;/CODE&gt;) are provisioned via &lt;CODE&gt;azurerm_cognitive_deployment&lt;/CODE&gt; within this account.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Log Analytics Workspace + Application Insights:&lt;/STRONG&gt; Provides observability for agent traces, request logs, and metrics.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;User-Assigned Managed Identity:&lt;/STRONG&gt; Grants the Foundry Account and Projects access to Azure resources without stored credentials.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Role Assignments (RBAC):&lt;/STRONG&gt; Wires the managed identity to the Foundry Account with least-privilege Cognitive Services permissions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;&lt;EM&gt;Figure 2: Supporting infrastructure map. The managed identity holds least-privilege RBAC grants to the Microsoft Foundry Account (AI Services) — enabling model access and project management — all within the same resource group.&lt;/EM&gt;&lt;/P&gt;
&lt;H3&gt;Reference Architecture (Described)&lt;/H3&gt;
&lt;P&gt;A production-ready layout separates concerns across two resource groups: one for shared infrastructure (networking, monitoring) and one for the Microsoft Foundry Account and its projects. The Foundry resource group houses the &lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt; (kind: AIServices) resource and the &lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt; instances. The shared resource group holds Log Analytics and Application Insights. A user-assigned managed identity spans both, holding RBAC grants to each backing service.&lt;/P&gt;
&lt;P&gt;For a dev/test environment you can collapse both into a single resource group. For production, the separation makes cost attribution, access control, and lifecycle management cleaner.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Prerequisites&lt;/H2&gt;
&lt;H3&gt;Accounts and Permissions&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;An active Azure subscription with the &lt;STRONG&gt;Owner&lt;/STRONG&gt; or &lt;STRONG&gt;Contributor + User Access Administrator&lt;/STRONG&gt; roles at the subscription or resource group level (role assignments require elevated permission).&lt;/LI&gt;
&lt;LI&gt;Foundry access enabled in your subscription. In some tenants you may need to accept terms or request quota for Azure OpenAI.&lt;/LI&gt;
&lt;LI&gt;Azure OpenAI quota for the model you intend to deploy (e.g. &lt;CODE&gt;gpt-4.1&lt;/CODE&gt;). Request this via the Azure portal under Quotas in Azure OpenAI Studio.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Local Tools&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Terraform CLI&lt;/STRONG&gt; ≥ 1.9 — &lt;A href="https://developer.hashicorp.com/terraform/install" target="_blank" rel="noopener"&gt;Install guide&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure CLI&lt;/STRONG&gt; ≥ 2.60 — &lt;A href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli" target="_blank" rel="noopener"&gt;Install guide&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;A code editor (VS Code with the HashiCorp Terraform extension and the Azure Terraform extension is a strong combination).&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Authentication&lt;/H3&gt;
&lt;P&gt;For local development, authenticate via the Azure CLI. The AzureRM Terraform provider picks this up automatically:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;az login
az account set --subscription "&amp;lt;your-subscription-id&amp;gt;"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;For CI/CD pipelines, use a service principal with &lt;CODE&gt;AZURE_CLIENT_ID&lt;/CODE&gt;, &lt;CODE&gt;AZURE_CLIENT_SECRET&lt;/CODE&gt;, &lt;CODE&gt;AZURE_TENANT_ID&lt;/CODE&gt;, and &lt;CODE&gt;AZURE_SUBSCRIPTION_ID&lt;/CODE&gt; environment variables, or — preferably — a &lt;STRONG&gt;workload identity federation&lt;/STRONG&gt; (federated credentials) to avoid storing long-lived secrets. GitHub Actions supports OIDC-based workload identity natively.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Terraform Fundamentals for Hosted Agents&lt;/H2&gt;
&lt;H3&gt;Provider Configuration&lt;/H3&gt;
&lt;P&gt;The &lt;CODE&gt;hashicorp/azurerm&lt;/CODE&gt; provider is your primary dependency. The new Microsoft Foundry resources (&lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt; with &lt;CODE&gt;kind = "AIServices"&lt;/CODE&gt; and &lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt;) require version 4.x of the provider. Pin your version to avoid unexpected breaking changes:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;terraform {
  required_version = "&amp;gt;= 1.9"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~&amp;gt; 4.0"
    }
  }
}

provider "azurerm" {
  features {
    key_vault {
      purge_soft_delete_on_destroy = false
    }
    resource_group {
      prevent_deletion_if_contains_resources = true
    }
  }
  subscription_id = var.subscription_id
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The &lt;CODE&gt;features&lt;/CODE&gt; block is required even when empty. The Key Vault setting prevents accidental secret loss during &lt;CODE&gt;terraform destroy&lt;/CODE&gt;. The resource group setting adds an extra safety net in production.&lt;/P&gt;
&lt;H3&gt;State Management&lt;/H3&gt;
&lt;P&gt;Never use local state for shared or production environments. Store state in &lt;A href="https://developer.hashicorp.com/terraform/language/settings/backends/azurerm" target="_blank" rel="noopener"&gt;Azure Blob Storage&lt;/A&gt; with state locking via Azure Blob lease:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;terraform {
  backend "azurerm" {
    resource_group_name  = "rg-terraform-state"
    storage_account_name = "sttfstate&amp;lt;unique&amp;gt;"
    container_name       = "tfstate"
    key                  = "ai-agents/prod.tfstate"
  }
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Create the state storage account and container before running &lt;CODE&gt;terraform init&lt;/CODE&gt;. A bootstrap script or a separate Terraform workspace dedicated to state management are both valid approaches.&lt;/P&gt;
&lt;H3&gt;Known Limitations and Workarounds&lt;/H3&gt;
&lt;P&gt;Terraform coverage of Foundry is improving rapidly but is not yet complete. You should be aware of the following gaps as of mid-2025:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Agent definitions are not in Terraform:&lt;/STRONG&gt; The actual agent (its system prompt, instructions, tool configuration, and model binding) is created via the &lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/agents/overview" target="_blank" rel="noopener"&gt;Azure AI Agent Service SDK&lt;/A&gt; or the Foundry portal, not via Terraform. Terraform provisions the infrastructure; your application code or a post-provisioning script creates the agent.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Connections:&lt;/STRONG&gt; Some connection types within a Foundry Project (e.g. Azure AI Search, custom connections) may require the Azure CLI or the Foundry SDK. Verify coverage in the &lt;A href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs" target="_blank" rel="noopener"&gt;AzureRM provider docs&lt;/A&gt; before assuming Terraform handles them.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model deployments:&lt;/STRONG&gt; &lt;CODE&gt;azurerm_cognitive_deployment&lt;/CODE&gt; covers OpenAI model deployments and is well-supported. Use this to deploy your model before referencing it from the agent.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Private networking:&lt;/STRONG&gt; If you need private endpoints for your Foundry Account, additional VNet, subnet, and DNS zone resources are required. This post focuses on the public networking path; private networking is a follow-on topic.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Step-by-Step Implementation&lt;/H2&gt;
&lt;P&gt;The following sections build up a complete Terraform configuration. The recommended project structure is a flat module layout for a single environment, with a separate &lt;CODE&gt;modules/ai-foundry/&lt;/CODE&gt; directory when you need to reuse the pattern across environments.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;ai-agents-infra/
├── main.tf
├── variables.tf
├── outputs.tf
├── versions.tf
└── terraform.tfvars&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;1. Variables&lt;/H3&gt;
&lt;P&gt;Define variables first. Parameterising from the start avoids hard-coded values that create technical debt when you replicate the configuration for staging or production:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# variables.tf

variable "subscription_id" {
  type        = string
  description = "Azure subscription ID."
}

variable "location" {
  type        = string
  default     = "eastus"
  description = "Azure region for all resources."
}

variable "environment" {
  type        = string
  default     = "dev"
  description = "Environment label (dev, staging, prod)."
}

variable "project_name" {
  type        = string
  description = "Short name for the project. Used in resource naming."
}

variable "openai_model_name" {
  type        = string
  default     = "gpt-4.1"
  description = "Azure OpenAI model to deploy for the agent."
}

variable "openai_model_version" {
  type        = string
  default     = "2025-04-14"
  description = "Model version to deploy."
}

variable "openai_sku_capacity" {
  type        = number
  default     = 10
  description = "Tokens-per-minute capacity (in thousands) for the deployment."
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;2. Resource Group and Core Infrastructure&lt;/H3&gt;
&lt;P&gt;A single resource group keeps things simple for dev. In production, consider splitting as described in the architecture section above.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# main.tf — Resource group and naming locals

locals {
  name_prefix = "${var.project_name}-${var.environment}"
  tags = {
    environment = var.environment
    project     = var.project_name
    managed_by  = "terraform"
  }
}

resource "azurerm_resource_group" "main" {
  name     = "rg-${local.name_prefix}"
  location = var.location
  tags     = local.tags
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;3. Supporting Services&lt;/H3&gt;
&lt;P&gt;Provision Log Analytics and Application Insights for agent observability and diagnostics. Unlike the legacy Hub-based architecture, the &lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt; (kind &lt;CODE&gt;AIServices&lt;/CODE&gt;) does not require a dedicated Storage Account or Key Vault as provisioning dependencies.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# main.tf — Monitoring infrastructure

data "azurerm_client_config" "current" {}

# Log Analytics Workspace (required by Application Insights)
resource "azurerm_log_analytics_workspace" "main" {
  name                = "law-${local.name_prefix}"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  sku                 = "PerGB2018"
  retention_in_days   = 30
  tags                = local.tags
}

# Application Insights for agent observability
resource "azurerm_application_insights" "main" {
  name                = "appi-${local.name_prefix}"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  workspace_id        = azurerm_log_analytics_workspace.main.id
  application_type    = "web"
  tags                = local.tags
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;4. User-Assigned Managed Identity&lt;/H3&gt;
&lt;P&gt;A managed identity allows the Foundry Account and its projects to authenticate to Azure services without stored credentials. This is a security best practice and is required for several Microsoft Foundry features.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# main.tf — Managed identity for the Microsoft Foundry Account

resource "azurerm_user_assigned_identity" "foundry" {
  name                = "id-${local.name_prefix}-foundry"
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  tags                = local.tags
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;5. Microsoft Foundry Account and Model Deployment&lt;/H3&gt;
&lt;P&gt;In the current Microsoft Foundry architecture, a single &lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt; of kind &lt;CODE&gt;AIServices&lt;/CODE&gt; serves as both the Foundry Account and the model endpoint host. Set &lt;CODE&gt;project_management_enabled = true&lt;/CODE&gt; and provide a globally unique &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt; to enable Foundry Project creation beneath it.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# main.tf — Microsoft Foundry Account (AI Services)

resource "azurerm_cognitive_account" "foundry" {
  name                       = "aisa-${local.name_prefix}"
  resource_group_name        = azurerm_resource_group.main.name
  location                   = azurerm_resource_group.main.location
  kind                       = "AIServices"
  sku_name                   = "S0"
  project_management_enabled = true
  custom_subdomain_name      = "${replace(local.name_prefix, "-", "")}foundry"
  tags                       = local.tags

  identity {
    type         = "UserAssigned"
    identity_ids = [azurerm_user_assigned_identity.foundry.id]
  }
}

# Deploy the model within the Foundry Account
resource "azurerm_cognitive_deployment" "agent_model" {
  name                 = var.openai_model_name
  cognitive_account_id = azurerm_cognitive_account.foundry.id

  model {
    format  = "OpenAI"
    name    = var.openai_model_name
    version = var.openai_model_version
  }

  sku {
    name     = "Standard"
    capacity = var.openai_sku_capacity
  }
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Note on quota:&lt;/STRONG&gt; The &lt;CODE&gt;capacity&lt;/CODE&gt; value is in thousands of tokens per minute. A value of &lt;CODE&gt;10&lt;/CODE&gt; means 10,000 TPM. If &lt;CODE&gt;terraform apply&lt;/CODE&gt; fails with a quota error, reduce this value or request a quota increase via the Azure portal.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note on &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt;:&lt;/STRONG&gt; This must be globally unique across all Azure AI Services accounts. If provisioning fails with a conflict error, adjust the suffix (e.g. append a random string using the &lt;CODE&gt;random_string&lt;/CODE&gt; resource).&lt;/P&gt;
&lt;H3&gt;6. Foundry Project&lt;/H3&gt;
&lt;P&gt;Create a Foundry Project beneath the Foundry Account provisioned in Step 5. Each project scopes its own agents, model connections, and data assets. Use one project per application or team.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# main.tf — Microsoft Foundry Project

resource "azurerm_cognitive_account_project" "agent_project" {
  name                 = "proj-${local.name_prefix}-agents"
  cognitive_account_id = azurerm_cognitive_account.foundry.id
  location             = azurerm_resource_group.main.location
  display_name         = "Agent Project - ${var.project_name}"
  description          = "Hosted agents project for ${var.project_name}"

  identity {
    type         = "UserAssigned"
    identity_ids = [azurerm_user_assigned_identity.foundry.id]
  }

  tags = local.tags
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;7. RBAC Role Assignments&lt;/H3&gt;
&lt;P&gt;Grant the managed identity the permissions it needs. This is the area most commonly misconfigured in manual deployments. Terraform makes it explicit and auditable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# main.tf — RBAC assignments

# AI Services: Foundry identity needs Cognitive Services OpenAI User to call model endpoints
resource "azurerm_role_assignment" "foundry_openai" {
  scope                = azurerm_cognitive_account.foundry.id
  role_definition_name = "Cognitive Services OpenAI User"
  principal_id         = azurerm_user_assigned_identity.foundry.principal_id
}

# AI Services: Foundry identity needs Cognitive Services Contributor to manage projects
resource "azurerm_role_assignment" "foundry_contributor" {
  scope                = azurerm_cognitive_account.foundry.id
  role_definition_name = "Cognitive Services Contributor"
  principal_id         = azurerm_user_assigned_identity.foundry.principal_id
}

# Optional: grant your own principal the Azure AI Developer role on the Foundry Account
# so you can create and manage agents from your local machine or CI pipeline
resource "azurerm_role_assignment" "developer_account" {
  scope                = azurerm_cognitive_account.foundry.id
  role_definition_name = "Azure AI Developer"
  principal_id         = data.azurerm_client_config.current.object_id
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;8. Outputs&lt;/H3&gt;
&lt;P&gt;Export the values your application and post-provisioning scripts will need:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# outputs.tf

output "resource_group_name" {
  value = azurerm_resource_group.main.name
}

output "foundry_account_id" {
  value = azurerm_cognitive_account.foundry.id
}

output "ai_foundry_project_id" {
  value = azurerm_cognitive_account_project.agent_project.id
}

output "foundry_endpoint" {
  value = azurerm_cognitive_account.foundry.endpoint
}

output "openai_deployment_name" {
  value = azurerm_cognitive_deployment.agent_model.name
}

output "managed_identity_client_id" {
  value = azurerm_user_assigned_identity.foundry.client_id
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;10. Example terraform.tfvars&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE&gt;# terraform.tfvars — do NOT commit this file if it contains sensitive values
subscription_id      = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
location             = "eastus"
environment          = "dev"
project_name         = "contoso-agents"
openai_model_name    = "gpt-4.1"
openai_model_version = "2025-04-14"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;openai_sku_capacity = 10&lt;/P&gt;
&lt;HR /&gt;&lt;img /&gt;
&lt;P&gt;&lt;EM&gt;Figure 3: Terraform deployment workflow. State is stored in an Azure Blob Storage backend, enabling team collaboration and preventing concurrent apply conflicts.&lt;/EM&gt;&lt;/P&gt;
&lt;H2&gt;Deploying and Validating the Agent Infrastructure&lt;/H2&gt;
&lt;H3&gt;Running the Deployment&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE&gt;# 1. Initialise — downloads provider plugins and configures the backend
terraform init

# 2. Validate syntax and configuration
terraform validate

# 3. Preview what will be created (review carefully before applying)
terraform plan -out=tfplan

# 4. Apply the plan
terraform apply tfplan&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;A full initial apply typically takes 8–15 minutes. The Foundry Account (AI Services) provisioning is the longest step. The model deployment may also take a few minutes to reach a ready state — Terraform handles this with implicit dependency ordering, but you may see brief retries in the output.&lt;/P&gt;
&lt;H3&gt;Verifying the Deployment&lt;/H3&gt;
&lt;P&gt;After apply completes, verify each resource is in a healthy state:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# Confirm the resource group and its resources exist
az resource list --resource-group "rg-contoso-agents-dev" --output table

# Check the Foundry Account (AI Services) is in a Succeeded state
az cognitiveservices account show \
  --name "aisacontosoagentsdevfoundry" \
  --resource-group "rg-contoso-agents-dev" \
  --query "properties.provisioningState"

# Confirm the model deployment is ready
az cognitiveservices account deployment show \
  --resource-group "rg-contoso-agents-dev" \
  --name "aisacontosoagentsdevfoundry" \
  --deployment-name "gpt-4.1" \
  --query "properties.provisioningState"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Navigate to the &lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;Microsoft Foundry portal&lt;/A&gt; and confirm your Foundry Account and Project appear. At this point you can create an agent manually in the portal to validate that the model endpoint is reachable and the identity chain works correctly before automating agent creation.&lt;/P&gt;
&lt;H3&gt;Common Deployment Issues&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Quota exceeded on model deployment:&lt;/STRONG&gt; Reduce &lt;CODE&gt;openai_sku_capacity&lt;/CODE&gt; or request a quota increase in the Azure portal under Azure OpenAI → Quotas.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resource name conflicts:&lt;/STRONG&gt; The &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt; on the Foundry Account must be globally unique. Use the &lt;CODE&gt;random_string&lt;/CODE&gt; Terraform resource to append a unique suffix if needed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Role assignment propagation delay:&lt;/STRONG&gt; RBAC changes can take 1–2 minutes to propagate. If the Foundry Account cannot access resources immediately after apply, wait a moment and retry.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;CODE&gt;project_management_enabled&lt;/CODE&gt; not set:&lt;/STRONG&gt; If &lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt; fails with an error about project management, ensure &lt;CODE&gt;project_management_enabled = true&lt;/CODE&gt; and &lt;CODE&gt;custom_subdomain_name&lt;/CODE&gt; are set on the parent &lt;CODE&gt;azurerm_cognitive_account&lt;/CODE&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;CODE&gt;azurerm_cognitive_account_project&lt;/CODE&gt; not found:&lt;/STRONG&gt; Ensure your AzureRM provider version is &lt;CODE&gt;~&amp;gt; 4.0&lt;/CODE&gt; or later. Run &lt;CODE&gt;terraform init -upgrade&lt;/CODE&gt; if you previously initialised with an older version.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Creating an Agent After Infrastructure Provisioning&lt;/H2&gt;
&lt;P&gt;Terraform has provisioned the platform. Now you need to create the agent itself. This is done via the Azure AI Agents SDK (available for Python, C#, JavaScript, and Java) or the Foundry portal.&lt;/P&gt;
&lt;P&gt;The following Python snippet demonstrates creating a basic agent programmatically after Terraform apply. It uses the outputs from Terraform directly:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential

# These values come from Terraform outputs
project_connection_string = os.environ["AI_PROJECT_CONNECTION_STRING"]
model_deployment = os.environ["OPENAI_DEPLOYMENT_NAME"]

client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(),
    conn_str=project_connection_string,
)

# Create the hosted agent
agent = client.agents.create_agent(
    model=model_deployment,
    name="customer-support-agent",
    instructions=(
        "You are a helpful customer support assistant. "
        "Answer questions accurately and concisely. "
        "If you are unsure, say so rather than guessing."
    ),
)

print(f"Agent created: {agent.id}")&lt;/CODE&gt;&lt;/PRE&gt;
&lt;img /&gt;
&lt;P&gt;&lt;EM&gt;Figure 5: Agent runtime architecture. The Foundry Project hosts the Agent Service, which routes requests to the GPT-4.1 model endpoint and optionally invokes tool integrations (Code Interpreter, File Search, Azure Functions, or custom tools).&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The project connection string is available from the Foundry portal (Project → Overview → Project connection string) or can be constructed from Terraform outputs. Refer to the &lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/agents/quickstart" target="_blank" rel="noopener"&gt;Azure AI Agents quickstart&lt;/A&gt; for the full SDK setup.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Operational Considerations&lt;/H2&gt;
&lt;H3&gt;Lifecycle Management&lt;/H3&gt;
&lt;P&gt;Terraform's declarative model means updates are incremental by default. To update the OpenAI model version, change &lt;CODE&gt;openai_model_version&lt;/CODE&gt; in your &lt;CODE&gt;.tfvars&lt;/CODE&gt; file and run &lt;CODE&gt;terraform plan&lt;/CODE&gt; to confirm the change before applying. Terraform will delete and recreate the cognitive deployment in-place — be aware this causes brief downtime for the model endpoint.&lt;/P&gt;
&lt;P&gt;To destroy a complete environment:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;terraform destroy&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The &lt;CODE&gt;prevent_deletion_if_contains_resources&lt;/CODE&gt; feature on the resource group will block destruction if any untracked resources exist, which is a useful safety net in production.&lt;/P&gt;
&lt;H3&gt;Handling Configuration Drift&lt;/H3&gt;
&lt;P&gt;Drift occurs when Azure resources are modified outside of Terraform (portal changes, CLI scripts, other automation). Detect drift with:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;terraform plan -refresh-only&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This reports the difference between the Terraform state and the actual resource state without making changes. Schedule this as a drift-detection job in CI to catch out-of-band changes early.&lt;/P&gt;
&lt;H3&gt;Environment Isolation&lt;/H3&gt;
&lt;P&gt;Use Terraform workspaces or separate state files per environment:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# Create and switch to a staging workspace
terraform workspace new staging
terraform workspace select staging
terraform apply -var-file="environments/staging.tfvars"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Alternatively, use a directory-per-environment layout (&lt;CODE&gt;environments/dev/&lt;/CODE&gt;, &lt;CODE&gt;environments/prod/&lt;/CODE&gt;) with a shared module in &lt;CODE&gt;modules/ai-foundry/&lt;/CODE&gt;. The directory layout is more explicit and easier to navigate in a team setting.&lt;/P&gt;
&lt;H3&gt;Cost Control&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Set a low &lt;CODE&gt;openai_sku_capacity&lt;/CODE&gt; in dev (e.g. &lt;CODE&gt;1&lt;/CODE&gt; = 1,000 TPM) to limit accidental spend.&lt;/LI&gt;
&lt;LI&gt;Tag all resources with &lt;CODE&gt;environment&lt;/CODE&gt; and &lt;CODE&gt;project&lt;/CODE&gt; tags (the &lt;CODE&gt;locals.tags&lt;/CODE&gt; block handles this) to enable cost attribution in Azure Cost Management.&lt;/LI&gt;
&lt;LI&gt;Use the Azure Pricing Calculator to estimate monthly costs before deploying to production. The Azure AI Services account (model token usage), Log Analytics, and Application Insights are the primary cost drivers.&lt;/LI&gt;
&lt;LI&gt;Consider destroying dev environments overnight using a scheduled CI job that runs &lt;CODE&gt;terraform destroy&lt;/CODE&gt; and &lt;CODE&gt;terraform apply&lt;/CODE&gt; on a schedule.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;CI/CD Integration&lt;/H2&gt;
&lt;P&gt;Automating Terraform via GitHub Actions is straightforward. The following workflow runs plan on pull requests and apply on merge to the main branch:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# .github/workflows/terraform.yml

name: Terraform Deploy

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

permissions:
  id-token: write   # Required for OIDC workload identity federation
  contents: read
  pull-requests: write

env:
  ARM_CLIENT_ID:       ${{ secrets.AZURE_CLIENT_ID }}
  ARM_TENANT_ID:       ${{ secrets.AZURE_TENANT_ID }}
  ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
  ARM_USE_OIDC:        "true"

jobs:
  terraform:
    runs-on: ubuntu-latest
    environment: ${{ github.ref == 'refs/heads/main' &amp;amp;&amp;amp; 'production' || 'staging' }}

    steps:
      - uses: actions/checkout@v4

      - uses: hashicorp/setup-terraform@v3
        with:
          terraform_version: "~1.9"

      - name: Terraform Init
        run: terraform init

      - name: Terraform Plan
        run: terraform plan -out=tfplan -var-file="environments/dev.tfvars"

      - name: Terraform Apply
        if: github.ref == 'refs/heads/main'
        run: terraform apply -auto-approve tfplan&lt;/CODE&gt;&lt;/PRE&gt;
&lt;img /&gt;
&lt;P&gt;&lt;EM&gt;Figure 4: CI/CD pipeline using GitHub Actions with OIDC workload identity federation. No long-lived secrets are stored — the runner exchanges a JWT for a short-lived Azure token before each Terraform run.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Use &lt;A href="https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect" target="_blank" rel="noopener"&gt;OIDC workload identity federation&lt;/A&gt; to avoid storing long-lived service principal secrets in GitHub. This is the recommended authentication method for GitHub Actions deployments to Azure.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Best Practices&lt;/H2&gt;
&lt;H3&gt;Modular Terraform Design&lt;/H3&gt;
&lt;P&gt;Once you have a working flat configuration, extract the Foundry resources into a reusable module. A module boundary around the Hub, Project, OpenAI account, and RBAC assignments lets you stamp out new agent environments with a single module call and a new&amp;nbsp;&lt;CODE&gt;.tfvars&lt;/CODE&gt; file.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;# environments/staging/main.tf
module "agent_platform" {
  source = "../../modules/ai-foundry"

  project_name         = "contoso-agents"
  environment          = "staging"
  location             = "eastus"
  subscription_id      = var.subscription_id
  openai_model_name    = "gpt-4.1"
  openai_model_version = "2025-04-14"
  openai_sku_capacity  = 30
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H3&gt;Parameterisation and Environment Configs&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Never hard-code subscription IDs, tenant IDs, or region names in &lt;CODE&gt;main.tf&lt;/CODE&gt;.&lt;/LI&gt;
&lt;LI&gt;Keep environment-specific values in &lt;CODE&gt;environments/&amp;lt;env&amp;gt;.tfvars&lt;/CODE&gt; files and commit them to source control (they are config, not secrets).&lt;/LI&gt;
&lt;LI&gt;Store actual secrets (service principal credentials, API keys for third-party connections) in Azure Key Vault or GitHub Secrets — not in &lt;CODE&gt;.tfvars&lt;/CODE&gt; files.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Versioning Models and Agent Configurations&lt;/H3&gt;
&lt;P&gt;Treat your &lt;CODE&gt;openai_model_version&lt;/CODE&gt; and agent instructions as versioned artefacts. When Microsoft releases a new model version, create a pull request that updates the variable value, runs a plan, and documents the expected change. This creates a clear history of when model versions changed and who approved the change.&lt;/P&gt;
&lt;H3&gt;Logging and Monitoring&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Enable diagnostic settings on the Azure OpenAI account to route request logs and metrics to your Log Analytics workspace.&lt;/LI&gt;
&lt;LI&gt;Use Application Insights to capture agent traces from the Azure AI Agents SDK (it integrates with OpenTelemetry).&lt;/LI&gt;
&lt;LI&gt;Set up Azure Monitor alerts on OpenAI account errors (4xx/5xx rates) and Log Analytics ingestion failures.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Responsible AI Considerations&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Enable &lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/content-filter" target="_blank" rel="noopener"&gt;Azure OpenAI content filtering&lt;/A&gt; on your deployment. Terraform supports this via the &lt;CODE&gt;content_filter&lt;/CODE&gt; block in &lt;CODE&gt;azurerm_cognitive_deployment&lt;/CODE&gt; where the policy allows.&lt;/LI&gt;
&lt;LI&gt;Define a clear system prompt that sets agent behaviour boundaries and instructs the agent to decline harmful requests.&lt;/LI&gt;
&lt;LI&gt;Log and review agent conversations during early deployment. Microsoft Foundry includes evaluation tools for assessing agent response quality and safety.&lt;/LI&gt;
&lt;LI&gt;Apply least-privilege RBAC throughout — the role assignments in this post follow that principle.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Conclusion and Next Steps&lt;/H2&gt;
&lt;P&gt;You now have a complete, repeatable Terraform configuration for provisioning the Azure infrastructure required to run Microsoft Hosted Agents via Microsoft Foundry. The key takeaways:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Terraform manages the infrastructure layer effectively — the Foundry Account, Project, model deployment, identity, and RBAC.&lt;/LI&gt;
&lt;LI&gt;Agent definitions themselves are provisioned via the Azure AI Agents SDK or the Foundry portal as a post-Terraform step.&lt;/LI&gt;
&lt;LI&gt;State management, parameterisation, and modular design are non-negotiable for team environments.&lt;/LI&gt;
&lt;LI&gt;OIDC-based workload identity is the right authentication model for CI/CD pipelines.&lt;/LI&gt;
&lt;LI&gt;Drift detection, environment isolation, and cost tagging are operational necessities, not optional extras.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Where to Go Next&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Add Azure AI Search:&lt;/STRONG&gt; Extend the Foundry Project with an Azure AI Search connection and enable the Search tool on your agent for Retrieval-Augmented Generation (RAG).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Private networking:&lt;/STRONG&gt; Add private endpoints for the Foundry Hub and OpenAI account to lock down ingress to your VNet.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Multi-region deployment:&lt;/STRONG&gt; Instantiate the Terraform module twice with different regions and use Azure Traffic Manager or Front Door to route requests.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;GitOps for agents:&lt;/STRONG&gt; Store agent definitions (system prompts, tool configurations) as YAML or JSON in your repository and use a CI pipeline to apply them via the Azure AI Agents SDK on every merge, creating a fully declarative agent deployment pipeline.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Evaluation pipelines:&lt;/STRONG&gt; Use Microsoft Foundry's built-in evaluation capabilities to run automated quality and safety assessments on every new model version or prompt change.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;References&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-foundry/what-is-azure-ai-foundry" target="_blank" rel="noopener"&gt;What is Microsoft Foundry? — Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/agents/overview" target="_blank" rel="noopener"&gt;Azure AI Agent Service overview — Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/agents/quickstart" target="_blank" rel="noopener"&gt;Azure AI Agents quickstart — Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_account" target="_blank" rel="noopener"&gt;azurerm_cognitive_account — Terraform Registry&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_account_project" target="_blank" rel="noopener"&gt;azurerm_cognitive_account_project — Terraform Registry&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cognitive_deployment" target="_blank" rel="noopener"&gt;azurerm_cognitive_deployment — Terraform Registry&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://developer.hashicorp.com/terraform/language/settings/backends/azurerm" target="_blank" rel="noopener"&gt;AzureRM backend — Terraform documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect" target="_blank" rel="noopener"&gt;OIDC workload identity federation with GitHub Actions — Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/content-filter" target="_blank" rel="noopener"&gt;Azure OpenAI content filtering — Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://developer.hashicorp.com/terraform/install" target="_blank" rel="noopener"&gt;Install Terraform — HashiCorp&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://ai.azure.com" target="_blank" rel="noopener"&gt;&amp;nbsp;Microsoft Foundry portal&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 02 Jun 2026 14:22:33 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/infrastructure-as-code-for-ai-building-and-deploying-microsoft/ba-p/4523389</guid>
      <dc:creator>Lee_Stott</dc:creator>
      <dc:date>2026-06-02T14:22:33Z</dc:date>
    </item>
    <item>
      <title>Building and Operating a Microsoft Foundry Hosted Agent with GitOps and GitHub Tasks</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-and-operating-a-microsoft-foundry-hosted-agent-with/ba-p/4523393</link>
      <description>&lt;H2&gt;The Gap Between Prototype and Production&lt;/H2&gt;
&lt;P&gt;Most AI engineering teams can build a working agent in a day. The hard part is not building it; the hard part is operating it. Prompts drift. Tool configurations change without review. Deployments happen from someone's laptop. There is no audit trail, no rollback plan, and no consistent way to promote a change from a development environment to production.&lt;/P&gt;
&lt;P&gt;GitOps closes that gap. By treating your agent definition, configuration, and infrastructure as version-controlled source code, you get the same delivery discipline that software engineering teams have applied to application code for years. Every change is reviewed, every deployment is automated, and every environment state is traceable to a specific commit.&lt;/P&gt;
&lt;P&gt;This post shows you how to apply GitOps principles to a Microsoft Foundry Hosted Agent using GitHub as the source of truth and GitHub Tasks and Actions as the automation layer. The result is a repeatable, governed, production-ready delivery model for AI agents.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;What Is a Microsoft Foundry Hosted Agent?&lt;/H2&gt;
&lt;P&gt;Microsoft Foundry is Microsoft's platform for building, deploying, and operating AI applications and agents. A Hosted Agent is an agent runtime managed by the Foundry platform rather than self-hosted by your team. You supply the agent logic, configuration, and tools; Foundry handles the runtime lifecycle, scaling, and managed infrastructure.&lt;/P&gt;
&lt;P&gt;In practical terms, a Foundry Hosted Agent is a containerised agent application. You package your agent code, prompt definitions, tool bindings, and environment configuration into a container image. Foundry deploys and manages that container within a Foundry project, connected to models, tools, and observability infrastructure that the platform provides.&lt;/P&gt;
&lt;P&gt;Teams choose Hosted Agents over self-hosting because:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The platform manages runtime infrastructure, patching, and scaling&lt;/LI&gt;
&lt;LI&gt;Integration with Azure AI models, managed identity, and observability is built in&lt;/LI&gt;
&lt;LI&gt;You can focus engineering effort on agent logic rather than cluster management&lt;/LI&gt;
&lt;LI&gt;Foundry projects provide environment and resource isolation without requiring you to provision and manage separate Azure resources for each environment&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Hosted Agents are a good fit when your team wants strong operational support with minimal platform overhead, when you need clear separation between environments, and when your agents depend on Azure AI capabilities such as Azure OpenAI Service, Azure AI Search, or Model Context Protocol integrations.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Why GitOps Matters Specifically for AI Agents&lt;/H2&gt;
&lt;P&gt;GitOps is straightforward for stateless web services: the code changes, the pipeline runs, the container is deployed. AI agents are more complex because there are multiple distinct artefacts that all affect agent behaviour:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;System prompts and instruction files&lt;/LI&gt;
&lt;LI&gt;Tool definitions and external integrations&lt;/LI&gt;
&lt;LI&gt;Model selection and configuration (temperature, max tokens, safety settings)&lt;/LI&gt;
&lt;LI&gt;Model Context Protocol (MCP) server definitions&lt;/LI&gt;
&lt;LI&gt;Orchestration logic and agent workflow code&lt;/LI&gt;
&lt;LI&gt;Safety and policy settings&lt;/LI&gt;
&lt;LI&gt;Infrastructure and deployment configuration&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Any one of these can change the behaviour of your agent in ways that are difficult to detect without structured review. A prompt change that looks harmless can alter tone, scope, or factual grounding. A tool configuration change can expose data to unintended callers. A model upgrade can shift response quality unpredictably.&lt;/P&gt;
&lt;P&gt;Git gives you a single place to version, review, and approve all of these artefacts together. Pull requests give you a structured review gate. Workflow automation gives you validation before anything reaches a deployed environment. Tags and releases give you deployment markers you can roll back to.&lt;/P&gt;
&lt;P&gt;The discipline of GitOps turns what is often an ad-hoc AI delivery process into a repeatable engineering practice.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Reference Architecture&lt;/H2&gt;
&lt;P&gt;The following diagram shows a practical reference architecture for delivering a Microsoft Foundry Hosted Agent through a GitOps model using GitHub.&lt;/P&gt;
&lt;PRE&gt;+---------------------------+
|    GitHub Repository      |
|  /src  /agents  /tools    |
|  /prompts  /infra         |
|  /.github/workflows       |
+---------------------------+
             |
             | Pull Request / Push to main
             v
+---------------------------+
|   GitHub Actions          |
|  1. Validate agent config |
|  2. Lint and scan code    |
|  3. Run unit tests        |
|  4. Build container image |
|  5. Push to registry      |
+---------------------------+
             |
             | Image tag (SHA or semver)
             v
+---------------------------+
|  Azure Container Registry |
|  myregistry.azurecr.io    |
|  my-agent:&amp;lt;sha&amp;gt;          |
+---------------------------+
             |
      +------+------+
      |             |
      v             v
+----------+  +----------+
| Foundry  |  | Foundry  |
| Dev      |  | Test     |
| Project  |  | Project  |
+----------+  +----------+
                   |
         Approval gate (GitHub env)
                   |
                   v
            +----------+
            | Foundry  |
            | Prod     |
            | Project  |
            +----------+
                   |
                   v
+---------------------------+
|  Observability            |
|  Azure Monitor / App      |
|  Insights / Foundry Logs  |
+---------------------------+
&lt;/PRE&gt;
&lt;P&gt;Key design decisions in this architecture:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The GitHub repository is the single source of truth for all agent artefacts&lt;/LI&gt;
&lt;LI&gt;No human deploys directly to any Foundry project; all changes flow through automation&lt;/LI&gt;
&lt;LI&gt;Environment promotion requires a GitHub environment approval, creating a governance gate&lt;/LI&gt;
&lt;LI&gt;The container image is built once and promoted across environments; the image is not rebuilt per environment&lt;/LI&gt;
&lt;LI&gt;Secrets are stored in Azure Key Vault and accessed by the Foundry agent at runtime via managed identity&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Figure: GitOps delivery pipeline stages from commit to production&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Repository Structure&lt;/H2&gt;
&lt;P&gt;A well-structured repository separates agent logic from infrastructure and tooling from prompts. The following structure works well in practice:&lt;/P&gt;
&lt;PRE&gt;my-foundry-agent/
├── .github/
│   ├── workflows/
│   │   ├── validate.yml        # Runs on every PR
│   │   ├── build-deploy.yml    # Runs on merge to main
│   │   └── rollback.yml        # Manual trigger workflow
│   └── CODEOWNERS              # Review assignments by path
├── src/
│   ├── agents/
│   │   ├── agent.py            # Agent entry point and orchestration
│   │   └── agent_config.json   # Agent metadata and settings
│   ├── tools/
│   │   ├── search_tool.py      # Tool implementations
│   │   └── data_tool.py
│   └── prompts/
│       ├── system.txt          # System prompt (versioned as plain text)
│       └── instructions.txt    # Supplementary instructions
├── tests/
│   ├── unit/                   # Unit tests for tools and logic
│   ├── integration/            # Integration tests against a running agent
│   └── smoke/                  # Post-deployment smoke tests
├── infra/
│   ├── main.bicep              # Foundry project and resource definitions
│   └── environments/
│       ├── dev.parameters.json
│       ├── test.parameters.json
│       └── prod.parameters.json
├── scripts/
│   ├── validate_agent.py       # Config validation script
│   └── smoke_test.py           # Smoke test runner
├── Dockerfile                  # Container image definition
└── docs/
    └── architecture.md         # Architecture and runbook documentation
&lt;/PRE&gt;
&lt;P&gt;What belongs where and why:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;/src/prompts&lt;/STRONG&gt; - System prompts as plain text files. Versioning prompts as files means every change goes through a pull request with a diff review, just as code does.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;/src/agents&lt;/STRONG&gt; - Agent orchestration logic and configuration. Keeps the entry point and agent metadata co-located.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;/src/tools&lt;/STRONG&gt; - Tool implementations separated from agent logic. Tool logic changes independently and should be reviewable in isolation.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;/infra&lt;/STRONG&gt; - Infrastructure as code with per-environment parameter files. Environment-specific values live here, never in source files.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;/tests&lt;/STRONG&gt; - Three layers of testing: unit tests for tools, integration tests for the full agent, and smoke tests that run against a deployed environment.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;/.github/workflows&lt;/STRONG&gt; - All automation defined as code. There should be no manual deployment steps that live outside this directory.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;GitHub Tasks Across the Delivery Lifecycle&lt;/H2&gt;
&lt;P&gt;GitHub Tasks and Issues provide the work tracking layer on top of the GitOps delivery model. Used well, they connect the intention behind a change to its implementation and deployment history.&lt;/P&gt;
&lt;P&gt;Practical patterns for using GitHub Tasks with agent delivery:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Prompt change task&lt;/STRONG&gt; - Open an issue to describe why the system prompt is changing. The pull request that changes &lt;CODE&gt;system.txt&lt;/CODE&gt; closes that issue, creating a permanent link between the rationale and the diff.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tool integration task&lt;/STRONG&gt; - When adding a new MCP server or external tool integration, create a task that captures the design decision, security review outcome, and test evidence before the pull request is merged.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model upgrade task&lt;/STRONG&gt; - When upgrading the underlying model version, create a task that includes evaluation results and comparison data. The task becomes part of your change audit trail.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Rollback task&lt;/STRONG&gt; - If a deployment causes quality regressions, create a task to track the rollback, root cause investigation, and corrective action. Automation can open this task automatically when a deployment fails health checks.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Dependency on approval&lt;/STRONG&gt; - GitHub Tasks can be linked to environment approvals in GitHub Actions. A task in a specific milestone or project column can gate a promotion workflow.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The key insight is that GitHub Tasks are not just work management; they are part of your audit trail. A regulatory or security reviewer can follow the chain from a production deployment back through workflow runs, pull request reviews, and the original task that described the intent of the change.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;End-to-End GitOps Flow&lt;/H2&gt;
&lt;P&gt;The following walk-through describes a realistic developer experience for changing an agent prompt and promoting it to production.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A developer opens a GitHub Issue describing the prompt change required and the expected behaviour improvement.&lt;/LI&gt;
&lt;LI&gt;The developer creates a feature branch, edits &lt;CODE&gt;src/prompts/system.txt&lt;/CODE&gt;, and updates any related unit tests.&lt;/LI&gt;
&lt;LI&gt;A pull request is opened. The validate workflow runs immediately, checking prompt length, configuration schema, and lint rules. Unit tests run against the changed files.&lt;/LI&gt;
&lt;LI&gt;A code reviewer approves the pull request. The CODEOWNERS file ensures that prompt changes require review from the AI engineering team, not just any contributor.&lt;/LI&gt;
&lt;LI&gt;On merge to main, the build workflow runs: the container image is built with the new prompt baked in, tagged with the commit SHA, and pushed to Azure Container Registry.&lt;/LI&gt;
&lt;LI&gt;The deployment workflow deploys the new image to the Foundry Dev project automatically. Integration and smoke tests run against the deployed dev agent.&lt;/LI&gt;
&lt;LI&gt;If tests pass, the workflow pauses at the Test environment gate and requests approval from a named reviewer.&lt;/LI&gt;
&lt;LI&gt;After approval, the same image is deployed to Foundry Test. Smoke tests run again.&lt;/LI&gt;
&lt;LI&gt;A second approval gate controls promotion to Foundry Prod.&lt;/LI&gt;
&lt;LI&gt;If at any point a health check or smoke test fails, the rollback workflow redeploys the previous image tag from the registry. The image tag of the last known-good deployment is stored as a GitHub environment variable.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This flow means that no human ever deploys directly to any environment. Every environment state is traceable to a specific commit, image tag, and workflow run.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2&gt;Security and Governance&lt;/H2&gt;
&lt;P&gt;AI agents often have access to sensitive data and external systems. Security and governance cannot be an afterthought.&lt;/P&gt;
&lt;H3&gt;Identity and Access&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Use managed identity for the Foundry Hosted Agent to access Azure resources. Avoid service principal secrets where Microsoft Entra Workload Identity or managed identity is available.&lt;/LI&gt;
&lt;LI&gt;Apply the principle of least privilege: the agent identity should have read access to data sources and limited write access only where the use case requires it.&lt;/LI&gt;
&lt;LI&gt;Tool integrations that require API keys or external credentials should retrieve them from Azure Key Vault at runtime, never from environment variables baked into the image.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Secrets and Configuration&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Store secrets in Azure Key Vault. Reference them in your Foundry project configuration using Key Vault references.&lt;/LI&gt;
&lt;LI&gt;Store GitHub Actions secrets using repository or environment-scoped secrets. Never echo secrets in workflow logs.&lt;/LI&gt;
&lt;LI&gt;Separate environment configuration (endpoints, resource names, capacity settings) from agent logic. Use the &lt;CODE&gt;/infra/environments/&lt;/CODE&gt; parameter files for this.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Auditability and Review&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Enforce pull request reviews for all changes to &lt;CODE&gt;/src/prompts&lt;/CODE&gt;, &lt;CODE&gt;/src/agents&lt;/CODE&gt;, and &lt;CODE&gt;/infra&lt;/CODE&gt; via CODEOWNERS.&lt;/LI&gt;
&lt;LI&gt;Require status checks to pass before merging. Blocked merges prevent untested changes reaching production.&lt;/LI&gt;
&lt;LI&gt;GitHub's workflow run history gives you a complete deployment audit trail. You can answer "what was deployed to prod on Tuesday and who approved it" in seconds.&lt;/LI&gt;
&lt;LI&gt;For regulated environments, consider branch protection rules that require signed commits.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Safe Rollout&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Use canary or blue-green patterns where Foundry supports them for high-traffic agents.&lt;/LI&gt;
&lt;LI&gt;Always keep the previous image tag available in the registry. Do not delete images on deployment.&lt;/LI&gt;
&lt;LI&gt;Document and test your rollback procedure before you need it in production.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Observability and Operational Readiness&lt;/H2&gt;
&lt;P&gt;A deployed agent that you cannot observe is an agent you cannot operate. Build observability in from the start.&lt;/P&gt;
&lt;H3&gt;What to Monitor&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Deployment health&lt;/STRONG&gt; - Track whether each Foundry deployment succeeded and the agent is responding. Wire deployment outcomes back to GitHub workflow run status.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model and tool errors&lt;/STRONG&gt; - Log tool call failures, model timeout errors, and safety filter activations. Aggregate these in Azure Monitor or Application Insights.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Latency&lt;/STRONG&gt; - Track end-to-end response latency per agent version. A latency increase after a model or prompt change is an early signal of a quality regression.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Token consumption&lt;/STRONG&gt; - Monitor token usage per request and per session. Unexpected increases can indicate prompt injection or runaway orchestration loops.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Traceability&lt;/STRONG&gt; - Log which agent version handled each request. Correlation between the image tag and request traces is essential for debugging production issues.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Debugging and Alerting&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Use structured logging with a consistent schema. Include fields for agent version, session ID, tool called, and outcome.&lt;/LI&gt;
&lt;LI&gt;Set up alerts for error rate thresholds and latency percentiles. Alert before users notice the problem.&lt;/LI&gt;
&lt;LI&gt;For failed agent runs, ensure logs capture the full conversation context (within your data retention policy) so that developers can reproduce and diagnose the failure.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;&lt;HR /&gt;
&lt;H2&gt;Microsoft Foundry Toolboxes&lt;/H2&gt;
&lt;P&gt;One of the most important additions to the Foundry platform is &lt;STRONG&gt;Toolboxes&lt;/STRONG&gt;, currently in Public Preview. If you have ever seen an agent codebase where three different agents each wire the same search tool with their own credentials and slightly different configurations, you already understand the problem Toolboxes solve.&lt;/P&gt;
&lt;P&gt;A Toolbox is a named, versioned bundle of tools managed centrally in Microsoft Foundry. You define the tools once, configure authentication and access centrally, and publish a single MCP-compatible endpoint. Any agent in any runtime consumes that endpoint without per-tool wiring, custom SDK integration, or duplicated credential management.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Figure: Before and after Foundry Toolboxes. Each agent previously managed its own tool connections. With Toolboxes, agents connect to one governed endpoint.&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;The Four Pillars&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Discover (coming soon)&lt;/STRONG&gt; - Find approved tools without browsing long catalogues. Reduces duplication by surfacing what already exists before developers build something new.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Build (available today)&lt;/STRONG&gt; - Select tools into a named toolbox. Supported types include built-in tools (Web Search, Code Interpreter, File Search, Azure AI Search), MCP servers, Agent-to-Agent (A2A) endpoints, and OpenAPI-defined services.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Consume (available today)&lt;/STRONG&gt; - A single MCP-compatible endpoint exposes every tool in the toolbox to any agent runtime. Agents that can speak MCP can use a Foundry Toolbox without any Foundry-specific SDK dependency.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Govern (coming soon)&lt;/STRONG&gt; - Centralised authentication and observability applied to every tool call flowing through the toolbox. Security and platform teams get consistent controls without asking developers to bolt governance onto every agent individually.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Toolboxes and GitOps: A Natural Fit&lt;/H3&gt;
&lt;P&gt;Toolboxes are particularly well-suited to a GitOps delivery model because the toolbox definition is a discrete, versioned artefact. Instead of credentials and tool configuration scattered across agent codebases, the toolbox becomes its own managed entity with its own version history.&lt;/P&gt;
&lt;P&gt;The key design property is that the &lt;STRONG&gt;toolbox endpoint URL is stable&lt;/STRONG&gt;. When you promote a new toolbox version to be the default, agents consuming the endpoint pick up the update without any code changes. This means you can update tool configuration, add a new MCP server, or rotate credentials in the toolbox without redeploying every agent that uses it.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Figure: Toolbox versioning in a GitOps model. Commits trigger CI validation and deployment of new toolbox versions. The stable endpoint URL allows agents to consume updates without redeployment.&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Adding a Toolbox to Your Repository&lt;/H3&gt;
&lt;P&gt;In your GitOps repository, toolbox definitions belong in &lt;CODE&gt;/src/tools/toolbox_config.py&lt;/CODE&gt; or as a declarative configuration file checked into version control. The following example creates a toolbox that combines web search, Azure AI Search over internal documentation, and a GitHub MCP server:&lt;/P&gt;
&lt;PRE&gt;# src/tools/toolbox_config.py
# Run this via CI to create or update a toolbox version in Foundry.

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
import os

client = AIProjectClient(
    endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
    credential=DefaultAzureCredential()
)

toolbox_version = client.beta.toolboxes.create_toolbox_version(
    toolbox_name="customer-feedback-toolbox",
    description="Tools for triaging customer feedback: search, docs, and GitHub.",
    tools=[
        {
            "type": "web_search",
            "description": "Search approved public documentation sites.",
            "custom_search_configuration": {
                "project_connection_id": os.environ["BING_CONNECTION_NAME"],
                "instance_name": os.environ["BING_INSTANCE_NAME"]
            }
        },
        {
            "type": "azure_ai_search",
            "name": "product-manuals-search",
            "description": "Search internal product documentation.",
            "azure_ai_search": {
                "indexes": [
                    {
                        "index_name": os.environ["SEARCH_INDEX_NAME"],
                        "project_connection_id": os.environ["SEARCH_CONNECTION_ID"]
                    }
                ]
            }
        },
        {
            "type": "mcp",
            "server_label": "github",
            "server_url": "https://api.githubcopilot.com/mcp",
            "project_connection_id": os.environ["GITHUB_CONNECTION_ID"]
        }
    ],
)
print(f"Toolbox version created: {toolbox_version.version}")
print(f"MCP endpoint: {toolbox_version.mcp_endpoint}")
&lt;/PRE&gt;
&lt;P&gt;To promote a toolbox version to be the default (the endpoint agents use without specifying a version), add this to your deployment workflow:&lt;/P&gt;
&lt;PRE&gt;# Promote toolbox version to default after validation
toolbox = client.beta.toolboxes.update(
    toolbox_name="customer-feedback-toolbox",
    default_version=toolbox_version.version,
)
print(f"Default version is now: {toolbox.default_version}")
&lt;/PRE&gt;
&lt;P&gt;The stable endpoint for agents consuming this toolbox is:&lt;/P&gt;
&lt;PRE&gt;https://&amp;lt;your-project&amp;gt;.services.ai.azure.com/api/projects/&amp;lt;project&amp;gt;/toolbox/customer-feedback-toolbox/mcp?api-version=v1
&lt;/PRE&gt;
&lt;H3&gt;Attaching the Toolbox to Your Hosted Agent&lt;/H3&gt;
&lt;P&gt;In your agent code, connect to the toolbox via a single MCP tool definition. The agent gains access to every tool in the toolbox without knowing their individual configurations:&lt;/P&gt;
&lt;PRE&gt;# src/agents/agent.py (relevant excerpt)
from agent_framework import MCPStreamableHTTPTool
import httpx, os

toolbox_endpoint = os.environ["FOUNDRY_TOOLBOX_ENDPOINT"]

http_client = httpx.AsyncClient(
    auth=_ToolboxAuth(token_provider),  # Microsoft Entra bearer token
    timeout=120.0,
)

mcp_tool = MCPStreamableHTTPTool(
    name="toolbox",
    url=toolbox_endpoint,
    http_client=http_client,
    load_prompts=False,
)

# Agent now has access to web search, AI Search, and GitHub MCP
# through one tool definition and one authenticated connection.
&lt;/PRE&gt;
&lt;H3&gt;GitOps Workflow Extension for Toolboxes&lt;/H3&gt;
&lt;P&gt;Add a dedicated job to your build-deploy workflow to create and promote toolbox versions as part of the same CI/CD pipeline:&lt;/P&gt;
&lt;PRE&gt;  deploy-toolbox:
    name: Deploy Toolbox Version
    needs: validate
    runs-on: ubuntu-latest
    environment: dev
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4

      - name: Azure login (OIDC)
        uses: azure/login@v3
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID_DEV }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Create toolbox version in Foundry
        env:
          FOUNDRY_PROJECT_ENDPOINT: ${{ vars.FOUNDRY_PROJECT_ENDPOINT_DEV }}
          BING_CONNECTION_NAME: ${{ vars.BING_CONNECTION_NAME }}
          BING_INSTANCE_NAME: ${{ vars.BING_INSTANCE_NAME }}
          SEARCH_INDEX_NAME: ${{ vars.SEARCH_INDEX_NAME }}
          SEARCH_CONNECTION_ID: ${{ vars.SEARCH_CONNECTION_ID }}
          GITHUB_CONNECTION_ID: ${{ vars.GITHUB_CONNECTION_ID }}
        run: python src/tools/toolbox_config.py
&lt;/PRE&gt;
&lt;P&gt;Key points to note:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Toolbox configuration is Python code in source control, reviewed through pull requests like any other change&lt;/LI&gt;
&lt;LI&gt;Connection IDs and index names are environment variables from GitHub Actions variables, not hardcoded in the script&lt;/LI&gt;
&lt;LI&gt;The same script runs for dev, test, and prod with different environment variable bindings&lt;/LI&gt;
&lt;LI&gt;Toolbox version promotion is a separate step from agent deployment, so you can update tools independently of the agent container&lt;/LI&gt;
&lt;LI&gt;Because the toolbox endpoint is stable, rolling back a toolbox version does not require rolling back the agent image&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Common Pitfalls&lt;/H2&gt;
&lt;P&gt;Teams adopting this pattern commonly make the following mistakes. Identifying them early saves significant operational pain later.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Treating prompts as unmanaged text.&lt;/STRONG&gt; If your system prompt lives in a portal text box rather than a versioned file, you have no history, no review process, and no rollback capability. Move prompts into source control on day one.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploying manually from the portal.&lt;/STRONG&gt; Even one manual deployment breaks the GitOps contract. Your repository no longer reflects the true state of the environment. Automate everything and remove portal deployment permissions from individuals.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Mixing environment configuration into source files.&lt;/STRONG&gt; Hardcoded endpoint URLs or model deployment names in &lt;CODE&gt;agent_config.json&lt;/CODE&gt; mean your dev and prod configurations diverge at the source level. Use parameter files and environment variables resolved at deployment time.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Poor separation between agent logic and tool logic.&lt;/STRONG&gt; When agents and tools are tightly coupled in a single file, a tool change requires a full agent review and redeployment. Keep them separate so they can evolve independently.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Not versioning your Toolbox definition.&lt;/STRONG&gt; Defining a Foundry Toolbox interactively through the portal gives you no audit trail and no rollback path. The toolbox configuration script belongs in source control alongside your agent code.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Skipping evaluation before promotion.&lt;/STRONG&gt; Deploying a prompt change without running a structured evaluation against a representative test set is how regressions reach production. Build evaluation into the pull request workflow, not just the deployment workflow.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No rollback plan.&lt;/STRONG&gt; If your first rollback is unplanned and urgent, it will be slow and stressful. Test your rollback procedure in a non-production environment and document the steps.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Ignoring token and cost signals.&lt;/STRONG&gt; AI workloads have variable cost profiles. A change that doubles average token consumption per request may be functionally correct but economically unsustainable. Monitor consumption as a first-class signal.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Example GitHub Actions Workflow&lt;/H2&gt;
&lt;P&gt;The following workflow runs on pull request validation and on merge to main. It covers the core delivery lifecycle: validate, build, deploy to dev, and smoke test.&lt;/P&gt;
&lt;PRE&gt;# .github/workflows/build-deploy.yml

name: Build and Deploy Foundry Hosted Agent

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

env:
  REGISTRY: myregistry.azurecr.io
  IMAGE_NAME: my-foundry-agent

jobs:

  validate:
    name: Validate Agent Configuration
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"

      - name: Install dependencies
        run: pip install -r requirements.txt

      - name: Validate agent config schema
        run: python scripts/validate_agent.py

      - name: Run unit tests
        run: pytest tests/unit/ -v

      - name: Lint code
        run: ruff check src/

  build:
    name: Build and Push Container Image
    needs: validate
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    permissions:
      id-token: write
      contents: read
    outputs:
      image_tag: ${{ steps.meta.outputs.version }}
    steps:
      - uses: actions/checkout@v4

      - name: Azure login (OIDC)
        uses: azure/login@v3
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Log in to Azure Container Registry
        run: az acr login --name ${{ env.REGISTRY }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
          tags: |
            type=sha,format=short

      - name: Build and push image
        uses: docker/build-push-action@v7
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}

  deploy-dev:
    name: Deploy to Foundry Dev
    needs: build
    runs-on: ubuntu-latest
    environment: dev
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4

      - name: Azure login (OIDC)
        uses: azure/login@v3
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID_DEV }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Deploy agent to Foundry Dev project
        run: |
          az ai foundry agent deploy \
            --project ${{ vars.FOUNDRY_PROJECT_DEV }} \
            --image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.build.outputs.image_tag }} \
            --environment dev

      - name: Run smoke tests against dev
        run: pytest tests/smoke/ -v --base-url ${{ vars.AGENT_URL_DEV }}

  deploy-test:
    name: Deploy to Foundry Test
    needs: deploy-dev
    runs-on: ubuntu-latest
    environment: test
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@v4

      - name: Azure login (OIDC)
        uses: azure/login@v3
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID_TEST }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Deploy agent to Foundry Test project
        run: |
          az ai foundry agent deploy \
            --project ${{ vars.FOUNDRY_PROJECT_TEST }} \
            --image ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.build.outputs.image_tag }} \
            --environment test

      - name: Run smoke tests against test
        run: pytest tests/smoke/ -v --base-url ${{ vars.AGENT_URL_TEST }}
&lt;/PRE&gt;
&lt;P&gt;Key decisions in this workflow:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Validation runs on every pull request, not just on merge. Fast feedback catches problems before review.&lt;/LI&gt;
&lt;LI&gt;The container image is built once and the image tag is passed forward to deployment jobs. The same artefact is promoted across environments.&lt;/LI&gt;
&lt;LI&gt;Authentication uses OIDC federated credentials via &lt;CODE&gt;azure/login@v3&lt;/CODE&gt; with &lt;CODE&gt;id-token: write&lt;/CODE&gt; permissions. No long-lived secrets are stored in GitHub for Azure authentication.&lt;/LI&gt;
&lt;LI&gt;The &lt;CODE&gt;environment: test&lt;/CODE&gt; directive in the deploy-test job triggers a GitHub environment approval gate. A named reviewer must approve before the job runs.&lt;/LI&gt;
&lt;LI&gt;Smoke tests run after every deployment. A failed smoke test prevents further promotion.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Best Practices Checklist&lt;/H2&gt;
&lt;P&gt;Use this checklist when adopting the GitOps pattern for a Microsoft Foundry Hosted Agent:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;All agent artefacts, including prompts, tool definitions, model configuration, and Toolbox configuration scripts, are committed to source control&lt;/LI&gt;
&lt;LI&gt;No manual deployments to any environment; all changes flow through GitHub Actions workflows&lt;/LI&gt;
&lt;LI&gt;Pull request reviews are enforced for all changes to agent logic, prompts, and infrastructure via CODEOWNERS&lt;/LI&gt;
&lt;LI&gt;Unit tests cover tool logic; integration tests cover end-to-end agent behaviour; smoke tests cover deployed environments&lt;/LI&gt;
&lt;LI&gt;Container images are built once per commit and promoted across environments; images are not rebuilt per environment&lt;/LI&gt;
&lt;LI&gt;Environment configuration (endpoints, resource names) lives in parameter files, never in source code&lt;/LI&gt;
&lt;LI&gt;Secrets are stored in Azure Key Vault and accessed via managed identity at runtime&lt;/LI&gt;
&lt;LI&gt;GitHub environment approval gates control promotion from dev to test to prod&lt;/LI&gt;
&lt;LI&gt;Foundry Toolboxes are used to centralise tool definitions, credentials, and access governance across all agents; the toolbox configuration script is version-controlled and deployed through CI/CD&lt;/LI&gt;
&lt;LI&gt;Toolbox versions are promoted via the &lt;CODE&gt;update default_version&lt;/CODE&gt; API step in the deployment workflow, not manually through the portal&lt;/LI&gt;
&lt;LI&gt;Latency, error rate, and token consumption are monitored with alerting thresholds&lt;/LI&gt;
&lt;LI&gt;The rollback procedure is documented, automated, and has been tested in a non-production environment&lt;/LI&gt;
&lt;LI&gt;GitHub Issues are used to record the intent behind significant changes and link to the pull requests that implement them&lt;/LI&gt;
&lt;LI&gt;Branch protection rules prevent direct pushes to main and require status checks to pass before merge&lt;/LI&gt;
&lt;LI&gt;The previous image tag is retained in the registry and stored as a GitHub environment variable for rollback&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;A Microsoft Foundry Hosted Agent is not something you deploy once and forget. Prompts evolve, tools change, models are upgraded, and policy requirements shift. Every one of those changes has the potential to alter agent behaviour in ways that affect users, costs, and compliance posture.&lt;/P&gt;
&lt;P&gt;GitOps, implemented through GitHub and GitHub Tasks, gives you the operational discipline to manage that complexity. Source control for all artefacts. Pull request review for every change. Automated validation, build, and deployment. Environment promotion gates. A complete audit trail from task to production. These are not bureaucratic overhead; they are the foundation of reliable, trustworthy AI agent operations.&lt;/P&gt;
&lt;P&gt;The teams that operate AI agents well are the ones that treat them like production software from the start. The investment in pipeline, structure, and governance pays back every time a change goes smoothly, every time a rollback takes minutes rather than hours, and every time a security or compliance reviewer can answer their question from a pull request history rather than a support ticket.&lt;/P&gt;
&lt;P&gt;Build the discipline in early. Your future self, and your production environment, will benefit from it.&lt;/P&gt;
&lt;HR /&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H2&gt;References&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-foundry/" target="_blank" rel="noopener"&gt;Microsoft Foundry documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/agents/" target="_blank" rel="noopener"&gt;Microsoft Foundry Agent Service documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/toolbox" target="_blank" rel="noopener"&gt;Microsoft Foundry Toolboxes documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://devblogs.microsoft.com/foundry/introducing-toolboxes-in-foundry/" target="_blank" rel="noopener"&gt;Introducing Toolboxes in Foundry (Microsoft Developer Blog)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.github.com/en/actions" target="_blank" rel="noopener"&gt;GitHub Actions documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://docs.github.com/en/issues/planning-and-tracking-with-projects" target="_blank" rel="noopener"&gt;GitHub Projects and Tasks documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/container-registry/" target="_blank" rel="noopener"&gt;Azure Container Registry documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/key-vault/" target="_blank" rel="noopener"&gt;Azure Key Vault documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/overview" target="_blank" rel="noopener"&gt;Microsoft Entra Managed Identities documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://opengitops.dev/" target="_blank" rel="noopener"&gt;OpenGitOps Principles&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 02 Jun 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-and-operating-a-microsoft-foundry-hosted-agent-with/ba-p/4523393</guid>
      <dc:creator>Lee_Stott</dc:creator>
      <dc:date>2026-06-02T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Building a GitHub Copilot Agent Usage Dashboard</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-a-github-copilot-agent-usage-dashboard/ba-p/4523529</link>
      <description>&lt;H1&gt;Introduction&lt;/H1&gt;
&lt;P&gt;Working with organisations that are attempting to create&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/visualstudio/ide/copilot-specialized-agents?view=visualstudio" target="_blank" rel="noopener"&gt;GitHub Copilot custom agents&lt;/A&gt;, take-up of these agents by their community becomes important to know. Some questions quickly emerge are "how well are we actually using it?", "which agents are getting used and which have not had that much traction?".&lt;/P&gt;
&lt;P&gt;Native metrics provide high-level insights into adoption, but they lack the depth needed to answer more granular questions—such as which agent workflows are most used, or how behaviour evolves over time.&lt;/P&gt;
&lt;P&gt;In this post, I’ll walk through how to build an enterprise-grade GitHub Copilot usage dashboard that captures detailed telemetry from VS Code using OpenTelemetry, processes it in Azure Monitor, and visualises insights in Grafana—all using a reproducible, infrastructure-as-code approach. The dashboard can be made available to anyone that needs it.&lt;/P&gt;
&lt;H2&gt;Architecture&lt;/H2&gt;
&lt;P&gt;VS Code can be configured to emit metrics using Open Telemetry as a standard. This is a configuration item in VS Code and you essentially point it to an Open Telemetry &lt;EM&gt;Collector.&amp;nbsp;&lt;/EM&gt;The collector is an endpoint that can consume the telemetry.&lt;BR /&gt;&lt;BR /&gt;In this implementation, it is a container image that is hosted in Azure and I have chosen Azure Container Apps (ACA) for this purpose as it is an easy to use managed environment - but it could also run in Azure Kubernetes Service (AKS) with a little more effort.&lt;BR /&gt;&lt;BR /&gt;There is a prebuilt image &lt;A class="lia-external-url" href="https://hub.docker.com/r/otel/opentelemetry-collector" target="_blank" rel="noopener"&gt;opentelemetry collector&lt;/A&gt; for this and this has been adapted to inject configuration to send the telemetry to Azure Application Insights.&lt;/P&gt;
&lt;P&gt;For defining and hosting the dashboard, I have chosen another Azure managed service Azure Managed Grafana&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Sample Dashboard&lt;/H2&gt;
&lt;P&gt;The sample dashboard is one that contains a collection of visualisations derived from the collected data in Application Insights. Azure Managed Grafana allows you to visually author these dashboards or they can be implemented as a JSON file and adapted from there.&lt;/P&gt;
&lt;P&gt;Note that the telemetry generated by VS Code gives the location of the users - city, region and country, but does not include any personally-identifying information (PII) and so cannot be used to track individuals. As I understand it, this is by design.&lt;BR /&gt;&lt;BR /&gt;Managed Grafana has its own permission structure, which may then be used to give users access to the dashboard.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Implementation Details&lt;/H2&gt;
&lt;P&gt;There is a &lt;A class="lia-external-url" href="https://github.com/jometzg/copilot-usage-dashboard" target="_blank" rel="noopener"&gt;GitHub repo Copilot Usage Dashboard&lt;/A&gt; that contains details of how to implement this together with instructions for either "click-ops" 🙂creation or via Terraform. So I suggest you follow the link to my repo to look at the details. In summary, there needs to be in Azure:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure Container App (ACA) that hosts the collector - this needs to have public ingress&lt;/LI&gt;
&lt;LI&gt;Azure Container Registry (ACR) that hosts the docker image that is customised via the Dockerfile&lt;/LI&gt;
&lt;LI&gt;Key Vault that hosts the Application Insights connection string that ACA references&lt;/LI&gt;
&lt;LI&gt;Application Insights - this needs to be created with a flag to allow it to work with Grafana data&lt;/LI&gt;
&lt;LI&gt;Log Analytics Workspace that works with Application Insights&lt;/LI&gt;
&lt;LI&gt;Azure Managed Grafana to host the Grafana dashboard&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The main thing to bear in mind is that VS Code needs to be configured to emit &lt;A class="lia-external-url" href="https://code.visualstudio.com/docs/copilot/guides/monitoring-agents" target="_blank" rel="noopener"&gt;OpenTelemetry&lt;/A&gt;&lt;/P&gt;
&lt;LI-CODE lang=""&gt;{
  "github.copilot.nextEditSuggestions.enabled": true,
  "github.copilot.chat.otel.enabled": true,
  "github.copilot.chat.otel.exporterType": "otlp-http",
  "github.copilot.chat.otel.otlpEndpoint": "https://&amp;lt;fqdn&amp;gt;"
}&lt;/LI-CODE&gt;
&lt;P&gt;where the &lt;EM&gt;FQDN &lt;/EM&gt;is the URL of the public ingress to the Azure Container App.&lt;/P&gt;
&lt;P&gt;There is a Dockerfile in this repo that just injects the correct configuration file into the OpenTelemetry collector image. It is this configuration file that tells the collector to emit to Application Insights. It is of the form below:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:
  attributes:
    actions:
      - key: environment
        value: "prod"
        action: upsert

exporters:
  azuremonitor:
    connection_string: "${APPLICATIONINSIGHTS_CONNECTION_STRING}"
  debug:
    verbosity: detailed

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch, attributes]
      exporters: [azuremonitor, debug]

    metrics:
      receivers: [otlp]
      processors: [batch, attributes]
      exporters: [azuremonitor]&lt;/LI-CODE&gt;
&lt;P&gt;As can be seen above, there is a placeholder for the Application Insights connection string - in the ACA configuration this is an environment variable that then points to a secret which is in key vault.&lt;/P&gt;
&lt;P&gt;If all is well, VS Code will emit telemetry to the container image running in ACA and this will use its configuration to send to Application Insights. The Grafana dashboard then using this data.&lt;/P&gt;
&lt;H2&gt;Troubleshooting&lt;/H2&gt;
&lt;P&gt;The GitHub repo goes into the detail of troubleshooting, but the overall steps to troubleshoot are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;If there is no data in Grafana, check that Grafana has access to Application Insights&lt;/LI&gt;
&lt;LI&gt;check whether there is telemetry being pushed into Application Insights by looking at the logs and looking for the contents of the table &lt;EM&gt;Dependencies&lt;/EM&gt;. If there is telemetry there, then it is Grafana permissions. If not, look to ACA&lt;/LI&gt;
&lt;LI&gt;Look at ACA logs to see if it is healthy and look to see if there is any logs being received&lt;/LI&gt;
&lt;LI&gt;Use a curl request to send a fake log to ACA (a sample is in the repo) to see if the ACA is accepting logs&lt;/LI&gt;
&lt;LI&gt;Check the connection to Application Insights is correct and is being pulled from key vault or replace the environment variable value with the connection string directly&lt;/LI&gt;
&lt;LI&gt;If all good so far, then it may be that the configuration in VS Code is not correct or in the correct place.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Hopefully the more detailed steps will resolve any issues quickly.&lt;/P&gt;
&lt;H2&gt;Further thoughts and enhancements&lt;/H2&gt;
&lt;P&gt;This implementation attempts to build a dashboard showing GitHub Copilot agent usage using a standard set of security controls, but more may be needed. Here is a list of possible enhancements:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A more refined dashboard. This should be easy as there are samples for all sorts of visualisations and few of these may allow more focus on agent and model usage.&lt;/LI&gt;
&lt;LI&gt;the ACA-hosted OpenTelemetry collector has a public-facing ingress. This may need to be locked-down at the network level by address restriction or by a non-public ingress. Care would need to be taken to make sure that this is then visible/reachable to the intended VS Code user audience&lt;/LI&gt;
&lt;LI&gt;The ACA collector endpoint is not authenticated in of itself. This could be achieved at the container level by putting an authenticating proxy in the Dockerfile or at the ACA ingress level. Some investigation would be needed to see how the VS Code configuration could work with this and this may dictate largely what form this authentication can take.&lt;/LI&gt;
&lt;LI&gt;How the VS Code configuration changes can be automated for a user base has not been investigated as part of this work. It is assumed that an organisation may be able to roll-out these changes using their application deployment automation.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;This approach provides a means by which an organisation can track the usage of GitHub Copilot agents (and their models), that is not provided by GitHub Enterprise dashboards. This will provide insights into the take up of custom agents and their underlying models - allowing an organisation to test whether their investments on custom agents are being used effectively. Additionally, the dashboards themselves can easily be rolled-out to a wider community than GitHub Enterprise one.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Jun 2026 19:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-a-github-copilot-agent-usage-dashboard/ba-p/4523529</guid>
      <dc:creator>jometzg</dc:creator>
      <dc:date>2026-06-01T19:00:00Z</dc:date>
    </item>
    <item>
      <title>Claude Code on Microsoft Foundry in VS Code — A Practical Setup Guide (with the gotchas)</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/claude-code-on-microsoft-foundry-in-vs-code-a-practical-setup/ba-p/4524245</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;Enables enterprise-grade governance without changing your developer workflow.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The official Microsoft Learn article (&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/foundry-models/how-to/configure-claude-code?tabs=powershell" target="_blank" rel="noopener"&gt;Configure Claude Code for Microsoft Foundry&lt;/A&gt;) gets you ~80% of the way there. The remaining 20%—VS Code settings shape, tenant mismatches, and configuration conflicts like "baseURL and resource are mutually exclusive"—is where most setups fail in practice.&lt;/P&gt;
&lt;P&gt;This guide walks the full path end-to-end, with the exact JSON that validates, working CLI configuration, and a troubleshooting matrix based on real-world failures. This guidance is based on repeated customer deployments and internal testing across both CLI and VS Code scenarios.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="tldr"&gt;TL;DR&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Setup&lt;/STRONG&gt; - Deploy &lt;CODE&gt;claude-sonnet-4-6&lt;/CODE&gt; (optionally Haiku + Opus) in a supported region - Grant &lt;CODE&gt;Cognitive Services User&lt;/CODE&gt; + &lt;CODE&gt;Foundry User&lt;/CODE&gt; - &lt;CODE&gt;az login --tenant &amp;lt;tenant&amp;gt;&lt;/CODE&gt;, then launch VS Code via &lt;CODE&gt;code .&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Config&lt;/STRONG&gt; - CLI: - &lt;CODE&gt;CLAUDE_CODE_USE_FOUNDRY=1&lt;/CODE&gt; - &lt;CODE&gt;ANTHROPIC_FOUNDRY_RESOURCE=&amp;lt;name&amp;gt;&lt;/CODE&gt; - Do &lt;STRONG&gt;NOT&lt;/STRONG&gt; set &lt;CODE&gt;ANTHROPIC_FOUNDRY_BASE_URL&lt;/CODE&gt; at the same time - VS Code: - Use &lt;CODE&gt;[{ "name": "...", "value": "..." }]&lt;/CODE&gt; format&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Validate&lt;/STRONG&gt; - &lt;CODE&gt;claude → /status&lt;/CODE&gt; - Expect: &lt;CODE&gt;API provider: Microsoft Foundry&lt;/CODE&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="why-run-claude-code-on-foundry"&gt;Why run Claude Code on Foundry?&lt;/H2&gt;
&lt;P&gt;Anthropic's Claude Code is a top-tier agentic coding assistant. Running it through Microsoft Foundry instead of Anthropic's public API gives you:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Data residency &amp;amp; compliance&lt;/STRONG&gt;: prompts and completions stay inside your Azure tenant.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Entra ID auth&lt;/STRONG&gt;: no API keys to rotate; centralized RBAC.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Private networking&lt;/STRONG&gt;: works behind VNets/Private Endpoints.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Unified billing &amp;amp; quotas&lt;/STRONG&gt;: usage shows up on your Azure invoice and in Foundry monitoring.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Same model, same CLI, enterprise-grade plumbing underneath.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="prerequisites-checklist"&gt;Prerequisites checklist&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Requirement&lt;/th&gt;&lt;th&gt;How to verify&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Azure subscription with pay-as-you-go billing&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;az account show&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Foundry resource in supported regions&lt;/td&gt;&lt;td&gt;Check your region's model availability in Foundry portal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Contributor/Owner on the resource group (for deployments)&lt;/td&gt;&lt;td&gt;Azure Portal → IAM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt; + &lt;STRONG&gt;Foundry User&lt;/STRONG&gt; on the resource (for invoking)&lt;/td&gt;&lt;td&gt;Azure Portal → IAM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Azure CLI installed and logged in&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;az --version&lt;/CODE&gt;, &lt;CODE&gt;az login&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Code CLI installed&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude --version&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;VS Code (current) with the Anthropic Claude Code extension&lt;/td&gt;&lt;td&gt;Help → About&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Windows only:&lt;/STRONG&gt; Git Bash (from Git for Windows) or WSL2 — Claude Code's runtime requires a POSIX shell&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;bash --version&lt;/CODE&gt; in Git Bash / WSL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;⚠️ Claude models in Foundry are currently available in select regions. Check the Foundry portal model catalog for your region's availability (commonly East US 2 and Sweden Central).&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;HR /&gt;
&lt;H2 id="step-1-deploy-the-claude-models"&gt;Step 1 — Deploy the Claude models&lt;/H2&gt;
&lt;P&gt;Claude Code uses &lt;STRONG&gt;three model roles&lt;/STRONG&gt;, and it expects a deployment for each:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Default deployment name&lt;/th&gt;&lt;th&gt;Used for&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Primary&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude-sonnet-4-6&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;general coding (balanced)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fast&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude-haiku-4-5&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;quick edits, file reads&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Extended thinking&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude-opus-4-6&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;complex reasoning&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Deploy at least Sonnet to get started. Add Haiku and Opus when you need them — Claude Code will route automatically. If a role-specific model isn't deployed, Claude Code may fall back or fail depending on the task.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Deployment names in this guide follow the current Claude 4.x naming exposed in Foundry. Exact versions change over time — check the Foundry model catalog in your region for what's currently available.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Foundry Portal:&lt;/STRONG&gt; AI Foundry → your project → &lt;STRONG&gt;Build → Models + endpoints&lt;/STRONG&gt; → &lt;STRONG&gt;+ Deploy model&lt;/STRONG&gt; → pick the Anthropic Claude model → Global Standard deployment → name it exactly as above (or remember the name to override later).&lt;/P&gt;
&lt;P&gt;To discover the current model version before deploying (replace &lt;CODE&gt;eastus2&lt;/CODE&gt; with your Foundry region):&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="az cognitiveservices model list -l eastus2 `
  --query &amp;quot;[?contains(model.name,'claude')].{name:model.name, version:model.version, format:model.format}&amp;quot; -o table
"&gt;&lt;CODE&gt;az cognitiveservices model list -l eastus2 `
  --query "[?contains(model.name,'claude')].{name:model.name, version:model.version, format:model.format}" -o table
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Azure CLI:&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="az cognitiveservices account deployment create `
  --name &amp;lt;foundry-resource&amp;gt; `
  --resource-group &amp;lt;rg&amp;gt; `
  --deployment-name claude-sonnet-4-6 `
  --model-name claude-sonnet-4-6 `
  --model-version &amp;lt;version&amp;gt; `
  --model-format Anthropic `
  --sku-name GlobalStandard `
  --sku-capacity 1
"&gt;&lt;CODE&gt;az cognitiveservices account deployment create `
  --name &amp;lt;foundry-resource&amp;gt; `
  --resource-group &amp;lt;rg&amp;gt; `
  --deployment-name claude-sonnet-4-6 `
  --model-name claude-sonnet-4-6 `
  --model-version &amp;lt;version&amp;gt; `
  --model-format Anthropic `
  --sku-name GlobalStandard `
  --sku-capacity 1
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;✍️ &lt;EM&gt;Figure 1: Foundry portal “Models + endpoints” showing the three Claude deployments.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="data:image/png;base64,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" alt="Three Claude model deployments in the Foundry portal" /&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="step-2-grant-yourself-the-right-roles"&gt;Step 2 — Grant yourself the right roles&lt;/H2&gt;
&lt;P&gt;This is the #1 source of silent failures. You need &lt;STRONG&gt;both&lt;/STRONG&gt;:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Role ID&lt;/th&gt;&lt;th&gt;Purpose&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;a97b65f3-24c7-4388-baec-2e87135dc908&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;data-plane invocation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Foundry User&lt;/STRONG&gt; &lt;EM&gt;(formerly Azure AI User)&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;53ca6127-db72-4b80-b1b0-d745d6d5456d&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;Foundry-native permissions&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="$me = az ad signed-in-user show --query id -o tsv
$scope = az cognitiveservices account show -n &amp;lt;foundry-resource&amp;gt; -g &amp;lt;rg&amp;gt; --query id -o tsv

# Use role IDs — rename-proof (works whether the display name is &amp;quot;Azure AI User&amp;quot; or &amp;quot;Foundry User&amp;quot;)
az role assignment create --assignee $me --role a97b65f3-24c7-4388-baec-2e87135dc908 --scope $scope  # Cognitive Services User
az role assignment create --assignee $me --role 53ca6127-db72-4b80-b1b0-d745d6d5456d --scope $scope  # Foundry User (formerly Azure AI User)
"&gt;&lt;CODE&gt;$me = az ad signed-in-user show --query id -o tsv
$scope = az cognitiveservices account show -n &amp;lt;foundry-resource&amp;gt; -g &amp;lt;rg&amp;gt; --query id -o tsv

# Use role IDs — rename-proof (works whether the display name is "Azure AI User" or "Foundry User")
az role assignment create --assignee $me --role a97b65f3-24c7-4388-baec-2e87135dc908 --scope $scope  # Cognitive Services User
az role assignment create --assignee $me --role 53ca6127-db72-4b80-b1b0-d745d6d5456d --scope $scope  # Foundry User (formerly Azure AI User)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The Foundry RBAC rename (Azure AI User → Foundry User) is rolling out; both role names map to the same role definition (same role ID), depending on tenant rollout state. Use whichever role name your tenant exposes — or use the role IDs above to avoid ambiguity.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;HR /&gt;
&lt;H2 id="step-3-install-the-claude-code-cli"&gt;Step 3 — Install the Claude Code CLI&lt;/H2&gt;
&lt;P&gt;Use the official installer from Anthropic (auto-updates in the background):&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="irm https://claude.ai/install.ps1 | iex
claude --version
"&gt;&lt;CODE&gt;irm https://claude.ai/install.ps1 | iex
claude --version
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If &lt;CODE&gt;claude&lt;/CODE&gt; isn't on PATH, restart your shell. The installer drops it under &lt;CODE&gt;%USERPROFILE%\.local\bin&lt;/CODE&gt;.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="step-4-sign-in-to-the-right-tenant"&gt;Step 4 — Sign in to the &lt;STRONG&gt;right&lt;/STRONG&gt; tenant&lt;/H2&gt;
&lt;P&gt;If your Foundry resource lives in a tenant different from your default, an &lt;CODE&gt;az login&lt;/CODE&gt; to the wrong tenant produces the cryptic error:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;ValueError: Unable to get authority configuration for
https://login.microsoftonline.com/&amp;lt;bad-guid&amp;gt;.
Authority would typically be in a format of
https://login.microsoftonline.com/your_tenant
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Fix:&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="az login --tenant &amp;lt;foundry-tenant-guid&amp;gt;
az account set --subscription &amp;lt;foundry-subscription-guid&amp;gt;
az account show   # confirm tenant &amp;amp; subscription
"&gt;&lt;CODE&gt;az login --tenant &amp;lt;foundry-tenant-guid&amp;gt;
az account set --subscription &amp;lt;foundry-subscription-guid&amp;gt;
az account show   # confirm tenant &amp;amp; subscription
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;💡 You can list every tenant you have access to with: &lt;CODE&gt;az account list --query "[].{name:name, tenantId:tenantId}" -o table&lt;/CODE&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;HR /&gt;
&lt;H2 id="step-5-configure-the-cli"&gt;Step 5 — Configure the CLI&lt;/H2&gt;
&lt;P&gt;Set these in the same PowerShell session you'll launch &lt;CODE&gt;claude&lt;/CODE&gt; from:&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="$env:CLAUDE_CODE_USE_FOUNDRY     = &amp;quot;1&amp;quot;
$env:ANTHROPIC_FOUNDRY_RESOURCE  = &amp;quot;&amp;lt;your-foundry-resource-name&amp;gt;&amp;quot;

# Optional: only if your deployment names differ from the defaults
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = &amp;quot;claude-sonnet-4-6&amp;quot;
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL  = &amp;quot;claude-haiku-4-5&amp;quot;
$env:ANTHROPIC_DEFAULT_OPUS_MODEL   = &amp;quot;claude-opus-4-6&amp;quot;
"&gt;&lt;CODE&gt;$env:CLAUDE_CODE_USE_FOUNDRY     = "1"
$env:ANTHROPIC_FOUNDRY_RESOURCE  = "&amp;lt;your-foundry-resource-name&amp;gt;"

# Optional: only if your deployment names differ from the defaults
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = "claude-sonnet-4-6"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL  = "claude-haiku-4-5"
$env:ANTHROPIC_DEFAULT_OPUS_MODEL   = "claude-opus-4-6"
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;To make them persistent: &lt;CODE&gt;setx CLAUDE_CODE_USE_FOUNDRY 1&lt;/CODE&gt; (and so on), then &lt;STRONG&gt;sign out and back in&lt;/STRONG&gt; (or restart Explorer). GUI apps like VS Code launched from the Start menu only pick up new user-env vars after the user session refreshes — opening a fresh terminal isn't enough.&lt;/P&gt;
&lt;H3 id="the-mutually-exclusive-trap"&gt;🚫 The "mutually exclusive" trap&lt;/H3&gt;
&lt;PRE&gt;&lt;CODE&gt;API Error: baseURL and resource are mutually exclusive
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You'll hit this if you set &lt;STRONG&gt;both&lt;/STRONG&gt; &lt;CODE&gt;ANTHROPIC_FOUNDRY_RESOURCE&lt;/CODE&gt; and &lt;CODE&gt;ANTHROPIC_FOUNDRY_BASE_URL&lt;/CODE&gt;. Pick one:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Most users → &lt;CODE&gt;ANTHROPIC_FOUNDRY_RESOURCE=&amp;lt;name&amp;gt;&lt;/CODE&gt; (Claude Code builds the URL).&lt;/LI&gt;
&lt;LI&gt;Custom subdomain / private endpoint → use &lt;CODE&gt;ANTHROPIC_FOUNDRY_BASE_URL&lt;/CODE&gt; &lt;EM&gt;instead&lt;/EM&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H2 id="step-6-verify-the-cli"&gt;Step 6 — Verify the CLI&lt;/H2&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="claude
&amp;gt; /status
"&gt;&lt;CODE&gt;claude
&amp;gt; /status
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Expected output:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;API provider:                 Microsoft Foundry
Microsoft Foundry base URL:   https://&amp;lt;resource&amp;gt;.services.ai.azure.com/anthropic
Microsoft Foundry resource:   &amp;lt;resource&amp;gt;
Model:                        Default (claude-sonnet-4-6)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;✍️ &lt;EM&gt;Figure 2: &lt;CODE&gt;/status&lt;/CODE&gt; output confirming &lt;CODE&gt;API provider: Microsoft Foundry&lt;/CODE&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="data:image/png;base64,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fbEeQ1fcnv/W1sJuvvlmzZ07t8vAViu327+UjBs3TgsWLEg4OLv6NfSk/Ev3+m0NOksWYLt//34zSC5V6dT/P/7xj+a49SWVwRoIl856kbrrrrvOHHd+yW7UqURBZtYv3V9//XVbmmHv3r3mS0Int8vLUmfq6uqSBiTX1NSY41dffbU57sX2c81aLslaWFDsC3tn2XaHc+fOOSd5xovyc1N/vPbWW285J0mxH28YEl0jc8WL/PdSovuvLN1y9XS9ff/dqKqq0v/9v/837kVfOrKRf9m8finL159nn31WP/nJT5I+210KrNfDF154wZam2Iti40dukvRXf/VXtnS3rM/2s2fP1rJly9LqmjTb9+9s11+3cll+Pe3+lUh3ll8m10+vrl9G8EUoFNKpU6d06tQpyfIjQGt3dNnC85c7mdSfnqS3738msn3/cSub1z8vzh+vrn+GUChka7kzUdCfldvnj2RCoZDWrVtnHl9zc7OrZ/OeKlv5BwAAAILMXDty5IiefPJJPffcczp8+LAtbfz48XrggQfiAs2cn5MFOZ05c8YcLywstKXlknX/k+27YgE6hp62/0Y3p53tf3coLy/X8ePHtXbtWm3dutUc1q5da6tPN910k205r/3xj380Wz6qra1NObDKK9Y/1BP90tVL1vprDRB166OPPnJO0p49e7R8+XItX77c7PLQi/N/3759ZhBQIBDQtGnTtHTpUj366KNasmSJ5syZE7cdg3N6uts3jscYrL90q66ujktfvnx5wpbieooxY8bEtbxmDIm+XHabf7lm3X/jS/1EnL/O7Eqq9V+x+6Zx7g0aNCiupbeysjJzPNmXeHBn3LhxUqyVAGceWwMXrS2eyVE2nV2rk7U+4HZ565fEibrmNVi/qO3bt6857nb7uWY9/lwGEowdO1YrVqzQU089pd27d9sGo4tcJQlUdMNt+bmtP14znrsSSXYMueQ2/3F5sz5zTJ48WZs2bdJTTz2lxYsX287NbMvV9Stb159QKKTFixfrqaee0qZNm2zPruk+y/VkzjqS7Nis9SyV/EvHb3/7W/MldHFxsebNm6dNmzZp+/btWrduXad12av7d6b1d/r06bbB2mpxZWVlXPr06dNtddGZlu7yznzp7vLrKfevTMsv19xev+rr681xWQLKTp06ZaY5W75L1AWrV3j+wuXEq/uPW7m6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RZAZAAAAAAAAAAAAAAAAACApgswAAAAAAAAAAAAAAAAAAEkRZAYAAAAAAAAAAAAAAAAASIogMwAAAAAAAAAAAAAAAABAUgSZAQAAAAAAAAAAAAAAAACSIsgMAAAAAAAAAAAAAAAAAJAUQWYAAAAAAAAAAAAAAAAAgKQIMgMAAAAAAAAAAAAAAAAAJEWQGQAAAAAAAAAAAAAAAAAgKYLMAAAAAAAAAAAAAAAAAABJEWQGAAAAAAAAAAAAAAAAAEiKIDMAAAAAAAAAAAAAAAAAQFIEmQEAAAAAAAAAAAAAAAAAkiLIDAAAAAAAAAAAAAAAAACQFEFmAAAAAAAAAAAAAAAAAICkCDIDAAAAAAAAAAAAAAAAACRFkBkAAAAAAAAAAAAAAAAAICmCzAAAAAAAAAAAAAAAAAAASRFkBgAAAAAAAAAAAAAAAABIiiAzAAAAAAAAAAAAAAAAAEBSBJkBAAAAAAAAAAAAAAAAAJIiyAwAAAAAAAAAAAAAAAAAkBRBZgAAAAAAAAAAAAAAAACApAgyAwAAAAAAAAAAAAAAAAAkRZAZAAAAAAAAAAAAAAAAACApgswAAAAAAAAAAAAAAAAAAEkRZAYAAAAAAAAAAAAAAAAASIogMwAAAAAAAAAAAAAAAABAUgSZAQAAAAAAAAAAAAAAAACSIsgMAAAAAAAAAAAAAAAAAJAUQWYAAAAAAAAAAAAAAAAAgKQIMgMAAAAAAAAAAAAAAAAAJEWQGQAAAAAAAAAAAAAAAAAgKYLMAAAAAAAAAAAAAAAAAABJEWQGAAAAAAAAAAAAAAAAAEiKIDMAAAAAAAAAAAAAAAAAQFIEmQEAAAAAAAAAAAAAAAAAkiLIDAAAAAAAAAAAAAAAAACQFEFmAAAAAAAAAAAAAAAAAICkCDIDAAAAAAAAAAAAAAAAACRFkBkAAAAAAAAAAAAAAAAAICmCzAAAAAAAAAAAAAAAAAAASRFkBgAAAAAAAAAAAAAAAABIiiAzAAAAAAAAAAAAAAAAAEBSBJkBAAAAAAAAAAAAAAAAAJIiyAwAAAAAAAAAAAAAAAAAkBRBZgAAAAAAAAAAAAAAAACApAgyAwAAAAAAAAAAAAAAAAAkRZAZAAAAAAAAAAAAAAAAACApgswAAAAAAAAAAAAAAAAAAEkRZAYAAAAAAAAAAAAAAAAASIogMwAAAAAAAAAAAAAA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JGnmzJnmL/rb2trU2trqKum0evVqE1gViURUV1en2tpaxzKbS5cu1cqVK221/qq6utoRXHb06FHV1taqrq5OHR0dZsnOzuzZs8cxe5p1/kOHDpkyubm5noFuAAD0hebmZvMZ6vP5lJ+f78hfv369Y/aiuro6BYNB83ms6JJn3Qk06Y2jR48qGAyaV2Njo2PWoqKioj47dyLs19zS0mLSW1paHHn2V1+YOXOm2baWHe+J73//+44gkNbW1rj3lZ6erieffNLsJ0t/9v8//uM/OgKrGhsbFQwGVVdXp3A4rK9+9auO8vH05/OTn5+v0tJSsx8Oh809uF8nTpxw1LUsX77cBHDZr9/+vbu0tFQlJSW2WrEeeeQRRSIRNTQ0xNx/enp6l/ff2/q9bX972/TX82tfYrg/gszuu+8+s/3666/3OEC1M8ePHzfbXgGOAAAAAAAAAACgfw2J5TLXrFmjt99+W4r+8Dht2jSzbKT1A4x7ucw1a9aYpTQ7OjpUVFTk+HFs7969ys3NNflTp041eenp6eZ8krRlyxatXr3akW8PIFOc5TLt529ra9O9997rOH9xcbE2bNggn88Xc343lssEAHRXd5bLlGspwx07dpilD8vKykyQSmtrq1auXOkI8MnPz9fjjz8edzk39wxTGRkZZiahlpaWuEEtXS1/aFdYWKjvfve78vl8ikQi5rPRLlnLJSqB5R6VYN1EJbKkXklJiZYvXy5FA3SefvrpmGXtrH6QpBdeeMFz2cxkt0Ff97/f79fu3bvNvv25sPLtAUyKc45Enp9ksLd5Y2OjHn74YXeRTtmvPxwOa/ny5Y7rr6qqUl5ensl3X799uctIJKInnnjCMROWvf37on6y2j/ZY7e77OeNt6RkIs92dzz33HNmfD/44IO68sor9a1vfcsRdBoOh/X666/r2WeftdXsWmfPHgAAAAAAAAAAGBiGxExmra2tZvYx6y/8u1pm8vbbbzfbL774YsysZw899JAikYgkKTU11bF8pD2IKxQKOQLMFL2ermYfs59/+fLlMeevqakxP4SmpqZq8eLFjvxkq6mp0dSpU5WWlkaAGQDAwb7s3E033WS2165d6wjQkKT6+nq9/vrrUrReYWGhySsqKnK87EvVWcsdul/XXnutKdOV/fv3m9lAfT6f49xIjptvvtls19bWxgS5KNoPTz/9tJ54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AAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADgiSAzAAAAAAAAAAAAAAAAAIAngswAAAAAAAAAAAAAAAAAAJ4IMgMAAAAAAAAAAAAAAAAAeCLIDAAAAAAAAAAAAAAAAADg6f8DyVMKFofocdsAAAAASUVORK5CYII=" alt="Claude CLI /status panel showing Microsoft Foundry as the API provider" /&gt;&lt;/P&gt;
&lt;P&gt;If you instead see "Anthropic" or it prompts for an Anthropic login, &lt;CODE&gt;CLAUDE_CODE_USE_FOUNDRY&lt;/CODE&gt; isn't being inherited — see troubleshooting below.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="step-7-configure-the-vs-code-extension"&gt;Step 7 — Configure the VS Code extension&lt;/H2&gt;
&lt;P&gt;Install &lt;STRONG&gt;Claude Code&lt;/STRONG&gt; from the VS Code Marketplace (publisher: Anthropic).&lt;/P&gt;
&lt;P&gt;Open user &lt;CODE&gt;settings.json&lt;/CODE&gt; (&lt;CODE&gt;Ctrl+Shift+P&lt;/CODE&gt; → &lt;EM&gt;Preferences: Open User Settings (JSON)&lt;/EM&gt;) and add:&lt;/P&gt;
&lt;PRE class="language-jsonc" tabindex="0" contenteditable="false" data-lia-code-value="&amp;quot;claudeCode.environmentVariables&amp;quot;: [
  { &amp;quot;name&amp;quot;: &amp;quot;CLAUDE_CODE_USE_FOUNDRY&amp;quot;,    &amp;quot;value&amp;quot;: &amp;quot;1&amp;quot; },
  { &amp;quot;name&amp;quot;: &amp;quot;ANTHROPIC_FOUNDRY_RESOURCE&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;&amp;lt;your-foundry-resource-name&amp;gt;&amp;quot; }
]
"&gt;&lt;CODE&gt;"claudeCode.environmentVariables": [
  { "name": "CLAUDE_CODE_USE_FOUNDRY",    "value": "1" },
  { "name": "ANTHROPIC_FOUNDRY_RESOURCE", "value": "&amp;lt;your-foundry-resource-name&amp;gt;" }
]
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;🪤 &lt;STRONG&gt;Schema gotcha.&lt;/STRONG&gt; The MS Learn doc currently shows this as a plain &lt;CODE&gt;{KEY: VALUE}&lt;/CODE&gt; object under the UI label &lt;CODE&gt;"Claude Code: Environment Variables"&lt;/CODE&gt;. In recent extension versions the actual JSON key is &lt;CODE&gt;claudeCode.environmentVariables&lt;/CODE&gt; and the value must be an &lt;STRONG&gt;array of &lt;CODE&gt;{name, value}&lt;/CODE&gt; objects&lt;/STRONG&gt;. If you paste the doc's snippet verbatim, VS Code will flag &lt;EM&gt;"Missing property name", "Colon expected", "Unknown configuration setting"&lt;/EM&gt;. Use the array form above.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 id="make-the-extension-see-your-az-login"&gt;Make the extension see your &lt;CODE&gt;az login&lt;/CODE&gt;&lt;/H3&gt;
&lt;P&gt;The extension inherits environment &amp;amp; credentials from the process that launches VS Code. After &lt;CODE&gt;az login&lt;/CODE&gt;:&lt;/P&gt;
&lt;PRE class="language-powershell" tabindex="0" contenteditable="false" data-lia-code-value="# In the same PowerShell where az login succeeded:
code .
"&gt;&lt;CODE&gt;# In the same PowerShell where az login succeeded:
code .
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If VS Code was already running, &lt;STRONG&gt;fully quit it&lt;/STRONG&gt; (not just close the window) and relaunch from the terminal. &lt;CODE&gt;Developer: Reload Window&lt;/CODE&gt; is &lt;STRONG&gt;not enough&lt;/STRONG&gt; to refresh inherited Azure CLI credentials.&lt;/P&gt;
&lt;P&gt;✍️ &lt;EM&gt;Figure 3: &lt;CODE&gt;settings.json&lt;/CODE&gt; with the &lt;CODE&gt;claudeCode.environmentVariables&lt;/CODE&gt; array form.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="data:image/png;base64,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I+/fn9p5RXxdjCV5f/rPg70o6280vq8RxYEpKzvHK46Mh2XfKMGNzpt4+PChOGnSJOI6aW2G+cd7Yf5sD1x/M4kXKiIiionSre9gZ3kGHD+rwe5z4lQiglJzn9OKtxkQxZx5Ux8saMTY25OUrUISrxdeACaTSZwyIVgDmNCOA3cB06paHigioilvPdaXZwBDv8RZBn9ENOGOwlQEePvEenxKNqwBTLB10pNqAS1ZAOCAmz020XQQVluNYYP0vuSjtGELqrNRnz416QzaGxnoOmOcnjndrDvQhB/YADhOx/97pURTHGsAY2zhWaRsqYAJ0v2CtX8JYJJrABkAJtg6ERERERHRNDbJASAzC4mIiIiIiJIEA0AiIiIiIqIkkdQB4LV/uc70TyIiIiIiShpJHQASERERERElEwaARERERERESYIBIBERERERUZJgAEhERERERJQkGAACQMYh/K8/voQryvBvD6FKLENERERERDTFMQAEgKEd+M5fv4CVf/0C9ly/J04lIiIiIiKaFhgAEhERERERJQkGgEREREREREmCASAREREREVGSYABIRERERESUJBgAEhERERERJQkGgEREREREREmCASAREREREVGSYABIRERERESUJBgAEhERERERJQkGgEREREREREmCASAREREREVGSYABIRERERESUJBgAEhERERERJQkGgACQcQj/648v4cofX8LeknniVCIiIiIiomnBlJWd4xVHxsOyb5TgRudNPHz4UJxERERERESUHLxeeAGYTCZxyoRgDSAREREREVGSYABIRERERESUJCYsBfTJJ58URxm6c+eOOIqIiIiIiGh6mOQU0AkNAO9nLxRHa8wd+JwBIBERERERTV+THAAyBZSIiIiIiChJMAAkIiIiIiJKEgwAiYiIiIiIksTEBoC//Rtc++n76P7p+7j2pw/EqURERERERBRHExsA/vPTWPbD72HRiWeBZR/iQo1YgIiIiIiIiOJlYgNAxT8/jb+/BRQ985U4hYiIiIiIiOJkcgJAIiIiIiIimnAMAImIiIiIiJIEA0AiIiIiIqIkMWkB4I9+nQ8s+BQ/+21xChEREREREcXDpAWAaCrFoh8+iydefx/dP23Hn4nTiYiIiIiIKKYmLQDc+Kf/iO6ffoGPf/g9LPphKX4kFiAiIiIiIqKYmrQAsCjrHnBrPgM/IiIiIiKiCTJpASARERERERFNLAaARERERERESYIBIBERERERUZKYpADwKzy/AHDenSdOICIiIiIiojiZ2ADwt3+Daz99H90//QhFt5Zj2V/MEUsQERERERFRnJiysnO84sh4ePLJJ3E/e6E4WmPuwOe4c+eOOJqIiIiIiGh68HrhBWAymcQpE2JiawCJiIiIiIho0kxoDWA4WANIRERERETT1iTXAE5YAEhERERERJT0JjkAZAooERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCQYABIRERERESUJBoBERERERERJggEgERERERFRkmAASERERERElCT+/2a1yTsaCytCAAAAAElFTkSuQmCC" alt="VS Code settings.json with claudeCode.environmentVariables" /&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="step-8-try-it"&gt;Step 8 — Try it&lt;/H2&gt;
&lt;P&gt;In VS Code, click the Claude Code (Spark) icon in the sidebar to open the panel. Type:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;Summarize the structure of this project.
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You should get a response within a few seconds, and the panel should indicate it's routing through Microsoft Foundry. Run &lt;CODE&gt;/status&lt;/CODE&gt; inside the panel to confirm &lt;CODE&gt;API provider: Microsoft Foundry&lt;/CODE&gt; if you want certainty.&lt;/P&gt;
&lt;P&gt;✍️ &lt;EM&gt;Figure 4: Claude Code panel in VS Code responding through Microsoft Foundry.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="data:image/png;base64,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4P32S79+/dKiRfliwU2PuOm/997ZZ5990rlz5/LSVs4/7/xUVFTk+edfyLRp08rLJaY//XR+ed11Wbp0SXkpafQs+vbtmxbNm5eXt1JRUdHwXJqX7d/UnVVUVGTgwIEZOHBg2rcvfpQNALB9Fs0FgF1cuxbNcv4+XfP+PlsCg401SbPUpFndtJ4V6zflCw++mBXrN6VTq+bp36l1+nRolUcXrc5Lr65vOO4rX/5Shg8fnqVLl+aiv/+Hhv4dddhhh+biL3whSXLBRz6azZs3J0k6dOiQj3zkghw0bFjmzZvXELjcd999+eV112f16tXp2bNnvvbVS1JVVZVmzZpl6tSpufzfvpskGTJ4cP7u7z6Trl27pqKiInfeeVf+53//t+FzW7VqldNOPTWnnXZqw9uRNm3alOnTp+eAAw5Iknzh4i9m0aIt06kGDhyYj37kI+nfv3bNmSSZOnVqrv3Zz0v2qzegf//8y7+MTZL83/jxuf32X5fvskO6deuWc845O4cfdlhataodHbRp06bMnTs34ydMyJQpT5Ts3759+5x15pk55pijs3r16qxesyZ77L57nn766YZ7+8d//Ke8OHduwzHvf//7cuIJJ6RXr14NfY888mh+/l//5f/fAcBbxKK5ALCL2aN9q3Rp0yIrN2xKTZINm2syedHqTFm8OoN3a5OOrZqnWUXpGipzV23IkN3a5qODuuW8gV1z9B4ds0f7lpm1fF1eWr2hYb8LLjg/bdq0yUsvLci9997b0L+jevXqlSOOOCJJSqYj/ePXvpaDhw/PT6++JtffcEP+8Ic7M6B//xx22GHZc8898+CDD2bVqlV58smnsu+gQamsrMycOS/m4YcfTpIsWrQoD0ycmBNPOCGtWrXK1GlTM23a9KRuVMv3vvfdHHroIfn97/+Qn/70p7n5lluydOnSnHjiiWnWrHZA75133tWweO1pp52Wf/j7i3LvvffmmmuvzR/u/EM6duyUQw45OIccfHAefHBS1q/fEkQlySGHHJJhw4YlSe750z2Z9zreeDRs6NBcdtk306lTp1z5wx/mv//7F/nrI49k7733zt577ZWjjjoq06ZPy+LFtaNiunbtmu9999+y33775cfjrsrP/+u/8sc//imTH38873vfSWnXrnaq2B//+KeGRXPPOuvMnHPOOfn973+fa665Nn/60z3p2qVL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0UVj0rdv3yxdujS/+13tmieDBg3K8OHDkyR/uPPOrF+/Pj179Mjw4QelTZs2WblqVebOnZs99tgjH/rQ6PTuXbueyoxnZmTT5k1ZsWJl9th9jxxwwP7p2rVrFi1clM6dO+fQQw7Jxz720VR27pxWrVplxYqVeWrq1KxZsyYbNmzIgQcemI4dO+bokUenbbu2adOmbY46akTOPffDDSHNc88/l3nz5mXJ0qXZfffd06dPnxxwwP45asSI7NFrjxx5xBH5xCc+nv333z//+eNxeaWJNWFWr16d6dOn56CDDkq3bt0yYsSIrFi5IvPmzWtYU6Vd27YZMWJEPv/5z6VNmzaZMWNGHn300SxevKThc/faa680a94ss2bNyqZNm9K3T5988pOfyNKlS/Pv//6DrFu3LqtXr063bl3Tr1+/dOnSJUcddVTatG6T5s2a5fDDDsv733dSw5uTli2rztq1a/PUU09l/yFD0q1btwwbNjRHHH549th9jxx77DH55Cc+kR49e+ZHP/rRViNfAIDiVXTp2m3rFdeSVFVVZcWKFeXdAMA7zJ4dW+f7R/TObbOX5caZS9OqWUWuf8/e+dnTi3Pn3NpFcC87ZI8M7tIuf3ff7KxavzEdWzXPsnXbf7Xxsccck9NOOzW9evVKTU1NFi9enJUrV2XPPfumed1Ctc88MyN33nln/vLXv+ZDo0fn1NNObVjEdunSpbn2Zz/L008/k+9977sl02hefvnljLvqqnzwAx/MoYcekiRZsmRJLv7il9K6det8998uT7du3Rr2f+6553PNtdfmK1/+UqqqqpIkixYtyj/+06VZu3ZtTj3llIz+0OiGz06Sl156KXfeeVc+/vELkyQbN23K3XfdnV9ed11atWqVc845Oye///1p1mzLgN8VK1bk6quvyeNTpjT0NaVTp04598MfypFHHplWrbYeaZK6+3n66WfyuzvuyJw5c5K6sOqss87MKSefnFatWmX9+vV5+eWX07t37zz55FMZd9VVDSNoUrd+y4Uf+1iOO+7YktEq9ef9ype/lCTZvHlzJj74YH7606vTsWPHfP3rl261sO+yZcsybtxVmf700yX9AMCbQ+ACALu4I3q0z8DObfPLZxcnSfapbJN/O7x3vvf4y/nrwto1XKratszfDa7Kj6cuTPW62kVjd1S/fv2yxx57pGuXLmnVulVqNtfk5VdezowZz5a8PWevvfZK27I3Gy1ctCiLFy9Oy5YtM2zY0PTp3SdLli7NxIkTs2nTprRp0yYnv//9WbJkSR559NGsWbMmqQsmhh54YPbo1SvPP/dcQ0hw8snvz0svvZRZs54rCSZSN7Jk8JAh2bNv3yxesiQTJ05MVVVVDjzggDz33HOZM2dONm4qDZnat2+f/fbbLz179sziRYvy1NSpW513e1q1apVBgwalW7eu6dSpU5YuXZoFLy3IvPnzG0YENaVNmzYZPHhwevXaI8uWLcszz8zI4sW1v7+mdOvWLUOGDEmbNq3z9NPPZO7cuQ2vjX7+uefz/AsvZFOje2vevHkOOfjg9O7TO+vWrc+ihQvz5FNPNTxfAODNJ3ABgHeZQZVtcvnhvfPlSXMze6XpwQAAbweBCwC8C3Vp3SJLd3IkCwAAxfGWIgB4FxK2AAC8vQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAWr6NK1W015Z5JUVVVlxYoV5d0AAIUY1qNTkory7neseSvXZPHq9eXdAABNErgAAG+LP11wVJpX7DqBy48eeS63PLOgvBsAoEmmFAEAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFKyiS9duNeWdSVJVVZUVK1aUdwMA7LTR+/VKu1bNS/ouPLBvSTtJpi1amQ2bt/xfk9YtmmW/rh1K9inakjXrM3fF2pK+fp3bprJNy5K+v8xflqeXrCzp+/OcxZldvbqkDwAgAhcA4K1w89mHpWvbVuXdWznrpr9myZr1De0+ndrml6MOLtmnaL+e+XJ+8PCskr7Ljtk3x+/ZraSvKWMfmJF7Zy8q7wYAMKUIAAAAoGgCFwAAAICCCVwAAAAACiZwAQAAACiYRXMBgDfdji6au6uxaC4AsC1GuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABbNoLgDwphtS1TEtm5X+e54rTzqgpP1Od/MzL+WBF5eU9M1evjrVazeU9AEAROACALxd/nTBUWleUVHe/Y71o0eeyy3PLCjvBgBokilFAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgDA26J5RUV51ztaTc2udb0AwNurokvXbjXlnUlSVVWVFStWlHcDABTiTxcctVXoctZNf82SNesb2n06tc0vRx1css+q9Rtz2v89XNK3oz56QN98Yljfkr5fz3w5P3h4VknfZcfsm+P37FbS96NHnsstzywo6QMA2BYjXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAAClbRpWu3mvLOJKmqqsqKFSvKuwEACvGxA/umoqK07/+mz8+aDZsa2p1at8iZ++5Rss+6TZtz49R5JX07amiPTjmoZ2VJ37OLV2XS/KUlfcf27Za9dmtX0veXeUvz9JJVJX0AANsicAEAAAAomClFAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAG+Toblo3HW5aszQ8sK7x6jLcsP1l+X08n4A4F1P4AIAf+OGjRmXG66/ruxHSPC2GDYmVzX+PYwbk2Hl+wAAuwSBCwCQVD+U759/Qc6r+xk/a2BGv+NDl1EZe/11GTuqvH/XdfoZ3XJXw+/hikzKkfnqu+kGAeBviMAFANjKbZdNyMx0T2/DK95St102Nrc1tJ7IxOnLS+oAwK6jokvXbjXlnUlSVVWVFStWlHcDAO8yw8aMy1cHT8/3x4zLlC2dueqSwZl+xZj8uK5z2Jhx+eqIzg3HzRx/QS67vaGZ08del9EDtrTL67XnPDKVdc3qSRMyffA5GTz9inz+wZFbfV5StwbK6GT8+Y2DiPr+gY17Sj6v/Foza0LOK7mYpozK2OvPyZazLs+khusZmovGXZIR9Rff1P1t9QxmZvz4ZHTZ9ZdfW1PnSZr+HQAAuw4jXACAMkNz0aePTOWsu0rDlsHTt0w7uuKhVI1uNJ1n2JgctPCKhilJ542fmYGjx+Wi+hEydWHLovFbpi3d1f2cLQHGlImZXt05g48qXUD39OEDk1lTSsOWJLl9bM47f0Jm1gUW552/JbQ4fex1+eqIhRnfeGpOt3O2vx7KsDG56vpzUjVpyz18f9LCuuKojL3+koxYPGHL/dXdf+MFf08fe11Gd2s0NeuKxTmpLBR6zedYb9RlueGSbrnrfGELAOyqBC4AQFJ5ZL7asFjrZ5JrL2g0ImRUzhiRTLq20QiYKeNy16xk4PC6pGDKuFw27on6anL7lMxM51TtWds8/YwjUzlrQslIjtsuuyKTqutbT+THd81M5eCRjUKRUTlowPJMurWp4R/bMGxMThqwPJOuKJ2a8+NrH0p15eCM3EbiUn99n290D1PGjc2PpyTDxpyUgdUP5fuNL37KuFwzafmW663/3LJn9PnxM7ccsyPPsW6/saO7l90DALCrEbgAAI0Wzb0ik6o7Z8SnG40GGdY7VemcEZeUvsmo8fSh2v0av2Gn8dScoendLZk5+TWCk9unZGbjUGTUsAysnp6JOzPCY89uqWzqmLoRNPUBUKntX1+/7p1TPX3ilpCkzpQHp6e6slv6ZTuf29gOP8feqcrCzNveuQCAdzyBCwDQyBP58ZgJmVl5ZM4omeYys9EUnUY/daM+Th97XW64ZHCmX1Ffq53us3Nuz+OztkwrOn34wMy8q9FokHeF7T/HpG5kzPm3ZfY2RuMAALsGgQsAUOb23DppeQaOrnst9JR5WZSBOah8nZEGo3LQgGTm+O2vN1I6bSZJ+qWq0SK0SXLbrQ8lg0dmWEbloAEz83jTg062bc7ipqcODRuZwZXLs2hOWX+S5InMW9zU9dWavbDR1KFGhh01OJXVizO7vqOJzx3Wu/uWxms+x8aeyJTtPEsA4J1P4AIAbGXKuGsyqXpgRo8dVTfyJFsCmDrDxlxWtyju7CyqTqp6N15AtvGUotr1WTLgnJLFYUv3qTNlYqZncEaOGZaBTS2WW2Lrz61dE6VzRlzS+Fq3XgS43G23PpTqAeeULIJbf39Txt2VmZVH5quNL37YmHxmROctI3Buv62JqVi1+2zxWs+x3qiMvb50QV4AYNfjtdAA8DeuyddCZ8url+tfW1z+2ueSVy2XvfJ55vgJyehzksavPC57lfPM8Vdk0UmX1L4WutFitbWvTU6jVzJvR6NzNn69cvm1Vk8q/Ywmld1Dqh9q9Ey298roemWvjq5+KN+/q1u+WvZa6PJr2/qV1bWfVbUj1wwAvGMJXACAd5RtBkAAALsQU4oAgHeQoRk5uOm3AgEA7EoELgDAO8eo0zOicmbuMpUGANjFCVwAgHeA2oVibxjdPZOu2LLeCQDArsoaLgAAAAAFM8IFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQDeMYbmonHX5Yaxo8oLfztGXZYbrr8sp5f3Nzbqstxw/bhcNKy88O5y+tii/hZq/66uGjO0vPCGFHd9dYaNyVXXX5ciTwkAbyeBCwC7rmFjclXRX7xHXZYbxo1JkacEAOBvj8AFgL9dOzKa4i31RH485oKcd9ntde03Z2TCO8brff63j81554/Jj6eUF3ZV7/Lf846aMi6fP/+CNPz5A8AuTuACAAAAULCKLl271ZR3JklVVVVWrFhR3g0A7xzDxuSqSwZn+hXbHu1w+tjrMnpAfWt5JtXtW9qfJDMz/vyxua1xV+pGYYweuKU9a0KjESj1huaicZdk8PQr8vlxT9T1jcrY689J1aRGfcPG5KpLuuWu88fmtlGX5YbRyfjxyejRA5Pqh/L9MRMzsv48D47MVZccmcpGn1Ld6Fzbuq+m1V7fiIaTle1ffo/VD+X7Y8al4XTl19pon4wZl6+O6Nz0cdu5zm0+//rPumJxTmp0/zPHNxr5UL9P3e/r9LHXZXQm5PsLT9pyLU38Poc1vtYsz6Tx0zN49Db+fpr62xp1WW4Y3b3k2Q0bMy5f7X7Xlr+JnX2Wry7Oq+27pf2WIxp+zzt6X1sZNqbkb6d60oRMH3xOk3+fDVdacp1b/p6vyWe2+dn119f4n4fSZ1z6z0tT+5f8s/PgyNJnviN/C9nR+wWAt54RLgC8azV8wTv/gtqf8Qsz4pLaNV9uu+yCnDd+Zt2XyAtyXlNfYoeNyVWju2fSFXXHnz8hM8v3SZI8kYnTl6dy8Mgta7+MGpaBSUnfsKMGp7J6cWY3HDcwo4dPqT13WVBRO73iikyqrv0Cft75F5SGLdu4r6acPvaSjFi8Zf/vT1rYUBs2ZlxdiFB/jxdk/OIj89Wtpvo0utbzJ2Rm5ZH56vXX1YYNjfo+02hazPauc/vPf2BGfzq5puF6l2fg6PLrKTPgnHwm19R91hWZVD0woxutvlobBCys+6wLct75d6VqdGmgVWLKxEyv7pzBRzW6n+EDkzTuG5qRgzunemHtb/R1PcvPXJxPb+P3nLz2fW2lLnxYNH7LNdzV/ZxGYVsawpY02mf84iPz1bK1iypHXNLosy/I+FkDM3qre9ni9LHXlT3jKzKp2zkNayLdNnlmMmBY6fHDRmZw5fJMf3Bbwchr/C3s0P0CwNtD4ALAu9OwMTlpwMyMb/yvwm+/LZPKvkRv157dUpmFmdeQhNyey7Ya3VJryoPTU13ZLf3q2qcPH5jqWTNL+vp175zq6RMbBSvLM+nWps+3TTt9X0PTu1saQoEkmTJubN0IjVE5Y0TnzBxfOsLjtssmZGYG5qCS7/WNP/P23DppeZN9DQHTTl9nY8sz6dotAdSUcXc1cT1lqh/KNQ1BxRP58V2Nv9zX32fjUOf2XHbFQ6luaJerC9G61//2RuWgAcszc1bjvn6paggLduZZ7sTvfbv3tbXTzzgylbMmlIwAue2y2kCn3rAxJ2Vg+T63PpTqysEZ2ThxmTWhJPxp+l7qDBuTkwYsz6QrGj/jJ/Ljaxud9/bbMqm69PhhRw1O5ay7th5h1GD7fws7cr8A8HYRuADw7rRnt1RmYEZff11uaPhpPK1mB9R9QRx9/Q4saDplXhY1fBEcmt7dlmf6rbdlesMXzNov7KX/Jr9xmLODdvq+ar+kV464ZOsFaof1TlVm5vGtvvvfnsdnJVW9X+OeS0brlNnp62zsdTyXxfNKRwg1ts373L4p8xZuCTeG9U5V9fTceuv0VNf3jRqWgdXTM3HK9j6jqWe5E/e3vfvaSm24NnPyVhdRol/3zsmAcxr9Xq7LDWXT15LSkK7W7CyqLr+XOnt2S2X9s2isbqRQ1Z5pCLEGDq9PXGpHCG3/erf3rHbsfgHg7SJwAeDdq/qhfL9hesOWnx1f16HurUHnT8iiEZfkhu0GL7VfrAcOH1U7TSLTM3FKoy+Yjb+cv1E7e1+3j62bjtG9LgDZ9rSQQu3sdb7T3D6lYTTFsKMGJ9MnZsqUiQ0h2unDB5aNWNp11E9fKv1pYi2bgk15sFFgNWxkBueh7OhgHwDY1QhcAHh3mrN46ykSr9vtuaxu/YiSdVrK3DZ5ZtKtd06v/3Je/wWzW++c3rt7MV/O38B9TRk3pm4dmrpRNyWjchoblYMGJIvmvYFg5A1c55ujifvcs9tWozpK1Y9OGZWRg1M3Oqk2RKvqPap2FFP9iKU381nupC0jSOr1S1WjG529cPt/x9u0vfVWtvX7rjtm0Zy69pRxuWtWWYhVdsjOeq37BYC3i8AFgHenuqkMIz5duhDo6WMbje6YszjV6Z7e5V8S6426LNtbn3Qrt0/JzMojM3pE/Zfzui/ilUdm9IjOr+NL9xOZtziN1gzZwfsqMTQXjS3dd4vadVcGji5dcPf0sedkYPUbHHmwI9f5Ws+/KFPG5a5ZKVt4d1TGNn6b0DbcNnlmKkeckxHZMjppyryFtX2Vpev7vP5n2cTv+XWpX+PlnJK/29PHNnobUX0IWLbAcTIqY8v+2CtHXNLoPENz0aePbHraUOqfceeMuKTxM647pmyNltsmz8zA4WMahViv147d77Ax4966UV0A0IjABYBdXOeMuKTxOiHX5Yaxo+qmA12RSal9m0597aSFt21Z1LPhS+K2p9kMHL3l2K8Onr7Va49L1Y6ISMmX0rq+Jtf3eG233fpQquvW26idzrQD91WuW+N9a99OU7/I6JRxY/L9SSl5hqMzYeu3Ju20HbjOHXj+Rbntsvq37NRfy7A8vt1Fc+vcPiUzk9LRSXV9mTWl5Jm/kWe59e/5dbp9bM4bP7Pk7/agyWWLyE4Zl89f8VBSN02u9uekLCpLhaonTciik+rrl2REtn7td2NbP+Pa1z1v9Rr126dk5oAjM2Lx9hbL3UE7cr8A8Dap6NK1W015Z5JUVVVlxYoV5d0AAO8Ow8bkqksGZ/oVb/7aJbuWobloXG1Y8uast7PltdTlWUwx3uzrB4AdY4QLAPA3adhRg7c9RYY3z6hhGfg6R3ztkO2tNQMAbyGBCwDwrnf62NK1VTLqsnx1ROfMvGvbU2R4MwzNRScNTPWk7UyB2xmjLiubgjUqYy/Zet0YAHg7mFIEALzrDRszLl8d0bmkb+abNqVlV/fmTMlp+B3MmrD1ui6v17AxueqSI0vfNlXk+QHgDRC4AAAAABTMlCIAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGDN2rRpW94HAAAAwBvQrFOnTunQoWN5PwAAAACvU7MkadeuXYx0AQAAAChGwxoubdu2Ka0AAAAA8Lo0BC4tWrQsrQAAAADwujQELhUVFaUVAAAAAF4Xr4UGAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYAIXAAAAgIIJXAAAAAAKJnABAAAAKJjABQAAAKBgAhcAAACAgglcAAAAAAomcAEAAAAomMAFAAAAoGACFwAAAICCCVwAAAAACiZwAQAAACiYwAUAAACgYA2BS01NTWkFAAAAgNelIXDZuHFDaQUAAACA16UhcFmzZm1pBQAAAIDXpVmSrF69OmvXrimvAQAAAPA6NFuxYkVWrVpZ3g8AAADA69TMyBYAAACAYnktNAAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQMIELAAAAQMEELgAAAAAFE7gAAAAAFEzgAgAAAFAwgQsAAABAwQQuAAAAAAUTuAAAAAAUTOACAAAAUDCBCwAAAEDBBC4AAAAABRO4AAAAABRM4AIAAABQsB0KXCoqKrS1tbW1tbW1tbW1tbW1tbW1d7Bd0aVrt5qSap2qqqqsWLGivBsAAACA17DdwGWlwAUAAABgp203cFm+fHldqyJJo90qKpKaxoepq6urq6urq6urq6urq6urq9fXtxu4mFIEAAAAsPN2aNFcAAAAAHbcawQuFbX/WVG7Td12y6q76urq6urq6urq6urq6urq6urldVOKAAAAAAq23REu9clM6bZiG/3q6urq6k33q6urq6s33a+urq6u3nS/+ruhvv0RLtt6S5G2tra2tra2tra2tra2tra29jbb2w9cTCkCAAAA2GnbnVKUJDV175O2tbW1tbW1tbW1tbW1tbW1td2xrREuAAAAAAV7zREuAAAAAOyc7QYuTa+6q62tra2tra2tra2tra2tra29vbYpRQAAAAAF2/4Ilya29T/l/erq6urqTferq6urqzfdr66urq7edL/6u6O+3cBlc93qujV1281JNpe11dXV1dXV1dXV1dXV1dXV1dVL26YUAQAAABRsuyNckqQ+jal7jbS2tra2tra2tra2tra2tra29mu0d3CES0XdoeXbeuX96urq6urq6lv3q6urq6urq2/dr67+7qzvYOACAAAAwI7abuCycuXKJnMbW1tbW1tbW1tbW1tbW1tbW9ttb7cbuKxYvry8GwAAAIDXsP3AxZQiAAAAgJ3mLUXa2tra2tra2tra2tra2traBbd3cIRL/Syketra2tra2tra2tra2tra2tra22q/5giXWjUlh2tra2tra2tra2tra2tra2trb7u9/cCloqJhW9HQrihrq6urq6urq6urq6urq6urq6s3br/GlKL6txRVJCWZjba2tra2tra2tra2tra2trb2ttrbDVxWrvSWIgAAAICdtd3AZfnyFXXJTH1CU7etqKhbdresX11dXV1dXX3rfnV1dXV1dfWt+9XV3+X17QYuW95SBAAAAMCO2v6iuXW5jK2tra2tra2tra2tra2tra3tjm9fI3BptLpuQ7vRKrzq6urq6urq6urq6urq6urq6lvXTSkCAAAAKNb2R7jUxjKpqNumovanpK2urq6urq6urq6urq6urq6uXtLe/giX+rcUVZStuqutra2t/Y5tt2rVKrtVVm6zvq322rVrs3zFim3WtbW1tbXf/PZ+++2XFStXZv78+U3W69s9evZI96qqPPXUtCbr2tra2tpvf3u7gctKU4oAdjnvPem9ad6sWTZs2FBe2q7dunTJH/5wZ1atXFleAuAtsme/PXPkEUdk0kMP58U5c8rLSZIePXvkuGOPzZQpUzJjxrPlZQDeIbYbuNT+m84tQY2tra2t7Tt726p1y3zg1NNy8623Nlnf3vaQ4cOzYuWKPPvsrCbrTW8H5Owvn58DOjbqXzk11//7zXm2yf13YHv0JzP2xN5JzbzcM/bnua+8/oa2tde72yNjc+19TdV3dNvEfddv3+j9v8Z2nzO/kvP3fiHXX3Fznm2ivuPbo/PpsYdn2XX/LzfNaqr+9m+P/fRlOaHmnlz28wearL/Z233O/krO3799XfvVPHXD/8tNz269XyqSbgeflpP26dDQXvXs3fn1Y0u22m9b232O/3AOqXgsN/xpZpP1bW4HHJ/z9lueu349OYubqjd1nZ1n7Pzn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iTD8kyFMhMWofg0jY6xoXXDhLUV0lTjtNjjlW4qkK1yIiIiIiIiuDVEEwqKIYFhEMBQ2pokSwoILEREREREREVGSKY/QMKVcaKBcccA222yzzTbbbLPNNttss80222yzzXb8Nq9wISIiIiIiIiJKMusrXOTSDCMjIyMjIyMjIyMjIyMjIyNj4tHyChdvjCtcBPmpu7EwzzzzsTHPPPOxMc8887ExzzzzsTHPPPOxMX/t8pYFF95SREREREREREQ0dZa3FAGAKEr1GEZGRkZGRkZGRkZGRkZGRkbGxCKvcCEiIiIiIiIiSrK4V7gQEREREREREdHUWBZczJ6yy8jIyMjIyMjIyMjIyMjIyMhoHXlLERERERERERFRklkXXIaHNUNESC88Ypttttlmm2222WabbbbZZpttttlm26ptT3G7v6sZqkpNTUUgEIAoihAgPWWXkZGRkZGRkZGRkZGRkZGRkTF+tL7ChbcUERERERERERFNmVBesdK04EJERERERERERNMjFCxYyIILEREREREREVESWb4WmoiIiIiIiIiIpo4FFyIiIiIiIiKiJGPBhYiIiIiIiIgoyVhwISIiIiIiIiJKMhZciIiIiIiIiIiSjAUXIiIiIiIiIqIkY8GFiIiIiIiIiCjJWHAhIiIiIiIiIkoyFlyIiIiIiIiIiJKMBRciIiIiIiIioiRjwYWIiIiIiIiIpqR2fY1xEBmw4EJERERERERElGRCwYKFonEgEREREREREVEstetrsG//AePgqbF5sLR2I1bm2KX2RBcOvfkhurXjpN6EzXesgAcAEMLA8T/j3VNe7RjXLV7hQkRERERERERX3aK/egT3rsiIDPCPwKcdIUoGVtz1Wdy73Dj8+mRPT8/4rnEgEREREREREVEsixYV4WxXl3HwFBRgze3VwOEfo25vC1paWtDS0Y8J42gT/ehokfMtRxFaXIOljjOo7xgxjjktntseweducaD1VA8Cse7/8VTh/s/ejsz2Yzg3bkzGpt5SVL3tKyg79UPUNQFAFbZ9dRMWacfs2ovn6xqByofwtS1F2gzO7panq3wIX1vbj50/26u5BKgAm7/wCHIOK/OOKNjyeTxWKV0YJPGi4aUXsacb6nTVunRjZN6G9fA2vYyf7u6W1301+tX5yAo24Ym7gD/8bC+6UYDNX7gTeEszjsl2Sbqw54VX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45FO1Muv7Fb/v7GuBF7jq5wTHE9/ro6go0GeplD7imkiIiKime3yXwudjaVrV07vtdDjzVH9hmmzevWz1SujEyAULFg4xTdJExEREREREdFsVru+Bvv2HzAOnoI8bP7C48iv/yF2TuG5DtWf/ArWXEreBRCe2x7BowUteOkNi7cReapw/yeXo/uVl3FoyJiMjQUXIiIiIiIiIpqSyy+4AAWbPo/HlgVwuk9+0ozvBP5zt+a5M5BfZ33HCkgP9UjF/MVp6Hj93/G/z2hHuj5N4y4kIiIiIiIiIqLL0733ZdQ1DRoHWxhE42u/uiGKLeAVLkREREREREQ0Vcm4wmWm4xUuRERERERERERJxoILEREREREREVGS8ZYiIiIiIiIiIqIk4xUuRERERERERERJxoILEREREREREVGSseBCRERERERERJRkLLgQERERERERESUZCy5EREREREREREnGggsRERERERERUZKx4EJERERERERElGQsuBARERERERERJRkLLkRERERERERESSasqqwSjQOJiIiIiIiIiGj6eIULEREREREREVGSseBCRERERERERJRkLLgQERERERERESUZCy5EREREREREREnGggsRERERERERUZKx4EJERERERERElGT/P38U66YSpbOPAAAAAElFTkSuQmCC" alt="Claude Code VS Code panel responding with Microsoft Foundry routing" /&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="troubleshooting-matrix"&gt;Troubleshooting matrix&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Symptom&lt;/th&gt;&lt;th&gt;Where it shows up&lt;/th&gt;&lt;th&gt;Likely cause&lt;/th&gt;&lt;th&gt;Fix&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;API Error: baseURL and resource are mutually exclusive&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude&lt;/CODE&gt; CLI on first request&lt;/td&gt;&lt;td&gt;Both &lt;CODE&gt;ANTHROPIC_FOUNDRY_BASE_URL&lt;/CODE&gt; and &lt;CODE&gt;ANTHROPIC_FOUNDRY_RESOURCE&lt;/CODE&gt; set&lt;/td&gt;&lt;td&gt;Unset one. Prefer &lt;CODE&gt;ANTHROPIC_FOUNDRY_RESOURCE&lt;/CODE&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;Unable to get authority configuration for https://login.microsoftonline.com/&amp;lt;guid&amp;gt;&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude&lt;/CODE&gt; CLI startup or VS Code panel&lt;/td&gt;&lt;td&gt;Wrong tenant ID in &lt;CODE&gt;az login&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;az login --tenant &amp;lt;correct-guid&amp;gt;&lt;/CODE&gt;; verify with &lt;CODE&gt;az account show&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;Failed to get token from azureADTokenProvider: ChainedTokenCredential authentication failed&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;VS Code Claude Code panel&lt;/td&gt;&lt;td&gt;Extension didn't inherit &lt;CODE&gt;az login&lt;/CODE&gt; session&lt;/td&gt;&lt;td&gt;Quit VS Code entirely; relaunch with &lt;CODE&gt;code .&lt;/CODE&gt; from the authed shell&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;Token tenant does not match resource tenant&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude&lt;/CODE&gt; CLI or VS Code panel&lt;/td&gt;&lt;td&gt;CLI logged into a different tenant than the Foundry resource&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;az login --tenant &amp;lt;foundry-tenant&amp;gt;&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;The model &amp;lt;name&amp;gt; is not available on your foundry deployment&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude&lt;/CODE&gt; CLI first use or VS Code model selector&lt;/td&gt;&lt;td&gt;Deployment name mismatch&lt;/td&gt;&lt;td&gt;Either rename the Foundry deployment, or set &lt;CODE&gt;ANTHROPIC_DEFAULT_*_MODEL&lt;/CODE&gt; to the actual name&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;401 / 403&lt;/CODE&gt; on first request&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude&lt;/CODE&gt; CLI or VS Code panel&lt;/td&gt;&lt;td&gt;Missing RBAC on the resource&lt;/td&gt;&lt;td&gt;Assign &lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt; &lt;EM&gt;and&lt;/EM&gt; &lt;STRONG&gt;Foundry User&lt;/STRONG&gt; on the resource scope&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Code prompts for Anthropic login&lt;/td&gt;&lt;td&gt;VS Code Claude Code panel&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;CLAUDE_CODE_USE_FOUNDRY&lt;/CODE&gt; not set in the process&lt;/td&gt;&lt;td&gt;Set the env var &lt;STRONG&gt;before&lt;/STRONG&gt; launching &lt;CODE&gt;claude&lt;/CODE&gt; / &lt;CODE&gt;code .&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;VS Code shows "Unknown Configuration Setting" for &lt;CODE&gt;claudeCode.environmentVariables&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;VS Code Settings tab&lt;/td&gt;&lt;td&gt;Wrong JSON shape&lt;/td&gt;&lt;td&gt;Use the &lt;STRONG&gt;array of &lt;CODE&gt;{name,value}&lt;/CODE&gt; objects&lt;/STRONG&gt; form&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;CODE&gt;429 Too Many Requests&lt;/CODE&gt;&lt;/td&gt;&lt;td&gt;&lt;CODE&gt;claude&lt;/CODE&gt; CLI or VS Code panel&lt;/td&gt;&lt;td&gt;TPM/RPM exhausted&lt;/td&gt;&lt;td&gt;Foundry portal → &lt;STRONG&gt;Operate → Quotas&lt;/STRONG&gt;; request increase or reduce parallelism&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Works in CLI, fails in VS Code extension&lt;/td&gt;&lt;td&gt;VS Code Claude Code panel only&lt;/td&gt;&lt;td&gt;Env vars set per-shell, not visible to GUI VS Code&lt;/td&gt;&lt;td&gt;Use &lt;CODE&gt;setx&lt;/CODE&gt; (persistent user env) or move them into &lt;CODE&gt;claudeCode.environmentVariables&lt;/CODE&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;"Model is not available in region"&lt;/td&gt;&lt;td&gt;Foundry portal model deployment step&lt;/td&gt;&lt;td&gt;Foundry resource not in a supported region&lt;/td&gt;&lt;td&gt;Deploy a new Foundry resource in a supported region, or check model availability&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;HR /&gt;
&lt;H2 id="best-practices"&gt;Best practices&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Auth &amp;amp; secrets&lt;/STRONG&gt; - Prefer Entra ID over API keys. If you must use a key for CI, store it as a secret (GitHub Actions secret, Key Vault) — never in &lt;CODE&gt;settings.json&lt;/CODE&gt; (it may sync via Settings Sync). - Scope RBAC at the &lt;STRONG&gt;resource&lt;/STRONG&gt; level, not the subscription, for least privilege.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Project context&lt;/STRONG&gt; - Create a &lt;CODE&gt;CLAUDE.md&lt;/CODE&gt; at your repo root with stack, conventions, and entry-point commands. Claude Code reads it automatically and the quality jump is significant. - Use &lt;CODE&gt;.claude/rules/*.md&lt;/CODE&gt; for per-area rules (e.g., test conventions, security rules).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cost &amp;amp; latency&lt;/STRONG&gt; - Let Claude Code's auto-routing pick the right role (Sonnet/Haiku/Opus). Don't pin everything to Opus. - Cap context with &lt;CODE&gt;ANTHROPIC_MAX_TOKENS&lt;/CODE&gt; if you have a strict budget. &lt;EM&gt;(Note: not honored by every Claude Code version — check &lt;A href="https://docs.anthropic.com/en/docs/claude-code" target="_blank" rel="noopener"&gt;the Claude Code docs&lt;/A&gt; for your version.)&lt;/EM&gt; - Watch token spend in &lt;STRONG&gt;Foundry → Operate → Metrics&lt;/STRONG&gt; weekly.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reliability&lt;/STRONG&gt; - For team use, deploy all three model roles even if you don't think you need them — silent role-routing failures are confusing. - Tag your Foundry resource (&lt;CODE&gt;env=dev|prod&lt;/CODE&gt;, &lt;CODE&gt;team=...&lt;/CODE&gt;) for chargeback.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reproducibility&lt;/STRONG&gt; - Document the exact env vars and &lt;CODE&gt;az login --tenant&lt;/CODE&gt; GUID in your team README. - Pin Claude Code CLI version in onboarding docs (&lt;CODE&gt;claude --version&lt;/CODE&gt;) so new joiners hit the same behavior.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="a-note-on-the-ms-learn-doc"&gt;A note on the MS Learn doc&lt;/H2&gt;
&lt;P&gt;The doc is accurate but skips three things that caused the most friction in real-world deployments:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;VS Code extension settings shape&lt;/STRONG&gt; — the example uses the UI label as a JSON key and an object instead of the array form the schema actually expects.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Process inheritance&lt;/STRONG&gt; — it says "set the env vars" but doesn't emphasize that the &lt;STRONG&gt;VS Code window must be launched from a shell where both &lt;CODE&gt;az login&lt;/CODE&gt; and the env vars are live&lt;/STRONG&gt;. Reloading the window doesn't help.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Mutually exclusive &lt;CODE&gt;RESOURCE&lt;/CODE&gt; vs &lt;CODE&gt;BASE_URL&lt;/CODE&gt;&lt;/STRONG&gt; — listed in passing, but the error message only appears at first request, after you think everything is configured.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;If the Microsoft Learn page is updated, treat this post as a companion — same destination, fewer dead ends.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="what-youve-got-now"&gt;What you've got now&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Claude Code running locally on your machine, talking to &lt;STRONG&gt;your&lt;/STRONG&gt; Foundry resource.&lt;/LI&gt;
&lt;LI&gt;Entra ID auth — no API keys to manage.&lt;/LI&gt;
&lt;LI&gt;Full Foundry telemetry, quotas, and billing.&lt;/LI&gt;
&lt;LI&gt;VS Code panel + CLI, both backed by the same setup.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Drop a &lt;CODE&gt;CLAUDE.md&lt;/CODE&gt; in your repo and start shipping.&lt;/P&gt;
&lt;HR /&gt;
&lt;H2 id="when-to-use-resource-vs-base_url"&gt;When to Use RESOURCE vs BASE_URL&lt;/H2&gt;
&lt;P&gt;Use RESOURCE (default) - Standard public deployments - No custom networking&lt;/P&gt;
&lt;P&gt;Use BASE_URL - Private endpoints - Custom DNS / VNet routing&lt;/P&gt;
&lt;P&gt;Never set both.&lt;/P&gt;</description>
      <pubDate>Mon, 01 Jun 2026 13:40:49 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/claude-code-on-microsoft-foundry-in-vs-code-a-practical-setup/ba-p/4524245</guid>
      <dc:creator>LZhang</dc:creator>
      <dc:date>2026-06-01T13:40:49Z</dc:date>
    </item>
    <item>
      <title>Agents That Build Agents: A SKILL-first Blueprint with MS Agent Framework &amp; Foundry</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/agents-that-build-agents-a-skill-first-blueprint-with-ms-agent/ba-p/4523631</link>
      <description>&lt;H2 data-line="11"&gt;The single insight that changes everything&lt;/H2&gt;
&lt;P data-line="13"&gt;Most "build an AI agent" tutorials collapse two completely different jobs into one tangled mess:&lt;/P&gt;
&lt;UL data-line="15"&gt;
&lt;LI data-line="15"&gt;the job of&amp;nbsp;&lt;STRONG&gt;building&lt;/STRONG&gt;&amp;nbsp;an agent (writing the code, defining its tools, evaluating it, packaging it), and&lt;/LI&gt;
&lt;LI data-line="16"&gt;the job of&amp;nbsp;&lt;STRONG&gt;running&lt;/STRONG&gt;&amp;nbsp;an agent (planning, reasoning, calling tools, remembering users, delivering outcomes).&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="18"&gt;Once you separate them, modern agent development becomes a clean&amp;nbsp;&lt;STRONG&gt;two-layer architecture&lt;/STRONG&gt;:&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="35"&gt;A&amp;nbsp;&lt;STRONG&gt;Coding Agent&lt;/STRONG&gt;&amp;nbsp;sits on top — that's how you&amp;nbsp;&lt;EM&gt;produce&lt;/EM&gt;&amp;nbsp;an agent. A&amp;nbsp;&lt;STRONG&gt;Runtime Agent&lt;/STRONG&gt;&amp;nbsp;sits below — that's the agent your business&amp;nbsp;&lt;EM&gt;operates&lt;/EM&gt;. Microsoft Agent Framework is the SDK that ties them together; Microsoft Foundry is the platform both layers publish to and run on.&lt;/P&gt;
&lt;P data-line="37"&gt;But the&amp;nbsp;&lt;STRONG&gt;secret ingredient&lt;/STRONG&gt;&amp;nbsp;— the thing that turns a generic Copilot into a domain-aware engineer — is the&amp;nbsp;&lt;STRONG&gt;SKILL&lt;/STRONG&gt;. SKILL is what the Coding Agent reads&amp;nbsp;&lt;EM&gt;before&lt;/EM&gt;&amp;nbsp;writing a single line. It's how requirements become artifacts that actually match your framework, your conventions, and your fixtures.&lt;/P&gt;
&lt;P data-line="39"&gt;This post walks the entire two-layer architecture, in the order you should learn it — with SKILL as the star of Layer 1. We ground every concept in&amp;nbsp;&lt;STRONG&gt;ZavaShop&lt;/STRONG&gt;, a fictional global e-commerce company with 5 fulfillment centers, dozens of suppliers, and a CEO who wants one live dashboard for all of it. Both&amp;nbsp;&lt;STRONG&gt;Python&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;.NET (C#)&lt;/STRONG&gt;&amp;nbsp;are first-class — pick the language your team will run in production.&lt;/P&gt;
&lt;H1 data-line="43"&gt;LAYER 1 — The Coding Agent (Build Time)&lt;/H1&gt;
&lt;P data-line="45"&gt;The Coding Agent is&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;the agent your customer talks to. It's the agent that&amp;nbsp;&lt;STRONG&gt;constructs&lt;/STRONG&gt;&amp;nbsp;the agent your customer talks to. Its output is a bundle of artifacts — code, agent definitions, workflows, skills, connectors, evals, tests, configs, docs — that flow through validation and into Foundry.&lt;/P&gt;
&lt;P data-line="47"&gt;Build time has five movements.&lt;/P&gt;
&lt;H2 data-line="49"&gt;Movement 1 — Requirements &amp;amp; Planning&lt;/H2&gt;
&lt;P data-line="51"&gt;Before the Coding Agent writes a single line, you owe it three things:&lt;/P&gt;
&lt;OL data-line="53"&gt;
&lt;LI data-line="53"&gt;&lt;STRONG&gt;A real business pain.&lt;/STRONG&gt;&amp;nbsp;Not "let's build an agent." Rather:&amp;nbsp;&lt;EM&gt;"Mei, the supervisor at Seattle DC, gets interrupted 60 times a day by stock-level questions."&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-line="54"&gt;&lt;STRONG&gt;A list of acceptance criteria.&lt;/STRONG&gt;&amp;nbsp;What does "done" look like? "Agent answers stock questions for SKUs in our 10-SKU catalog. P95 latency under 4s. Wrong-tool rate under 5% on the eval set."&lt;/LI&gt;
&lt;LI data-line="55"&gt;&lt;STRONG&gt;The fixtures it'll run on.&lt;/STRONG&gt;&amp;nbsp;Real or realistic data — warehouses, SKUs, POs, customers — so the Coding Agent isn't reasoning about a vacuum.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="57"&gt;&lt;STRONG&gt;ZavaShop context.&lt;/STRONG&gt;&amp;nbsp;The workshop ships&amp;nbsp;workshop/data/&amp;nbsp;— 5 warehouses, 10 SKUs, 6 POs, 8 suppliers, 5 contracts, 4 customers (3 VIP), 6 orders, 5 carriers, 4 open exceptions. Every artifact the Coding Agent generates is anchored to this shared fixture set, so numbers stay consistent across the entire system.&lt;/P&gt;
&lt;H2 data-line="61"&gt;Movement 2 — The Coding Agent + its&amp;nbsp;&lt;STRONG&gt;SKILL&lt;/STRONG&gt;&amp;nbsp;(the star of build time)&lt;/H2&gt;
&lt;P data-line="63"&gt;This is the movement most teams skip — and it's the one that decides whether your build-time output is professional code or "ChatGPT-shaped" code.&lt;/P&gt;
&lt;H3 data-line="65"&gt;What a Coding Agent actually is&lt;/H3&gt;
&lt;P data-line="67"&gt;The Coding Agent is&amp;nbsp;&lt;STRONG&gt;GitHub Copilot Chat in Agent Mode&lt;/STRONG&gt;, configured with a domain-aware agent definition. In the ZavaShop workshop, it lives at&amp;nbsp;.github/agents/zavashop-coding-agent.agent.md&amp;nbsp;and is activated from the VS Code Agent picker. You start each session with one plain sentence:&lt;/P&gt;
&lt;P data-line="69"&gt;&lt;EM&gt;"I'm working on the inventory agent in Python — wire up stock and PO lookups against the fixtures, plus a&amp;nbsp;HostedMCPTool&amp;nbsp;for the warehouse handbook."&lt;/EM&gt;&lt;/P&gt;
&lt;P data-line="71"&gt;Notice what's&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;in that sentence: no library names, no class names, no file paths. The Coding Agent has to fill all of that in. The mechanism it uses is the&amp;nbsp;&lt;STRONG&gt;SKILL&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H3 data-line="73"&gt;What a SKILL is&lt;/H3&gt;
&lt;P data-line="75"&gt;A SKILL is a&amp;nbsp;&lt;STRONG&gt;structured contract that teaches the Coding Agent how to write code in your framework, your conventions, and your domain.&lt;/STRONG&gt;&amp;nbsp;It is the most important file in the entire build-time layer — without it, GitHub Copilot is a fluent generalist; with it, it becomes a domain-aware specialist that writes code your tech leads would have written.&lt;/P&gt;
&lt;P data-line="77"&gt;Conceptually, a SKILL contains:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Section&lt;/th&gt;&lt;th&gt;Purpose&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Scope &amp;amp; when to use&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;"Use this SKILL for building agents on Foundry / Azure AI — tools, MCP, Toolbox, Skills, Memory, Threads"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Framework idioms&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The exact way to construct&amp;nbsp;AzureAIAgentClient, register function tools, wire&amp;nbsp;HostedMCPTool, create a&amp;nbsp;Thread&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Code patterns&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Reference snippets the Coding Agent imitates — naming, import order, error handling, type hints&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Fixture/data contract&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;How to load&amp;nbsp;workshop/data/, which loaders exist (find_stock,&amp;nbsp;find_po, etc.), where to add&amp;nbsp;sys.path&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Anti-patterns&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;What&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;to do — don't hardcode the model name, don't write inline mock dicts, don't bypass the data loader&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Acceptance heuristics&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;How to map a LAB's acceptance criteria to runnable checks (eval rows, smoke tests)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="88"&gt;A SKILL is&amp;nbsp;&lt;STRONG&gt;versioned with the codebase&lt;/STRONG&gt;. When the framework releases a new idiom, you update the SKILL once; every agent built afterwards picks it up automatically. This is the single biggest reason convention drift disappears.&lt;/P&gt;
&lt;H3 data-line="90"&gt;The six SKILLs in the ZavaShop workshop&lt;/H3&gt;
&lt;P data-line="92"&gt;The workshop ships six SKILLs — three for each language track — and they cover three orthogonal capability surfaces:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Track&lt;/th&gt;&lt;th&gt;SKILL&lt;/th&gt;&lt;th&gt;Use it for&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;🐍 Python&lt;/td&gt;&lt;td&gt;agent-framework-azure-ai-py&lt;/td&gt;&lt;td&gt;Single agent on Foundry: tools, MCP, Toolbox, Skills, Memory, Threads&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🐍 Python&lt;/td&gt;&lt;td&gt;agent-framework-workflows-py&lt;/td&gt;&lt;td&gt;Multi-agent workflows:&amp;nbsp;WorkflowBuilder, executors, HITL, Checkpoint&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🐍 Python&lt;/td&gt;&lt;td&gt;agent-framework-agui-py&lt;/td&gt;&lt;td&gt;AG-UI server + client: SSE, frontend/backend tools, shared state, HITL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟦 .NET&lt;/td&gt;&lt;td&gt;agent-framework-azure-ai-csharp&lt;/td&gt;&lt;td&gt;Same as the Python azure-ai SKILL, for C#&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟦 .NET&lt;/td&gt;&lt;td&gt;agent-framework-workflows-csharp&lt;/td&gt;&lt;td&gt;Same as the Python workflows SKILL, for C#&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;🟦 .NET&lt;/td&gt;&lt;td&gt;agent-framework-agui-csharp&lt;/td&gt;&lt;td&gt;AG-UI in ASP.NET Core:&amp;nbsp;MapAGUI,&amp;nbsp;AGUIChatClient, HITL&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="103"&gt;How the Coding Agent uses SKILL&lt;/H3&gt;
&lt;P data-line="105"&gt;The Coding Agent's loop is&amp;nbsp;&lt;STRONG&gt;SKILL-first, code-second&lt;/STRONG&gt;:&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="130"&gt;The discipline is captured in the workshop's one mantra:&lt;/P&gt;
&lt;P data-line="132"&gt;&lt;STRONG&gt;"Read the SKILL first."&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="134"&gt;It is not optional. Skip it and you're back to generic Copilot output.&lt;/P&gt;
&lt;H2 data-line="138"&gt;Movement 3 — A worked example: from a single sentence to a runnable agent&lt;/H2&gt;
&lt;P data-line="140"&gt;Let's trace what happens when you sit down in front of the Coding Agent and say:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="140"&gt;&lt;EM&gt;"I'm working on the inventory agent in Python — wire up stock and PO lookups against the fixtures, plus a HostedMCPTool for the warehouse handbook."&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 data-line="144"&gt;Step 1 — The Coding Agent routes&lt;/H3&gt;
&lt;P data-line="146"&gt;The Coding Agent's definition (.github/agents/zavashop-coding-agent.agent.md) contains a routing table:&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="155"&gt;It loads both files into context before doing anything else.&lt;/P&gt;
&lt;H3 data-line="157"&gt;Step 2 — The Coding Agent plans&lt;/H3&gt;
&lt;P data-line="159"&gt;Using the SKILL's patterns and the LAB's acceptance criteria, it generates a plan:&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="173"&gt;Every item in the plan traces back to either the SKILL (how) or the LAB README (what). No invention, no guessing.&lt;/P&gt;
&lt;H3 data-line="175"&gt;Step 3 — The Coding Agent generates&lt;/H3&gt;
&lt;P data-line="177"&gt;Now — and only now — it writes code. Because the SKILL specified the patterns, what comes out is shaped like the rest of your codebase:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# scripts/inventory_agent.py
import os
import sys
from pathlib import Path

# Pattern from SKILL: add data folder to sys.path, import named loaders
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "data"))
from zava_data import find_stock, find_po   # noqa: E402

from agent_framework import HostedMCPTool
from agent_framework_azure_ai import AzureAIAgentClient
from azure.identity import DefaultAzureCredential


def stock_lookup(sku: str, warehouse: str) -&amp;gt; dict:
    """Return on-hand quantity for a SKU at a warehouse."""
    return find_stock(sku, warehouse)


def po_lookup(po_id: str) -&amp;gt; dict:
    """Return the status of a purchase order."""
    return find_po(po_id)


async def main() -&amp;gt; None:
    client = AzureAIAgentClient(
        project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
        model_deployment_name=os.environ["FOUNDRY_MODEL"],   # gpt-5.5 from env
        async_credential=DefaultAzureCredential(),
    )

    agent = client.create_agent(
        name="Zara",
        instructions=(
            "You are Zara, the warehouse assistant for Seattle DC (SEA-01). "
            "Use the tools when asked about stock or POs. "
            "Answer briefly."
        ),
        tools=[
            stock_lookup,
            po_lookup,
            HostedMCPTool(
                name="warehouse-docs",
                url=os.environ["WAREHOUSE_DOCS_MCP_URL"],
            ),
        ],
    )

    thread = agent.get_new_thread()
    print(await agent.run("How many SKU-7421 are at SEA-01?", thread=thread))&lt;/LI-CODE&gt;
&lt;P data-line="232"&gt;Notice the things the SKILL enforced&amp;nbsp;&lt;EM&gt;without you having to ask&lt;/EM&gt;: env-var-driven config, named function tools with docstrings,&amp;nbsp;sys.path&amp;nbsp;data-loader pattern,&amp;nbsp;HostedMCPTool&amp;nbsp;placed alongside function tools, Thread for multi-turn.&lt;/P&gt;
&lt;H3 data-line="234"&gt;Step 4 — The Coding Agent validates&lt;/H3&gt;
&lt;P data-line="236"&gt;The SKILL also told it how to validate. The Coding Agent runs:&lt;/P&gt;
&lt;UL data-line="238"&gt;
&lt;LI data-line="238"&gt;a smoke test against fixtures (SKU-7421 @ SEA-01 → 312),&lt;/LI&gt;
&lt;LI data-line="239"&gt;the eval set (eval_queries.jsonl) — was the right tool called? did the answer contain the expected fact?&lt;/LI&gt;
&lt;LI data-line="240"&gt;a red-team probe round.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="242"&gt;It reports back:&amp;nbsp;&lt;EM&gt;"3/3 acceptance criteria pass. Eval score 5/5. Red-team: no successful prompt injections."&lt;/EM&gt;&lt;/P&gt;
&lt;H3 data-line="244"&gt;Step 5 — Done&lt;/H3&gt;
&lt;P data-line="246"&gt;What landed in your repo is not just a script. It's an artifact bundle — code + agent definition + tools + eval rows + a one-page README — that matches the way your team writes agents. That bundle is what flows into the next three movements.&lt;/P&gt;
&lt;H2 data-line="250"&gt;Movement 4 — Agent Artifacts (the outputs)&lt;/H2&gt;
&lt;P data-line="252"&gt;A well-instructed Coding Agent produces eight kinds of artifact. Together they make up "an agent" in the deployable sense:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Artifact&lt;/th&gt;&lt;th&gt;What it is&lt;/th&gt;&lt;th&gt;Why it matters&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Source code&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The Agent / Workflow program&lt;/td&gt;&lt;td&gt;Versioned, reviewable, diffable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Agent definitions&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Name, instructions, tool list&lt;/td&gt;&lt;td&gt;The "personality" — independently editable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Workflows&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;WorkflowBuilder&amp;nbsp;graphs&lt;/td&gt;&lt;td&gt;Multi-agent orchestration as code&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Skills&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Named, packaged behaviors&lt;/td&gt;&lt;td&gt;Reusable capabilities — one Skill, many agents&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Connectors&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;MCP servers, Toolbox registrations&lt;/td&gt;&lt;td&gt;Where the agent reaches into the world&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Evals&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;eval_queries.jsonl&amp;nbsp;and harness&lt;/td&gt;&lt;td&gt;Regression target for every prompt change&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Tests &amp;amp; configs&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Unit tests,&amp;nbsp;.env&amp;nbsp;schema, deployment manifests&lt;/td&gt;&lt;td&gt;Reproducibility&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Documentation&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;READMEs, runbooks&lt;/td&gt;&lt;td&gt;The agent your future self can operate&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="265"&gt;&lt;STRONG&gt;Don't confuse two senses of "skill" here.&lt;/STRONG&gt;&amp;nbsp;A&amp;nbsp;&lt;STRONG&gt;SKILL file&lt;/STRONG&gt;&amp;nbsp;(uppercase, in&amp;nbsp;.github/skills/) instructs the Coding Agent at build time. An&amp;nbsp;&lt;STRONG&gt;Agent Skill&lt;/STRONG&gt;&amp;nbsp;(a Foundry concept) is a named runtime capability the Runtime Agent calls. Both names are deliberate — Layer 1's SKILL produces, among other artifacts, Layer 2's Skills.&lt;/P&gt;
&lt;H2 data-line="269"&gt;Movement 5 — Validation&lt;/H2&gt;
&lt;P data-line="271"&gt;Before any artifact reaches Foundry, four gates run:&lt;/P&gt;
&lt;OL data-line="273"&gt;
&lt;LI data-line="273"&gt;&lt;STRONG&gt;Tests&lt;/STRONG&gt;&amp;nbsp;— unit + integration. Did&amp;nbsp;find_stock("SKU-7421", "SEA-01")&amp;nbsp;return 312, the value in the fixture?&lt;/LI&gt;
&lt;LI data-line="274"&gt;&lt;STRONG&gt;Lint &amp;amp; types&lt;/STRONG&gt;&amp;nbsp;—&amp;nbsp;ruff/mypy&amp;nbsp;on Python,&amp;nbsp;dotnet build&amp;nbsp;warnings on .NET. The model has to read these signatures; sloppy ones cause real bugs.&lt;/LI&gt;
&lt;LI data-line="275"&gt;&lt;STRONG&gt;Evaluation&lt;/STRONG&gt;&amp;nbsp;— run the eval set. Did the right tool get called? Did the answer contain the expected fact? You need a score, not a vibe.&lt;/LI&gt;
&lt;LI data-line="276"&gt;&lt;STRONG&gt;Red-Team probes&lt;/STRONG&gt;&amp;nbsp;— adversarial inputs that try to drift the agent off topic or extract another customer's data. The Foundry red-team SDK ships a battery of these.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="278"&gt;&lt;STRONG&gt;Evangelist takeaway.&lt;/STRONG&gt;&amp;nbsp;"We built an agent" is not a deliverable.&amp;nbsp;&lt;STRONG&gt;"We built an agent and here is its pass rate on a versioned eval set, plus a red-team report"&lt;/STRONG&gt;&amp;nbsp;is a deliverable. Validation belongs at build time, not "we'll add it later."&lt;/P&gt;
&lt;H2 data-line="282"&gt;Movement 6 — Publish &amp;amp; Deploy&lt;/H2&gt;
&lt;P data-line="284"&gt;When validation is green, the Coding Agent's outputs flow into Foundry and Azure:&lt;/P&gt;
&lt;UL data-line="286"&gt;
&lt;LI data-line="286"&gt;&lt;STRONG&gt;Push to Microsoft Foundry&lt;/STRONG&gt;&amp;nbsp;— agent definitions, Skills, Toolbox tools, and custom evals register against your Foundry project. They are now governed, versioned, and observable.&lt;/LI&gt;
&lt;LI data-line="287"&gt;&lt;STRONG&gt;Deploy to Azure&lt;/STRONG&gt;&amp;nbsp;— the runtime host (AG-UI server, workflow worker, Teams app, API surface) ships to your Azure target (App Service, Container Apps, AKS, Functions). Same env vars drive local dev and cloud.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="289"&gt;The same artifact set deploys to dev, staging, and production. There is no "production-only" code in your agent.&lt;/P&gt;
&lt;H1 data-line="293"&gt;LAYER 2 — The Runtime Agent (Runtime)&lt;/H1&gt;
&lt;P data-line="295"&gt;Now the agent is live. Every conversation, every action against your data, every memory it writes — that's Layer 2. Five concerns define it.&lt;/P&gt;
&lt;H2 data-line="297"&gt;Concern 1 — Users &amp;amp; Channels&lt;/H2&gt;
&lt;P data-line="299"&gt;A Runtime Agent reaches users through the channels they already use:&lt;/P&gt;
&lt;UL data-line="301"&gt;
&lt;LI data-line="301"&gt;&lt;STRONG&gt;Microsoft Teams&lt;/STRONG&gt;&amp;nbsp;— the agent shows up where work already happens.&lt;/LI&gt;
&lt;LI data-line="302"&gt;&lt;STRONG&gt;Outlook&lt;/STRONG&gt;&amp;nbsp;— triage, reply, summarize, schedule.&lt;/LI&gt;
&lt;LI data-line="303"&gt;&lt;STRONG&gt;Custom web / mobile / voice&lt;/STRONG&gt;&amp;nbsp;— built on&amp;nbsp;&lt;STRONG&gt;AG-UI&lt;/STRONG&gt;, which ships a React client covering streaming text, frontend tools, backend tools, shared state, generative UI, predictive updates, HITL prompts.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="305"&gt;The channel is a&amp;nbsp;&lt;EM&gt;deployment choice&lt;/EM&gt;, not an architectural choice. The same agent definition can surface in Teams&amp;nbsp;&lt;EM&gt;and&lt;/EM&gt;&amp;nbsp;on a React dashboard.&lt;/P&gt;
&lt;P data-line="307"&gt;&lt;STRONG&gt;ZavaShop context.&lt;/STRONG&gt;&amp;nbsp;Mei's agent shows up in Teams. The CEO's control tower is a React app on top of AG-UI. The agent definition behind both is the same artifact set the Coding Agent produced.&lt;/P&gt;
&lt;H2 data-line="309"&gt;Concern 2 — The Runtime Agent itself&lt;/H2&gt;
&lt;P data-line="311"&gt;The Runtime Agent is the loop you've heard about a thousand times — now it's a concrete piece of architecture:&lt;/P&gt;
&lt;P&gt;AIAgent = model + instructions + tools + thread&lt;/P&gt;
&lt;P data-line="317"&gt;Inside the loop:&lt;/P&gt;
&lt;OL data-line="319"&gt;
&lt;LI data-line="319"&gt;The model&amp;nbsp;&lt;STRONG&gt;plans &amp;amp; reasons&lt;/STRONG&gt;&amp;nbsp;about the next step.&lt;/LI&gt;
&lt;LI data-line="320"&gt;It&amp;nbsp;&lt;STRONG&gt;calls tools&lt;/STRONG&gt;&amp;nbsp;through MCP, Toolbox, or local functions.&lt;/LI&gt;
&lt;LI data-line="321"&gt;It&amp;nbsp;&lt;STRONG&gt;reads &amp;amp; writes memory&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI data-line="322"&gt;It&amp;nbsp;&lt;STRONG&gt;streams output&lt;/STRONG&gt; back to the channel.&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="python"&gt;# Python — the runtime shape (exactly what the Coding Agent produced)
agent = client.create_agent(
    name="Zara",
    instructions="You are Zara, the warehouse assistant for Seattle DC.",
    tools=[stock_lookup, po_lookup, warehouse_docs_mcp],
)&lt;/LI-CODE&gt;
&lt;H2 data-line="341"&gt;Concern 3 — Tools &amp;amp; Integrations (the runtime capability surface)&lt;/H2&gt;
&lt;P data-line="343"&gt;At runtime, a Runtime Agent reaches the outside world through&amp;nbsp;&lt;STRONG&gt;four kinds of capabilities&lt;/STRONG&gt;&amp;nbsp;— and which one to use is a real engineering decision:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Capability&lt;/th&gt;&lt;th&gt;Lives in&lt;/th&gt;&lt;th&gt;Use when&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Function tool&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The agent's own process&lt;/td&gt;&lt;td&gt;Local code: a calculation, a DB query, a fixture lookup&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;MCP tool&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;An external MCP server&lt;/td&gt;&lt;td&gt;The capability is owned by another system, exposed via MCP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Toolbox tool&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The Foundry project (server-side, tenant-wide)&lt;/td&gt;&lt;td&gt;Capability is shared by multiple agents, must be governed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Agent Skill&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The Foundry project&lt;/td&gt;&lt;td&gt;A combination of tools + policy as one named capability&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="352"&gt;&lt;STRONG&gt;Mental progression:&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="361"&gt;You don't have to start with Toolbox — but the moment a second agent touches the same domain, migrate.&lt;/P&gt;
&lt;P data-line="363"&gt;&lt;STRONG&gt;ZavaShop context.&lt;/STRONG&gt;&amp;nbsp;Local fixtures → function tools. The warehouse handbook → MCP. Supplier-portal connectors shared by procurement, fulfillment, and finance → Toolbox tools. "Validate-PO-against-contract" → an Agent Skill.&lt;/P&gt;
&lt;H2 data-line="365"&gt;Concern 4 — Memory &amp;amp; State&lt;/H2&gt;
&lt;P data-line="367"&gt;State at runtime comes in two flavors:&lt;/P&gt;
&lt;H3 data-line="369"&gt;Thread = state inside one conversation&lt;/H3&gt;
&lt;LI-CODE lang="python"&gt;thread = agent.get_new_thread()
await agent.run("Look up PO-1043.",      thread=thread)
await agent.run("And its supplier?",      thread=thread)   # knows which PO&lt;/LI-CODE&gt;
&lt;H3 data-line="376"&gt;Memory = state across conversations&lt;/H3&gt;
&lt;P data-line="377"&gt;&lt;STRONG&gt;Foundry Memory&lt;/STRONG&gt;&amp;nbsp;is durable, retrievable knowledge about a user — VIP status, packaging preferences, delivery windows. Memory holds&amp;nbsp;&lt;STRONG&gt;stable preferences and facts&lt;/STRONG&gt;, not chat transcripts.&lt;/P&gt;
&lt;P data-line="379"&gt;&lt;STRONG&gt;ZavaShop context.&lt;/STRONG&gt;&amp;nbsp;Customer service agent Aria remembers across sessions that C-204 is VIP, prefers no cardboard, and wants 6–8pm delivery.&lt;/P&gt;
&lt;H2 data-line="381"&gt;Concern 5 — Actions &amp;amp; Outcomes&lt;/H2&gt;
&lt;P data-line="383"&gt;Real systems take&amp;nbsp;&lt;STRONG&gt;actions&lt;/STRONG&gt;&amp;nbsp;that change state and produce&amp;nbsp;&lt;STRONG&gt;outcomes&lt;/STRONG&gt;&amp;nbsp;other systems observe:&lt;/P&gt;
&lt;UL data-line="385"&gt;
&lt;LI data-line="385"&gt;&lt;STRONG&gt;Trigger events&lt;/STRONG&gt;&amp;nbsp;— kick off a workflow, page a human.&lt;/LI&gt;
&lt;LI data-line="386"&gt;&lt;STRONG&gt;Generate outputs&lt;/STRONG&gt;&amp;nbsp;— write a PO, draft an email, push to a record.&lt;/LI&gt;
&lt;LI data-line="387"&gt;&lt;STRONG&gt;Notify channels&lt;/STRONG&gt;&amp;nbsp;— send back to Teams, update a dashboard, hit a webhook.&lt;/LI&gt;
&lt;LI data-line="388"&gt;&lt;STRONG&gt;Observability&lt;/STRONG&gt;&amp;nbsp;— every action streams to Application Insights / Azure Monitor.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="390"&gt;This is also where&amp;nbsp;&lt;STRONG&gt;Workflows&lt;/STRONG&gt; live.&amp;nbsp;WorkflowBuilder&amp;nbsp;is Agent Framework's orchestration primitive:&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="406"&gt;Three workflow features matter most:&lt;/P&gt;
&lt;OL data-line="408"&gt;
&lt;LI data-line="408"&gt;&lt;STRONG&gt;Reuse, don't rebuild&lt;/STRONG&gt;&amp;nbsp;— tools written at build time are workflow nodes at runtime.&lt;/LI&gt;
&lt;LI data-line="409"&gt;&lt;STRONG&gt;Human-in-the-Loop (HITL)&lt;/STRONG&gt;&amp;nbsp;— pauses, asks a human, resumes from the exact step.&lt;/LI&gt;
&lt;LI data-line="410"&gt;&lt;STRONG&gt;Checkpointing&lt;/STRONG&gt;&amp;nbsp;— workflows survive process restarts.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="412"&gt;&lt;STRONG&gt;ZavaShop context.&lt;/STRONG&gt;&amp;nbsp;Fulfillment director Diego's team handles a $10K+ exception every day. Before: an email chain across 5 teams. After: a&amp;nbsp;WorkflowBuilder&amp;nbsp;graph with one HITL approval and full audit trail.&lt;/P&gt;
&lt;H1 data-line="416"&gt;Cross-cutting: the shared services that make this safe&lt;/H1&gt;
&lt;P data-line="418"&gt;Both layers sit on top of platform services non-negotiable for enterprise deployment:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Service&lt;/th&gt;&lt;th&gt;What it does for your agents&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Microsoft Entra ID&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Who is the user? Who is the agent? Managed identity for tool calls&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Microsoft Defender for Cloud&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Threat detection across the agent's compute + data plane&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Microsoft Sentinel&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;SIEM — correlate agent actions with security signals&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Key Vault&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Secrets, keys, connection strings — never in code, never in&amp;nbsp;.env&amp;nbsp;checked to git&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Monitor / App Insights&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Every agent turn, every tool call, every workflow step — observable and queryable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Azure Policy &amp;amp; governance&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Guardrails on what can be deployed where, by whom&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="429"&gt;Skip this row and you have a demo that has not yet failed.&lt;/P&gt;
&lt;H1 data-line="433"&gt;Mapping the ZavaShop workshop to the architecture&lt;/H1&gt;
&lt;P data-line="435"&gt;&lt;STRONG&gt;Layer 1 artifacts shipped in the repo:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="436"&gt;
&lt;LI data-line="436"&gt;.github/agents/zavashop-coding-agent.agent.md&amp;nbsp;— the Coding Agent definition&lt;/LI&gt;
&lt;LI data-line="437"&gt;.github/skills/agent-framework-{azure-ai,workflows,agui}-{py,csharp}/&amp;nbsp;— the six SKILLs&lt;/LI&gt;
&lt;LI data-line="438"&gt;workshop/data/&amp;nbsp;— shared fixtures every artifact grounds in&lt;/LI&gt;
&lt;LI data-line="439"&gt;Per-lab READMEs +&amp;nbsp;eval_queries.jsonl&amp;nbsp;— Layer 1 validation inputs&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="441"&gt;&lt;STRONG&gt;Layer 2 artifacts produced over the course of the workshop:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="442"&gt;
&lt;LI data-line="442"&gt;A single agent (Zara) — function tools +&amp;nbsp;HostedMCPTool&amp;nbsp;+ Thread&lt;/LI&gt;
&lt;LI data-line="443"&gt;A procurement agent (Pierre) — Toolbox + Agent Skills + approval policy&lt;/LI&gt;
&lt;LI data-line="444"&gt;A customer-service agent (Aria) — Foundry Memory + Evaluation + Red-Team&lt;/LI&gt;
&lt;LI data-line="445"&gt;A multi-agent fulfillment workflow (Diego) —&amp;nbsp;WorkflowBuilder&amp;nbsp;+ HITL + Checkpoint&lt;/LI&gt;
&lt;LI data-line="446"&gt;An AG-UI control tower for the CEO — covering all 7 AG-UI features&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="448"&gt;&lt;STRONG&gt;Same model across the stack&lt;/STRONG&gt;&amp;nbsp;—&amp;nbsp;gpt-5.5&amp;nbsp;on Foundry +&amp;nbsp;text-embedding-3-small. Change one env var, run the same artifact in the other language.&lt;/P&gt;
&lt;H1 data-line="452"&gt;Three habits that separate strong agent engineers&lt;/H1&gt;
&lt;OL data-line="454"&gt;
&lt;LI data-line="454"&gt;&lt;STRONG&gt;Read the SKILL first.&lt;/STRONG&gt;&amp;nbsp;Make it ritual. The Coding Agent does it automatically; you should do it manually when reviewing the agent's output.&lt;/LI&gt;
&lt;LI data-line="455"&gt;&lt;STRONG&gt;Treat tools as a public API.&lt;/STRONG&gt;&amp;nbsp;Names, signatures, docstrings, return shapes — they are how the model sees your system at runtime. Refactor them like any other API.&lt;/LI&gt;
&lt;LI data-line="456"&gt;&lt;STRONG&gt;Measure before you tune.&lt;/STRONG&gt;&amp;nbsp;A prompt change without an eval delta is a vibe. With one, it's engineering.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H1 data-line="460"&gt;Getting started in 60 seconds&lt;/H1&gt;
&lt;LI-CODE lang="bash"&gt;git clone https://github.com/microsoft/Learn-Microsoft-Agent-Framework-with-Foundry-ZavaShop-Supply-Chain-Workshop
cd Learn-Microsoft-Agent-Framework-with-Foundry-ZavaShop-Supply-Chain-Workshop

# Foundry prereqs: gpt-5.5 + text-embedding-3-small deployed in your Foundry project
az login --use-device-code

# Python track
python -m venv .venv &amp;amp;&amp;amp; source .venv/bin/activate
pip install agent-framework agent-framework-azure-ai agent-framework-ag-ui \
            azure-identity python-dotenv fastapi "uvicorn[standard]"

# .NET track
dotnet --version   # ≥ 10.0.100

# .env at repo root
cat &amp;gt; .env &amp;lt;&amp;lt;EOF
FOUNDRY_PROJECT_ENDPOINT=https://&amp;lt;your-project&amp;gt;.services.ai.azure.com/api/projects/&amp;lt;project-name&amp;gt;
FOUNDRY_MODEL=gpt-5.5
AZURE_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
AGUI_SERVER_URL=http://127.0.0.1:5100/
AG_UI_API_KEY=zava-control-tower-demo-key
EOF

# In VS Code → Copilot Chat → Agent Mode → pick zavashop-coding-agent
# Then say: "I'm working on the inventory agent in Python — meet Mei."&lt;/LI-CODE&gt;
&lt;P data-line="490"&gt;The one mantra:&amp;nbsp;&lt;STRONG&gt;"Read the SKILL first."&lt;/STRONG&gt;&lt;/P&gt;
&lt;H1 data-line="494"&gt;Closing thought&lt;/H1&gt;
&lt;img /&gt;
&lt;P data-line="496"&gt;Modern agent development is not one job — it's two. The &lt;STRONG&gt;Coding Agent&lt;/STRONG&gt;&amp;nbsp;designs and builds; the&amp;nbsp;&lt;STRONG&gt;Runtime Agent&lt;/STRONG&gt;&amp;nbsp;operates and delivers. Microsoft Agent Framework is the SDK that makes both layers feel like the same conceptual model. Microsoft Foundry is the platform both layers publish to and run on.&lt;/P&gt;
&lt;P data-line="498"&gt;And the engine that turns a generic Copilot into a domain-aware engineer — that takes a sentence-long requirement and lands a runnable, validated, deployable artifact — is the&amp;nbsp;&lt;STRONG&gt;SKILL&lt;/STRONG&gt;. Write a good SKILL once, and every agent built afterwards inherits your team's taste, your fixtures, your patterns, your discipline.&lt;/P&gt;
&lt;P data-line="500"&gt;The ZavaShop workshop is the smallest end-to-end example I can give you that actually exercises both layers, with six SKILLs ready to read. Walk it once, and the next time someone asks "how do we build agents in our org?", you won't be pointing at a tutorial — you'll be pointing at an architecture.&lt;/P&gt;
&lt;P data-line="502"&gt;👉&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://github.com/microsoft/Learn-Microsoft-Agent-Framework-with-Foundry-ZavaShop-Supply-Chain-Workshop" target="_blank" rel="noopener" data-href="https://github.com/microsoft/Learn-Microsoft-Agent-Framework-with-Foundry-ZavaShop-Supply-Chain-Workshop"&gt;Start with the workshop on GitHub&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 31 May 2026 07:51:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/agents-that-build-agents-a-skill-first-blueprint-with-ms-agent/ba-p/4523631</guid>
      <dc:creator>kinfey</dc:creator>
      <dc:date>2026-05-31T07:51:50Z</dc:date>
    </item>
    <item>
      <title>Power Pages &amp; SPA: Deploying a Custom React SPA to Microsoft Power Pages</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/power-pages-spa-deploying-a-custom-react-spa-to-microsoft-power/ba-p/4521378</link>
      <description>&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Introduction&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Modern business applications are no longer limited to traditional server-rendered pages or fixed portal layouts. Today’s users expect fast, responsive, highly interactive web experiences - the kind of experience developers commonly build using modern front-end frameworks such as React.&lt;/P&gt;
&lt;P&gt;Microsoft Power Pages has evolved to support this shift. With Single Page Application support, developers can now build modern client-side applications and deploy them directly to Power Pages while still benefiting from the platform’s security, authentication, Dataverse integration, and governance capabilities.&lt;/P&gt;
&lt;P&gt;In this blog, we’ll walk through how to build a simple React Single Page Application using Vite and deploy it to Microsoft Power Pages using the Power Platform CLI.&lt;/P&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;What We Will Build&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;In this walkthrough, we will:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a React + TypeScript application using Vite&lt;/LI&gt;
&lt;LI&gt;Add simple client-side navigation&lt;/LI&gt;
&lt;LI&gt;Build the app for production&lt;/LI&gt;
&lt;LI&gt;Authenticate Power Platform CLI&lt;/LI&gt;
&lt;LI&gt;Upload the compiled SPA to Power Pages&lt;/LI&gt;
&lt;LI&gt;Activate and test the deployed site&lt;/LI&gt;
&lt;LI&gt;Review key troubleshooting and governance considerations&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Prerequisites&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Before starting, ensure you have the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A Power Pages environment where you have admin privileges&lt;/LI&gt;
&lt;LI&gt;Power Platform CLI installed and authenticated&lt;/LI&gt;
&lt;LI&gt;A Power Pages site that supports SPA deployment&lt;/LI&gt;
&lt;LI&gt;Node.js installed locally&lt;/LI&gt;
&lt;LI&gt;A local React, Angular, or Vue project&lt;/LI&gt;
&lt;LI&gt;Permission to allow JavaScript file uploads if blocked by the environment&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 1: Create a React App Using Vite&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Start by creating a new React + TypeScript app.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;npm create vite@latest powerpages-spa -- --template react-ts cd powerpages-spa npm install npm run dev&lt;/LI-CODE&gt;
&lt;P&gt;This creates a lightweight React application using Vite. You can run it locally and validate that the app works before deploying it to Power Pages.&lt;/P&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 2: Add Basic Pages and Navigation&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Create a simple page structure.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;mkdir src/pages&lt;/LI-CODE&gt;
&lt;P&gt;Create src/pages/Home.tsx.&lt;/P&gt;
&lt;LI-CODE lang="tsx"&gt;export default function Home() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h2&amp;gt;Welcome to Power Pages SPA&amp;lt;/h2&amp;gt;
      &amp;lt;p&amp;gt;This React application is hosted on Microsoft Power Pages.&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}&lt;/LI-CODE&gt;
&lt;P&gt;Create src/pages/Products.tsx.&lt;/P&gt;
&lt;LI-CODE lang="tsx"&gt;export default function Products() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h2&amp;gt;Products&amp;lt;/h2&amp;gt;
      &amp;lt;p&amp;gt;This is a sample product page rendered inside the SPA.&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}&lt;/LI-CODE&gt;
&lt;P&gt;Now update App.tsx.&lt;/P&gt;
&lt;LI-CODE lang="tsx"&gt;import { HashRouter as Router, Routes, Route, NavLink } from "react-router-dom";
import Home from "./pages/Home";
import Products from "./pages/Products";
import "./App.css";

function App() {
  return (
    &amp;lt;Router&amp;gt;
      &amp;lt;header&amp;gt;
        &amp;lt;h1&amp;gt;My Power Pages SPA&amp;lt;/h1&amp;gt;
        &amp;lt;nav&amp;gt;
          &amp;lt;NavLink to="/"&amp;gt;Home&amp;lt;/NavLink&amp;gt;
          &amp;lt;NavLink to="/products"&amp;gt;Products&amp;lt;/NavLink&amp;gt;
        &amp;lt;/nav&amp;gt;
      &amp;lt;/header&amp;gt;

      &amp;lt;main&amp;gt;
        &amp;lt;Routes&amp;gt;
          &amp;lt;Route path="/" element={&amp;lt;Home /&amp;gt;} /&amp;gt;
          &amp;lt;Route path="/products" element={&amp;lt;Products /&amp;gt;} /&amp;gt;
        &amp;lt;/Routes&amp;gt;
      &amp;lt;/main&amp;gt;
    &amp;lt;/Router&amp;gt;
  );
}

export default App;&lt;/LI-CODE&gt;
&lt;P&gt;Power Pages handles routing on the server side. If you use BrowserRouter, your SPA will break on refresh or navigation, because Power Pages tries to resolve routes itself. To fix that, use &lt;STRONG&gt;HashRouter&lt;/STRONG&gt; - it keeps navigation fully on the client side, avoiding any routing conflicts.&lt;/P&gt;
&lt;P&gt;Install React Router if it is not already installed.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;npm install react-router-dom&lt;/LI-CODE&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 3: Build the React App&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Once the local app is ready, create the production build.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;npm run build&lt;/LI-CODE&gt;
&lt;P&gt;For a Vite React app, this typically generates the compiled output inside the dist folder. This compiled folder is what we will upload to Power Pages.&lt;/P&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 4: Authenticate Power Platform CLI&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Authenticate to your Power Platform environment.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;pac auth create --url https://yourorg.crm.dynamics.com&lt;/LI-CODE&gt;
&lt;P&gt;Replace the URL with your Dataverse environment URL. If you work with multiple environments, confirm the active environment before uploading.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;pac auth list&lt;/LI-CODE&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 5: Upload the SPA to Power Pages&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Use the following PAC CLI command to upload the React SPA.&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;pac pages upload-code-site ` --rootPath "./" ` --compiledPath "./dist" ` --siteName "My Power Pages SPA"&lt;/LI-CODE&gt;
&lt;P&gt;(Optional) You can also use a powerpages.config.json file in the root folder to define configuration such as site name, default landing page, and compiled path.&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{ "siteName": "My Power Pages SPA", "defaultLandingPage": "index.html", "compiledPath": "./dist" }&lt;/LI-CODE&gt;
&lt;P&gt;Then upload using:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;pac pages upload-code-site --rootPath "./"&lt;/LI-CODE&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 6: Activate the Site&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;After upload, the SPA site appears in Power Pages under inactive sites and must be activated to make it available to users.&lt;/P&gt;
&lt;P&gt;To activate it:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Go to Power Pages.&lt;/LI&gt;
&lt;LI&gt;Open &lt;STRONG&gt;Inactive sites&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Find your uploaded SPA site.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;Reactivate&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Open the site URL and validate the deployment.&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Step 7: Download and Re-upload an Existing SPA Site&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;If you need to download an existing SPA site for editing or backup, use:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;pac pages download-code-site ` --path "./downloaded-site" ` --webSiteId "your-website-guid" ` --overwrite&lt;/LI-CODE&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Security and Dataverse Integration&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;A major advantage of deploying SPAs to Power Pages is that the app can still use Power Pages security and Dataverse integration patterns.&lt;/P&gt;
&lt;P&gt;For Dataverse operations, developers can use Power Pages Web APIs to load content into the UI or create, update, and delete records, provided the required Web APIs are enabled and table permissions and web roles are configured properly.&lt;/P&gt;
&lt;LI-CODE lang="tsx"&gt;const fetchAccounts = async () =&amp;gt; {
  const response = await fetch("/_api/accounts");
  const data = await response.json();
  return data.value;
};&lt;/LI-CODE&gt;
&lt;P&gt;Always configure table permissions and web roles carefully. The front end should never be treated as the security boundary. Power Pages Web API calls must rely on the platform’s permission model.&lt;/P&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Troubleshooting: JavaScript Upload Restrictions&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Some Dataverse environments block JavaScript file uploads by default. Microsoft Learn states that if you encounter an error such as “Import failed: The attachment is either not a valid type or is too large,” you may need to remove js from blocked attachments in the environment settings.&lt;/P&gt;
&lt;P&gt;To check this:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Power Platform admin center.&lt;/LI&gt;
&lt;LI&gt;Select the environment.&lt;/LI&gt;
&lt;LI&gt;Go to &lt;STRONG&gt;Settings&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Expand &lt;STRONG&gt;Product&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;Privacy + Security&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;In &lt;STRONG&gt;Blocked Attachments&lt;/STRONG&gt;, remove js.&lt;/LI&gt;
&lt;LI&gt;Save the setting.&lt;/LI&gt;
&lt;LI&gt;Re-run the upload command.&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Key Differences from Traditional Power Pages Sites&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;SPA sites behave differently from traditional Power Pages implementations.&lt;/P&gt;
&lt;P&gt;Microsoft Learn states that for SPA sites:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Server-side refresh returns the site root page and the client-side router renders sub-routes.&lt;/LI&gt;
&lt;LI&gt;The pages workspace isn’t supported.&lt;/LI&gt;
&lt;LI&gt;Styling workspace isn’t supported.&lt;/LI&gt;
&lt;LI&gt;Liquid code and Liquid templates aren’t supported.&lt;/LI&gt;
&lt;LI&gt;Adding out-of-the-box components such as lists and forms isn’t currently supported.&lt;/LI&gt;
&lt;LI&gt;SEO support is limited because SPA sites use client-side rendering.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This means developers should treat Power Pages SPA development as a code-first model rather than a low-code page-authoring model.&lt;/P&gt;
&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Recommended Project Structure&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;A simple structure can look like this:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;powerpages-spa
│
├── src
│   ├── pages
│   │   ├── Home.tsx
│   │   └── Products.tsx
│   ├── App.tsx
│   └── main.tsx
│
├── dist
│
├── powerpages.config.json
├── package.json
└── README.md&lt;/LI-CODE&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Conclusion&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;Power Pages SPA support opens up an exciting path for professional developers and fusion teams. You can now build modern React-based experiences and host them on Power Pages while continuing to use the platform’s authentication, Web API, Dataverse, and governance capabilities.&lt;/P&gt;
&lt;P&gt;This approach is especially useful when your portal experience requires advanced UI customization, dynamic client-side behavior, or a component-driven front end that goes beyond traditional portal pages.&lt;/P&gt;
&lt;P&gt;With React, Vite, and Power Platform CLI, the deployment flow becomes simple:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;npm run build pac pages upload-code-site --rootPath "./" --compiledPath "./dist" --siteName "My Power Pages SPA"&lt;/LI-CODE&gt;&lt;HR /&gt;
&lt;H4&gt;&lt;SPAN class="lia-text-color-10"&gt;Useful References&lt;/SPAN&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/power-pages/configure/create-code-sites" target="_blank" rel="noopener" data-tabster="{"&gt;Create and deploy a single-page application in Power Pages&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A style="font-style: normal; font-weight: 400; background-color: rgb(255, 255, 255);" href="https://www.microsoft.com/en-us/power-platform/blog/power-pages/announcing-general-availability-ga-of-building-single-page-applications-on-power-pages/" target="_blank" rel="noopener" data-tabster="{"&gt;Announcing General Availability of building single-page applications for Power Pages&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 29 May 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/power-pages-spa-deploying-a-custom-react-spa-to-microsoft-power/ba-p/4521378</guid>
      <dc:creator>aakarshdhawan</dc:creator>
      <dc:date>2026-05-29T07:00:00Z</dc:date>
    </item>
    <item>
      <title>From Requirement to Production Code, How Engineering Squad Automates the Full Dev Lifecycle</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/from-requirement-to-production-code-how-engineering-squad/ba-p/4522698</link>
      <description>&lt;P&gt;I started wondering: what if instead of one AI assistant generating code snippets, you had an entire squad of specialized AI agents. Each owning a single stage of the delivery pipeline, they could collaborate, self-correct, and produce a complete, traceable output from a plain-text requirement?&lt;/P&gt;
&lt;P&gt;That's Engineering Squad: an open-source, multi-agent framework built with LangGraph, Azure OpenAI, and Foundry Local. Nine agents. One pipeline. Zero manual handoffs.&lt;/P&gt;
&lt;P&gt;You give it a requirement. It gives you back:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;- User stories with acceptance criteria&lt;/P&gt;
&lt;P&gt;- Technical design (API contracts, data models, architecture)&lt;/P&gt;
&lt;P&gt;- Full implementation code (written into real files, not markdown)&lt;/P&gt;
&lt;P&gt;- Unit tests and Playwright E2E tests&lt;/P&gt;
&lt;P&gt;- Automated code review with a self-correcting feedback loop&lt;/P&gt;
&lt;P&gt;When the Code Reviewer finds a bug, it doesn't just flag it, it routes the work back to the exact agent that needs to fix it.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When the Spec Agent hits ambiguity, it stops and asks you rather than guessing. The loop runs up to 5 iterations, and every run is versioned under a unique Run ID for full traceability.&lt;/P&gt;
&lt;P&gt;It runs on Azure OpenAI for heavy reasoning, Foundry Local for lightweight tasks or entirely offline with --local-only mode. No cloud required.&lt;/P&gt;
&lt;H2 data-line="32"&gt;How It Works&lt;/H2&gt;
&lt;P data-line="34"&gt;The squad is a directed graph of 9 specialized agents. Each agent has a single responsibility and a tuned system prompt. The orchestration is handled by LangGraph's StateGraph, which routes work through the pipeline and handles feedback loops.&lt;/P&gt;
&lt;H3 data-line="63"&gt;The Agents&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Agent&lt;/th&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th&gt;Responsibility&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Product Owner&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI gpt-4.1&lt;/td&gt;&lt;td&gt;Reads requirements, classifies impact scope&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Story Agent&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Foundry Local (qwen2.5-7b)&lt;/td&gt;&lt;td&gt;Converts requirements → structured user stories&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Spec Agent&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI o3&lt;/td&gt;&lt;td&gt;Resolves ambiguity — asks the user interactively&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Technical Design&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI gpt-4.1&lt;/td&gt;&lt;td&gt;Architecture, API contracts, data models, error handling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Developer&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI gpt-4.1&lt;/td&gt;&lt;td&gt;Writes code directly into the codebase&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Unit Tester&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI gpt-4.1&lt;/td&gt;&lt;td&gt;Writes unit tests and evaluates them against implementation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Test Writer&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Foundry Local (qwen2.5-7b)&lt;/td&gt;&lt;td&gt;Writes Playwright E2E tests using Page Object Model&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Tester&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI o3&lt;/td&gt;&lt;td&gt;Final evaluation of code against all specs and tests&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Code Reviewer&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure OpenAI o3&lt;/td&gt;&lt;td&gt;Reviews everything, decides: approve or route back&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="77"&gt;The Self-Correcting Loop&lt;/H3&gt;
&lt;P data-line="79"&gt;This is where it gets interesting. The Code Reviewer doesn't just say "approved" or "rejected" — it makes a&amp;nbsp;&lt;STRONG&gt;routing decision&lt;/STRONG&gt; using structured output:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;class ReviewDecision(BaseModel):
    decision: Literal[
        "approved",                 # Ship it
        "requirement_confusion",    # → Spec Agent (clarify ambiguity)
        "clarity_missing",          # → Technical Design (refine design)
        "code_missing",             # → Developer (fix implementation)
        "bug_found",               # → Developer (fix bugs)
        "test_case_missing",       # → Test Writer (add coverage)
    ]
    feedback: str  # Actionable feedback for the target agent&lt;/LI-CODE&gt;
&lt;P&gt;LangGraph's conditional edges route the workflow back to the &lt;STRONG&gt;exact agent&lt;/STRONG&gt; that needs to act. The loop runs up to 5 iterations with a hard stop to prevent infinite cycles.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;workflow.add_conditional_edges(
    "code_reviewer",
    route_review,
    {
        END:                END,
        "spec_agent":       "spec_agent",
        "technical_design": "technical_design",
        "developer":        "developer",
        "test_writer":      "test_writer",
    },
)&lt;/LI-CODE&gt;
&lt;H2 data-line="112"&gt;Key Design Decisions&lt;/H2&gt;
&lt;H3 data-line="114"&gt;1. Impact Classification — Don't Run What You Don't Need&lt;/H3&gt;
&lt;P data-line="116"&gt;Not every change needs the full pipeline. The squad classifies scope first:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Scope&lt;/th&gt;&lt;th&gt;What Runs&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;config&lt;/td&gt;&lt;td&gt;Impact Analysis → Developer → Unit Tester → Reviewer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bugfix&lt;/td&gt;&lt;td&gt;Impact Analysis → Developer → Unit Tester → Tester → Reviewer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;enhancement&lt;/td&gt;&lt;td&gt;Stories → Design (if needed) → Developer → All Tests → Reviewer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;feature&lt;/td&gt;&lt;td&gt;Stories → Design → Developer → All Tests → Reviewer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;refactor&lt;/td&gt;&lt;td&gt;Impact Analysis → Developer → Unit Tester → Reviewer&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="126"&gt;A config change doesn't need user stories. A bugfix doesn't need a full architectural design. This keeps runs fast and focused.&lt;/P&gt;
&lt;H3 data-line="128"&gt;2. Code Goes Into Real Files, Not Markdown&lt;/H3&gt;
&lt;P data-line="130"&gt;This was a deliberate choice. The Developer Agent&amp;nbsp;&lt;STRONG&gt;edits actual source files&lt;/STRONG&gt;&amp;nbsp;in your project — it doesn't dump code into a markdown artifact. The&amp;nbsp;code_changes.md&amp;nbsp;artifact is a&amp;nbsp;&lt;STRONG&gt;change log&lt;/STRONG&gt;&amp;nbsp;that records what was modified and why, for traceability.&lt;/P&gt;
&lt;H3 data-line="132"&gt;3. Existing Projects vs. Greenfield&lt;/H3&gt;
&lt;P data-line="134"&gt;Set&amp;nbsp;PROJECT_TYPE: existing&amp;nbsp;in&amp;nbsp;requirements_input.txt, point it at your repos, and the squad will:&lt;/P&gt;
&lt;UL data-line="135"&gt;
&lt;LI data-line="135"&gt;Scan your codebase for patterns, conventions, and architecture&lt;/LI&gt;
&lt;LI data-line="136"&gt;Make&amp;nbsp;&lt;STRONG&gt;targeted changes only&lt;/STRONG&gt;&amp;nbsp;— no rewriting from scratch&lt;/LI&gt;
&lt;LI data-line="137"&gt;Preserve your existing coding style, error handling, and naming conventions&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-line="139"&gt;4. Two LLM Tiers — Cloud + Local&lt;/H3&gt;
&lt;P data-line="141"&gt;The framework uses a&amp;nbsp;&lt;STRONG&gt;hybrid model strategy&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL data-line="143"&gt;
&lt;LI data-line="143"&gt;&lt;STRONG&gt;Azure OpenAI&lt;/STRONG&gt;&amp;nbsp;(gpt-4.1, o3) for complex reasoning: code generation, technical design, code review&lt;/LI&gt;
&lt;LI data-line="144"&gt;&lt;STRONG&gt;Foundry Local&lt;/STRONG&gt;&amp;nbsp;(qwen2.5-7b, phi-3.5-mini) for lightweight tasks: user stories, test writing&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="146"&gt;This keeps costs down while maintaining quality where it matters. And with&amp;nbsp;--local-only&amp;nbsp;mode, you can run the entire squad on Foundry Local with zero cloud dependencies.&lt;/P&gt;
&lt;H2 data-line="150"&gt;Running It Locally with Foundry Local&lt;/H2&gt;
&lt;P data-line="152"&gt;One of my favorite features: the entire squad can run&amp;nbsp;&lt;STRONG&gt;100% locally&lt;/STRONG&gt;&amp;nbsp;using&amp;nbsp;&lt;A href="https://learn.microsoft.com/windows/ai/foundry/foundry-local-overview" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/windows/ai/foundry/foundry-local-overview"&gt;Foundry Local&lt;/A&gt;. No Azure subscription, no API keys, no internet required.&lt;/P&gt;
&lt;H3 data-line="154"&gt;Setup&lt;/H3&gt;
&lt;LI-CODE lang=""&gt;# Install Foundry Local CLI (one-time)
winget install Microsoft.FoundryLocal

# Install Python dependencies
pip install foundry-local-sdk openai langchain-openai langgraph python-dotenv

# Run in local-only mode
python main.py --local-only&lt;/LI-CODE&gt;
&lt;P&gt;When --local-only is set, every agent that would normally call Azure OpenAI gets redirected to Foundry Local:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;def get_azure_llm(deployment: str, temperature: float = 0.1):
    # Local-only mode: redirect to Foundry Local
    if os.getenv("SQUAD_LOCAL_ONLY", "").lower() in ("true", "1", "yes"):
        from models.local_llm import get_local_llm
        return get_local_llm(temperature=temperature)
    
    # Otherwise: use Azure OpenAI with DefaultAzureCredential
    ...&lt;/LI-CODE&gt;
&lt;P data-line="180"&gt;The foundry-local-sdk (v1.1.0+) handles everything — initializing the runtime, downloading models, and loading them:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;from foundry_local_sdk import FoundryLocalManager, Configuration

# Initialize once (singleton)
config = Configuration(app_name="my-app")
manager = FoundryLocalManager(config)

# Start OpenAI-compatible web service
manager.start_web_service()
print(manager.urls[0])  # SDK auto-discovers the endpoint

# Download &amp;amp; load a model
model = manager.catalog.get_model("qwen2.5-7b")
model.download()
model.load()

# Chat directly — no web service needed
chat = model.get_chat_client()
response = chat.complete_chat([{"role": "user", "content": "Hello!"}])&lt;/LI-CODE&gt;
&lt;H3 data-line="203"&gt;Jupyter Notebook&lt;/H3&gt;
&lt;P data-line="205"&gt;The repo includes a Jupyter notebook (foundry_local.ipynb) that walks you through:&lt;/P&gt;
&lt;OL data-line="206"&gt;
&lt;LI data-line="206"&gt;Installing Foundry Local&lt;/LI&gt;
&lt;LI data-line="207"&gt;Loading a model&lt;/LI&gt;
&lt;LI data-line="208"&gt;Sending chat completions (streaming and non-streaming)&lt;/LI&gt;
&lt;LI data-line="209"&gt;Running the full Engineering Squad in local-only mode&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2 data-line="213"&gt;Traceability — Every Run Is Versioned&lt;/H2&gt;
&lt;P data-line="215"&gt;Every squad execution gets a unique Run ID and produces a structured artifact set:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;output/
  runs/
    20260524_a3f9b1/
      run_metadata.json        ← run ID, timestamp, requirement hash, decision
      impact_classification.md
      user_stories.md
      technical_design.md
      code_changes.md          ← change log (code is in real files)
      unit_test_results.md
      tests.md
      test_results.md
      review_feedback.md
  latest/                      ← symlink to most recent approved run&lt;/LI-CODE&gt;
&lt;P data-line="233"&gt;The&amp;nbsp;run_metadata.json&amp;nbsp;is structured for future&amp;nbsp;&lt;STRONG&gt;Azure DevOps integration&lt;/STRONG&gt;&amp;nbsp;— auto-creating work items, tasks, and test cases from squad output.&lt;/P&gt;
&lt;H2 data-line="237"&gt;Two Ways to Run&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Mode&lt;/th&gt;&lt;th&gt;Best For&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;GitHub Copilot Agent Mode&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Existing codebases — Copilot has full workspace context via&amp;nbsp;#codebase&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Python CLI&lt;/STRONG&gt;&amp;nbsp;(python main.py)&lt;/td&gt;&lt;td&gt;New projects, CI pipelines, fully automated runs&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2 data-line="246"&gt;Running with GitHub Copilot Agent Mode&lt;/H2&gt;
&lt;P data-line="248"&gt;This is the recommended way to run the squad on&amp;nbsp;&lt;STRONG&gt;existing projects&lt;/STRONG&gt;. Copilot has full access to your workspace — it can read files, write code, and run terminal commands — so it naturally understands your architecture, patterns, and conventions.&lt;/P&gt;
&lt;H3 data-line="250"&gt;Prerequisites&lt;/H3&gt;
&lt;OL data-line="252"&gt;
&lt;LI data-line="252"&gt;&lt;STRONG&gt;VS Code&lt;/STRONG&gt;&amp;nbsp;with the&amp;nbsp;&lt;STRONG&gt;GitHub Copilot&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;GitHub Copilot Chat&lt;/STRONG&gt;&amp;nbsp;extensions installed&lt;/LI&gt;
&lt;LI data-line="253"&gt;A&amp;nbsp;&lt;STRONG&gt;Copilot subscription&lt;/STRONG&gt;&amp;nbsp;that supports Agent Mode (Copilot Pro, Business, or Enterprise)&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3 data-line="255"&gt;Setup&lt;/H3&gt;
&lt;OL data-line="257"&gt;
&lt;LI data-line="257"&gt;&lt;STRONG&gt;Clone&lt;/STRONG&gt;&lt;STRONG&gt; the repo&lt;/STRONG&gt; and open it in VS Code:
&lt;PRE class="language- line-numbers language-none" tabindex="0" contenteditable="false" data-lia-code-value="git clone https://github.com/prasunagga/engineeringSquad.git
code engineeringSquad"&gt;&lt;CODE&gt;git clone https://github.com/prasunagga/engineeringSquad.git
code engineeringSquad&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/LI&gt;
&lt;LI data-line="263"&gt;&lt;STRONG&gt;Switch to Agent Mode&lt;/STRONG&gt;&amp;nbsp;— In the Copilot Chat panel, click the mode dropdown (top of the chat input) and select&amp;nbsp;&lt;STRONG&gt;"Agent"&lt;/STRONG&gt;. This is required — Ask and Edit modes don't have tool access.&lt;/LI&gt;
&lt;LI data-line="267"&gt;&lt;STRONG&gt;Enable tools&lt;/STRONG&gt;&amp;nbsp;— Click the&amp;nbsp;&lt;STRONG&gt;🔧 tools icon&lt;/STRONG&gt;&amp;nbsp;(or gear/settings icon) at the bottom of the chat input area. Make sure the following tools are enabled:
&lt;UL data-line="268"&gt;
&lt;LI data-line="268"&gt;&lt;STRONG&gt;File operations&lt;/STRONG&gt;&amp;nbsp;(read, create, edit files)&lt;/LI&gt;
&lt;LI data-line="269"&gt;&lt;STRONG&gt;Terminal&lt;/STRONG&gt;&amp;nbsp;(run commands)&lt;/LI&gt;
&lt;LI data-line="270"&gt;&lt;STRONG&gt;Code search / workspace context&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
Without these enabled, the squad can't read your codebase or write code into files.&lt;/LI&gt;
&lt;LI data-line="276"&gt;&lt;STRONG&gt;Edit your requirement&lt;/STRONG&gt;&amp;nbsp;— Open&amp;nbsp;requirements_input.txt&amp;nbsp;and write your requirement:&lt;LI-CODE lang=""&gt;PROJECT_TYPE: existing
FRONTEND_PATH: plant-catalog
BACKEND_PATH:

Build a cart page where users can add plants, adjust quantities, and see totals.&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3 data-line="285"&gt;Running the Squad&lt;/H3&gt;
&lt;P data-line="287"&gt;In Copilot Chat (Agent Mode), type:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;/run-squad
&lt;/LI-CODE&gt;
&lt;P&gt;This triggers the .github/prompts/run-squad.prompt.md file — a prompt file with mode: agent in its YAML frontmatter that orchestrates the full workflow:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;---
mode: agent
description: Run the full Engineering Squad workflow
tools:
  - read_file
  - create_file
  - replace_in_file
  - insert_text
  - delete_file_range
---&lt;/LI-CODE&gt;
&lt;P data-line="308"&gt;Copilot will then execute the full pipeline: read requirements → classify impact → generate stories → design → write code → write tests → run tests → code review → approve or loop back.&lt;/P&gt;
&lt;H3 data-line="310"&gt;How It Differs from Python CLI&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt;&lt;th&gt;Copilot Agent Mode&lt;/th&gt;&lt;th&gt;Python CLI&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Context&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Full workspace awareness via&amp;nbsp;#codebase&lt;/td&gt;&lt;td&gt;Reads files from paths in&amp;nbsp;requirements_input.txt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Human-in-loop&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Spec Agent asks you directly in chat&lt;/td&gt;&lt;td&gt;Spec Agent prints questions to stdout&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Code editing&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Uses VS Code's file editing tools&lt;/td&gt;&lt;td&gt;Writes files via Python&amp;nbsp;open()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Test execution&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Runs&amp;nbsp;npm test&amp;nbsp;/&amp;nbsp;playwright test&amp;nbsp;in VS Code terminal&lt;/td&gt;&lt;td&gt;Runs via&amp;nbsp;subprocess&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Model&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Uses whichever model is selected in Copilot&lt;/td&gt;&lt;td&gt;Uses Azure OpenAI / Foundry Local&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="320"&gt;Individual Agent Prompts&lt;/H3&gt;
&lt;P data-line="322"&gt;The&amp;nbsp;.github/prompts/&amp;nbsp;directory also contains standalone prompt files for running individual agents:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Prompt&lt;/th&gt;&lt;th&gt;Purpose&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;run-squad.prompt.md&lt;/td&gt;&lt;td&gt;Full orchestrated pipeline&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;developer.prompt.md&lt;/td&gt;&lt;td&gt;Developer agent only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;code-reviewer.prompt.md&lt;/td&gt;&lt;td&gt;Code review only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;story-agent.prompt.md&lt;/td&gt;&lt;td&gt;Generate user stories only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;technical-design.prompt.md&lt;/td&gt;&lt;td&gt;Technical design only&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;test-writer.prompt.md&lt;/td&gt;&lt;td&gt;Write E2E tests only&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2 data-line="335"&gt;Extending the Framework&lt;/H2&gt;
&lt;P data-line="337"&gt;The squad is designed to be modular. Here are the most common extension points:&lt;/P&gt;
&lt;H3 data-line="339"&gt;Add a New Agent&lt;/H3&gt;
&lt;P data-line="341"&gt;Every agent follows the same pattern — a function that takes SquadState, calls an LLM, and returns updated fields:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# agents/my_agent.py
from langchain_core.prompts import ChatPromptTemplate
from graph.state import SquadState
from models.azure_llm import get_azure_llm, DEPLOYMENT_DEVELOPER

PROMPT = ChatPromptTemplate.from_messages([
    ("system", "You are a security review specialist."),
    ("human", "Review this code for vulnerabilities:\n{code}"),
])

def my_agent_node(state: SquadState) -&amp;gt; dict:
    llm = get_azure_llm(deployment=DEPLOYMENT_DEVELOPER)
    result = (PROMPT | llm).invoke({"code": state["code"]})
    return {"security_review": result.content}&lt;/LI-CODE&gt;
&lt;P data-line="360"&gt;Then wire it in:&lt;/P&gt;
&lt;OL data-line="362"&gt;
&lt;LI data-line="362"&gt;Add state fields in&amp;nbsp;graph/state.py&lt;/LI&gt;
&lt;LI data-line="363"&gt;Register the node and edges in&amp;nbsp;graph/workflow.py&lt;/LI&gt;
&lt;LI data-line="364"&gt;Add artifact output in&amp;nbsp;main.py&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3 data-line="366"&gt;Swap the LLM for Any Agent&lt;/H3&gt;
&lt;P data-line="368"&gt;Each agent calls&amp;nbsp;get_azure_llm(deployment=...)&amp;nbsp;or&amp;nbsp;get_local_llm(). You can:&lt;/P&gt;
&lt;UL data-line="370"&gt;
&lt;LI data-line="370"&gt;&lt;STRONG&gt;Change the model&lt;/STRONG&gt;&amp;nbsp;— edit&amp;nbsp;.env&amp;nbsp;(e.g.,&amp;nbsp;AZURE_DEPLOYMENT_DEVELOPER=gpt-5.4)&lt;/LI&gt;
&lt;LI data-line="371"&gt;&lt;STRONG&gt;Go fully local&lt;/STRONG&gt;&amp;nbsp;—&amp;nbsp;python main.py --local-only&lt;/LI&gt;
&lt;LI data-line="372"&gt;&lt;STRONG&gt;Use a different provider&lt;/STRONG&gt;&amp;nbsp;— replace&amp;nbsp;get_azure_llm()&amp;nbsp;with any LangChain-compatible LLM (Anthropic, Ollama, Groq, etc.)&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-line="374"&gt;Customize Agent Prompts&lt;/H3&gt;
&lt;P data-line="376"&gt;Each agent's system prompt is defined as a&amp;nbsp;ChatPromptTemplate&amp;nbsp;at the top of its file in&amp;nbsp;agents/. Edit the prompt directly — no configuration layer to navigate.&lt;/P&gt;
&lt;H3 data-line="378"&gt;Change the Review Loop&lt;/H3&gt;
&lt;P data-line="380"&gt;The routing logic lives in&amp;nbsp;graph/workflow.py&amp;nbsp;→&amp;nbsp;route_review(). Add new decision strings, change the routing map, or adjust&amp;nbsp;MAX_ITERATIONS&amp;nbsp;(default: 5).&lt;/P&gt;
&lt;H3 data-line="382"&gt;VS Code Copilot Agent Mode&lt;/H3&gt;
&lt;P data-line="384"&gt;The&amp;nbsp;.github/prompts/&amp;nbsp;directory contains prompt files for running individual agents in VS Code Copilot Agent Mode. Edit these to customize agent behavior when running through Copilot.&lt;/P&gt;
&lt;H2 data-line="388"&gt;What I Learned Building This&lt;/H2&gt;
&lt;OL data-line="390"&gt;
&lt;LI data-line="390"&gt;&lt;STRONG&gt;Structured output is essential for routing.&lt;/STRONG&gt;&amp;nbsp;Without Pydantic models for review decisions, the conditional edge routing would be fragile and string-matching-dependent.&lt;/LI&gt;
&lt;LI data-line="392"&gt;&lt;STRONG&gt;Impact classification saves significant time.&lt;/STRONG&gt;&amp;nbsp;Running 9 agents for a one-line config change is wasteful. Classifying scope first makes the system practical.&lt;/LI&gt;
&lt;LI data-line="394"&gt;&lt;STRONG&gt;The self-correcting loop works — but needs a hard stop.&lt;/STRONG&gt;&amp;nbsp;Left unchecked, agents can ping-pong feedback indefinitely. The 5-iteration cap is a pragmatic safety net.&lt;/LI&gt;
&lt;LI data-line="396"&gt;&lt;STRONG&gt;Hybrid local + cloud models are the right balance.&lt;/STRONG&gt;&amp;nbsp;Not every task needs GPT-4.1. User story generation and test writing work well on smaller local models, cutting costs without sacrificing quality.&lt;/LI&gt;
&lt;LI data-line="398"&gt;&lt;STRONG&gt;"Ask, don't guess" is the single most important principle.&lt;/STRONG&gt;&amp;nbsp;When the Spec Agent encounters ambiguous requirements, it stops and asks the user rather than hallucinating assumptions. This one rule prevents the most costly category of errors.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2 data-line="402"&gt;Try It Yourself&lt;/H2&gt;
&lt;P data-line="404"&gt;The framework is open source and designed to be extensible:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;git clone https://github.com/prasunagga/engineeringSquad.git
cd engineeringSquad
pip install -r requirements.txt

# Edit your requirement
notepad requirements_input.txt

# Run (local-only, no Azure needed)
python main.py --local-only&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-line="418"&gt;&lt;STRONG&gt;Requirements:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="419"&gt;
&lt;LI data-line="419"&gt;Python 3.10+&lt;/LI&gt;
&lt;LI data-line="420"&gt;Windows, macOS, or Linux&lt;/LI&gt;
&lt;LI data-line="421"&gt;For local-only:&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry-local/what-is-foundry-local" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/foundry-local/what-is-foundry-local"&gt;Foundry Local&lt;/A&gt;&amp;nbsp;(winget install Microsoft.FoundryLocal)&lt;/LI&gt;
&lt;LI data-line="422"&gt;For cloud mode: Azure OpenAI endpoint +&amp;nbsp;az login&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="426"&gt;What's Next&lt;/H2&gt;
&lt;UL data-line="428"&gt;
&lt;LI data-line="428"&gt;&lt;STRONG&gt;Azure DevOps MCP integration&lt;/STRONG&gt;&amp;nbsp;— Auto-sync stories, tasks, and test cases to ADO boards&lt;/LI&gt;
&lt;LI data-line="429"&gt;&lt;STRONG&gt;CI/CD trigger&lt;/STRONG&gt;&amp;nbsp;— Auto-run the squad on PR creation or work item assignment&lt;/LI&gt;
&lt;LI data-line="430"&gt;&lt;STRONG&gt;Multi-repo support&lt;/STRONG&gt;&amp;nbsp;— Frontend, backend, and infra in separate repositories&lt;/LI&gt;
&lt;LI data-line="431"&gt;&lt;STRONG&gt;Cost estimation&lt;/STRONG&gt;&amp;nbsp;— Estimate effort and cloud costs from the technical design&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="435"&gt;Links&lt;/H2&gt;
&lt;UL data-line="437"&gt;
&lt;LI data-line="437"&gt;&lt;STRONG&gt;GitHub:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://github.com/prasunagga/engineeringSquad" target="_blank" rel="noopener" data-href="https://github.com/prasunagga/engineeringSquad"&gt;github.com/prasunagga/engineeringSquad&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="438"&gt;&lt;STRONG&gt;Foundry Local docs:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry-local/what-is-foundry-local" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/foundry-local/what-is-foundry-local"&gt;learn.microsoft.com/en-us/azure/foundry-local/what-is-foundry-local&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="439"&gt;&lt;STRONG&gt;LangGraph docs:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://www.langchain.com/langgraph" target="_blank" rel="noopener" data-href="https://www.langchain.com/langgraph"&gt;langchain.com/langgraph&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="440"&gt;&lt;STRONG&gt;Azure OpenAI docs:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://azure.microsoft.com/en-us/products/ai-foundry/models/openai" target="_blank" rel="noopener" data-href="https://azure.microsoft.com/en-us/products/ai-foundry/models/openai"&gt;azure.microsoft.com/en-us/products/ai-foundry/models/openai&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 29 May 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/from-requirement-to-production-code-how-engineering-squad/ba-p/4522698</guid>
      <dc:creator>paggarwal</dc:creator>
      <dc:date>2026-05-29T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Building Agentic Systems on Azure: Microsoft Foundry Agents SDK vs Microsoft Agent Framework</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-agentic-systems-on-azure-microsoft-foundry-agents-sdk/ba-p/4517290</link>
      <description>&lt;P&gt;In my recent experience as a Senior Consultant at Microsoft, I’ve been actively involved in designing and delivering AI-driven solutions, with a strong focus on building intelligent agents using modern frameworks.&lt;/P&gt;
&lt;P&gt;Along the way, I've built agents using both&amp;nbsp;&lt;STRONG&gt;Microsoft Foundry &lt;/STRONG&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Agents SDK &lt;EM&gt;(hereafter "Agents SDK")&lt;/EM&gt; and&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Microsoft Agent Framework (MAF)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Both approaches are powerful and capable. However, once you move beyond simple proofs of concept, the&amp;nbsp;&lt;STRONG&gt;developer experience and architectural patterns start to differ significantly&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;This article provides a practical comparison based on real implementation experience and aims to help developers choose the right approach.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Approach 1: Agents SDK&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Agents SDK provides a straightforward way to create agents with integrated tools and models.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Example: Creating an Agent&lt;/STRONG&gt;&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;from azure.ai.projects import AIProjectClient&lt;/P&gt;
&lt;P&gt;from azure.ai.agents.models import AzureAISearchTool, AzureAISearchQueryType&lt;/P&gt;
&lt;P&gt;from azure.identity import DefaultAzureCredential&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;client = AIProjectClient(credential=DefaultAzureCredential(), endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# Configure tools&lt;/P&gt;
&lt;P&gt;ai_search = AzureAISearchTool(&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; index_connection_id=conn_id,&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; index_name="my-index",&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; query_type=AzureAISearchQueryType.SEMANTIC,&lt;/P&gt;
&lt;P&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# Create agent (persisted in Foundry portal)&lt;/P&gt;
&lt;P&gt;agent = client.agents.create_agent(&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; model=os.getenv("AZURE_AI_AGENT_DEPLOYMENT_NAME"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; name="MyAgent",&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; instructions="You are a helpful assistant.",&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; tool_resources=ai_search.resources,&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; tools=ai_search.definitions,&lt;/P&gt;
&lt;P&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# Run conversation&lt;/P&gt;
&lt;P&gt;thread = client.agents.threads.create()&lt;/P&gt;
&lt;P&gt;client.agents.messages.create(thread_id=thread.id, role="user", content="Hello")&lt;/P&gt;
&lt;P&gt;run = client.agents.runs.create(thread_id=thread.id, agent_id=agent.id)&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&lt;STRONG&gt;What this approach provides&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Native integration with Azure AI services (OpenAI, AI Search, MCP)&lt;/LI&gt;
&lt;LI&gt;Managed execution environment&lt;/LI&gt;
&lt;LI&gt;Simple and quick agent setup&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Conceptually, this approach can be summarized as:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Model + Tools + Execution&lt;/STRONG&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&lt;STRONG&gt;Strengths&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;✅ Rapid development and onboarding&lt;/LI&gt;
&lt;LI&gt;✅ Strong integration within the Azure ecosystem&lt;/LI&gt;
&lt;LI&gt;✅ Well-suited for single-agent or tool-driven use cases&lt;/LI&gt;
&lt;LI&gt;✅ Minimal infrastructure overhead&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;STRONG&gt;Challenges observed in practice&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;As the complexity of scenarios increases, certain limitations become more visible:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Multi-agent workflows require &lt;STRONG&gt;custom orchestration logic&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Agent handoffs must be implemented manually&lt;/LI&gt;
&lt;LI&gt;Context sharing across agents requires additional design effort&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;While this approach offers flexibility, it shifts orchestration complexity to the developer.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Approach 2: Microsoft Agent Framework (MAF)&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Microsoft Agent Framework introduces a higher-level abstraction, focused on &lt;STRONG&gt;agent orchestration and system design&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Creating an Agent&lt;/STRONG&gt;&lt;/H4&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;from agent_framework import Agent, WorkflowBuilder, Message&lt;/P&gt;
&lt;P&gt;from agent_framework.foundry import FoundryChatClient&lt;/P&gt;
&lt;P&gt;from azure.identity import DefaultAzureCredential&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;client = FoundryChatClient(&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; model=os.getenv("FOUNDRY_MODEL_DEPLOYMENT_NAME"),&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; credential=DefaultAzureCredential(),&lt;/P&gt;
&lt;P&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# Create agents (in-process only, not persisted in portal)&lt;/P&gt;
&lt;P&gt;researcher = Agent(client, name="ResearcherAgent", instructions="Research topics thoroughly.")&lt;/P&gt;
&lt;P&gt;writer = Agent(client, name="WriterAgent", instructions="Write concise summaries.")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# Build and run multi-agent workflow&lt;/P&gt;
&lt;P&gt;workflow = WorkflowBuilder(start_executor=researcher).add_edge(researcher, writer).build()&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;async for event in workflow.run(Message("user", "Summarize migration best practices"), stream=True):&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; print(event.content)&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&lt;STRONG&gt;What this approach provides&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Built-in orchestration capabilities&lt;/LI&gt;
&lt;LI&gt;Native support for multi-agent workflows&lt;/LI&gt;
&lt;LI&gt;Structured agent lifecycle management&lt;/LI&gt;
&lt;LI&gt;Context and memory handling&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Conceptually, this can be viewed as:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Agents + Orchestration + System Design&lt;/STRONG&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4&gt;&lt;STRONG&gt;Observations from implementation&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;When implementing similar use cases using MAF:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Agent responsibilities became clearly defined&lt;/LI&gt;
&lt;LI&gt;Routing and delegation patterns were significantly simplified&lt;/LI&gt;
&lt;LI&gt;Overall system architecture became easier to maintain and scale&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This approach encourages thinking in terms of &lt;STRONG&gt;agent ecosystems rather than isolated agents&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Architecture Comparison&lt;/STRONG&gt;&lt;/H2&gt;
&lt;H4&gt;&lt;STRONG&gt;Agents SDK&lt;/STRONG&gt;&lt;/H4&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Microsoft Agent Framework (MAF)&lt;/STRONG&gt;&lt;/H4&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Choosing the Right Approach&lt;/STRONG&gt;&lt;/H2&gt;
&lt;H5&gt;&lt;STRONG&gt;Use Agents SDK when:&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;You need rapid development for a &lt;STRONG&gt;single-agent use case&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;The workflow is relatively straightforward&lt;/LI&gt;
&lt;LI&gt;You prefer flexibility and lower-level control&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Use Microsoft Agent Framework when:&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;You are designing &lt;STRONG&gt;multi-agent systems&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Your solution requires &lt;STRONG&gt;routing, delegation, or handoffs&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Long-term scalability and maintainability are essential&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Pros and Cons Summary&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H5&gt;&lt;STRONG&gt;Agents SDK&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;STRONG&gt;Pros&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Easy to get started&lt;/LI&gt;
&lt;LI&gt;Strong Azure integration&lt;/LI&gt;
&lt;LI&gt;Flexible design&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Cons&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Manual orchestration required&lt;/LI&gt;
&lt;LI&gt;Limited native multi-agent support&lt;/LI&gt;
&lt;LI&gt;Complexity increases as scenarios grow&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Microsoft Agent Framework (MAF)&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;STRONG&gt;Pros&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Built-in orchestration&lt;/LI&gt;
&lt;LI&gt;Native multi-agent support&lt;/LI&gt;
&lt;LI&gt;Scalable and structured architecture&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Cons&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Learning curve for new developers&lt;/LI&gt;
&lt;LI&gt;More opinionated framework design&lt;/LI&gt;
&lt;LI&gt;Reduced low-level control compared to SDK-based approach&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;STRONG&gt;References and Repositories&lt;/STRONG&gt;&lt;/H2&gt;
&lt;H4&gt;🔗 Microsoft Agent Framework (MAF)&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/microsoft/agent-framework" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Microsoft Agent Framework – GitHub Repository&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/microsoft/Agent-Framework-Samples" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Microsoft Agent Framework Samples – Tutorials &amp;amp; Examples&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/microsoft/Agent-Framework-Samples/tree/main/07.Workflow" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Workflow Samples (Multi-agent patterns)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/microsoft/agent-framework/blob/main/python/samples/02-agents/providers/foundry/foundry_chat_client_basic.py" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;FoundryChatClient sample (Python)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/tchaitanya/agent-framework-demos" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}" target="_blank"&gt;Agent Framework demos - GitHub Source&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;📘 Documentation&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/agent-framework/overview/" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Microsoft Agent Framework Overview (Microsoft Learn)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/agent-framework/agents/providers/microsoft-foundry" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Agent Framework + Microsoft Foundry provider docs&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;🔗 Azure AI Projects / Agents SDK&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/ai/azure-ai-projects/README.md" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Azure AI Projects SDK – Python (GitHub Source)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/ai/Azure.AI.Projects.Agents" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Azure AI Projects Agents (.NET SDK repo)&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;📘 Documentation&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/python/api/overview/azure/ai-projects-readme?view=azure-python" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Azure AI Projects SDK (Python) – Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/python/api/overview/azure/ai-agents-readme?view=azure-python" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Azure AI Agents SDK – Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Azure AI Projects and Microsoft Agent Framework both play important roles in the modern agent development landscape.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Agents SDK enables&amp;nbsp;&lt;STRONG&gt;quick and flexible agent development&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Microsoft Agent Framework enables &lt;STRONG&gt;structured, &lt;/STRONG&gt;&lt;STRONG&gt;scalable agent systems&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In practice, the choice depends on whether you are building a &lt;STRONG&gt;single agent feature&lt;/STRONG&gt; or a &lt;STRONG&gt;multi-agent system&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Final Thought&lt;/STRONG&gt;&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Agents SDK helps you get started quickly.&lt;BR /&gt;Microsoft Agent Framework helps you scale with confidence&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In a follow-up blog, I’ll dive into how the &lt;STRONG&gt;M365 Agents SDK compares with Microsoft Agent Framework&lt;/STRONG&gt;, especially in the context of enterprise productivity and Copilot experiences.&lt;/P&gt;</description>
      <pubDate>Thu, 28 May 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-agentic-systems-on-azure-microsoft-foundry-agents-sdk/ba-p/4517290</guid>
      <dc:creator>ChaitanyaThalloory</dc:creator>
      <dc:date>2026-05-28T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Multi-Tenant Architecture: Real Challenges and an Azure Design Walkthrough</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/multi-tenant-architecture-real-challenges-and-an-azure-design/ba-p/4517460</link>
      <description>&lt;H1&gt;Azure Multi-Tenant Architecture (B2C Scenario)&lt;/H1&gt;
&lt;P&gt;Let’s start with a reference design commonly used in Azure-based systems.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;A pretty standard setup looks something like this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Microsoft Entra External ID (Azure AD B2C) for authentication&lt;/LI&gt;
&lt;LI&gt;Azure API Management as the entry layer&lt;/LI&gt;
&lt;LI&gt;App Service or Functions for the compute layer&lt;/LI&gt;
&lt;LI&gt;Cosmos DB or SQL for storage&lt;/LI&gt;
&lt;LI&gt;Redis for caching&lt;/LI&gt;
&lt;LI&gt;Service Bus for async processing&lt;/LI&gt;
&lt;LI&gt;Application Insights for monitoring&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If you’ve worked on Azure systems, nothing here is surprising.&lt;BR /&gt;On paper, this architecture is clean, scalable, and “multi-tenant ready”.&lt;/P&gt;
&lt;P&gt;But once traffic starts flowing and tenants behave differently, things start breaking in subtle ways.&lt;/P&gt;
&lt;H1&gt;1. Tenant Context Propagation Across Services&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;A request doesn’t stay in one place. It moves across:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;API layer&lt;/LI&gt;
&lt;LI&gt;queues/topics&lt;/LI&gt;
&lt;LI&gt;background workers&lt;/LI&gt;
&lt;/UL&gt;
&lt;BR /&gt;&lt;img /&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;What I’ve seen happen multiple times:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;tenant ID is present in the API, but missing in async flows&lt;/LI&gt;
&lt;LI&gt;background jobs process data without knowing which tenant it belongs to&lt;/LI&gt;
&lt;LI&gt;logs become useless because you can’t tie actions back to a tenant&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The fix is simple in theory, but often missed in implementation:&lt;/P&gt;
&lt;P&gt;Every message should carry tenant context. No exceptions.&lt;/P&gt;
&lt;P&gt;If you rely on “it will be available somewhere”, it won’t be, especially in distributed systems.&lt;/P&gt;
&lt;P&gt;Ensure tenant context is explicitly carried everywhere:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;public class TenantMessage
{
    public string TenantId { get; set; }
    public string Payload { get; set; }
}&lt;/LI-CODE&gt;
&lt;P&gt;Every message, event, and async operation should include tenant scope.&lt;/P&gt;
&lt;H1&gt;2. Data Isolation in Shared Databases&lt;/H1&gt;
&lt;P&gt;Most teams start with a shared database model with tenant-based partitioning.&lt;BR /&gt;It works well initially.&lt;/P&gt;
&lt;P&gt;Problems start creeping in later:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;UL&gt;
&lt;LI&gt;someone forgets to add a tenant filter in a query&lt;/LI&gt;
&lt;LI&gt;a query suddenly scans across partitions&lt;/LI&gt;
&lt;LI&gt;one large tenant starts slowing down others&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;A simple query like this becomes critical:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;var query = container.GetItemQueryIterator&amp;lt;Order&amp;gt;(
    new QueryDefinition("SELECT * FROM c WHERE c.tenantId = @tenantId")
        .WithParameter("@tenantId", tenantId)
);&lt;/LI-CODE&gt;
&lt;P&gt;The tricky part is not writing it once, it’s making sure it’s applied&amp;nbsp;&lt;STRONG&gt;everywhere, every time&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H1&gt;3. Authorization Beyond Tenant Boundaries&lt;/H1&gt;
&lt;P&gt;At the beginning, access control is simple:&lt;/P&gt;
&lt;P&gt;“Users can access data from their own tenant.”&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;But then requirements grow:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;admin access&lt;/LI&gt;
&lt;LI&gt;cross-tenant visibility&lt;/LI&gt;
&lt;LI&gt;reporting across firms or regions&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;And this is where things usually get messy.&lt;/P&gt;
&lt;P&gt;Different services start implementing their own logic, and over time you end up with inconsistent behavior.&lt;/P&gt;
&lt;P&gt;A simple check:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;public bool CanAccess(string userTenant, string resourceTenant, bool isGlobalAdmin)
{
    if (isGlobalAdmin) return true;
    return userTenant == resourceTenant;
}&lt;/LI-CODE&gt;
&lt;P&gt;becomes much harder to manage when duplicated across multiple services.&lt;/P&gt;
&lt;P&gt;One thing that helps a lot here is centralizing authorization logic early.&lt;/P&gt;
&lt;H1&gt;4. Caching as a Hidden Risk&lt;/H1&gt;
&lt;P&gt;Caching is usually added later for performance.&lt;/P&gt;
&lt;P&gt;And that’s exactly why it becomes risky.&lt;/P&gt;
&lt;P&gt;I’ve seen scenarios where:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;cached data from one tenant is returned to another&lt;/LI&gt;
&lt;LI&gt;because the cache key didn’t include tenant information&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Fixing it is straightforward:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;public string BuildCacheKey(string tenantId, string key)
{
    return $"{tenantId}:{key}";
}&lt;/LI-CODE&gt;
&lt;P&gt;Cache keys must always include tenant boundaries&lt;/P&gt;
&lt;img /&gt;
&lt;H1&gt;5. Resource Contention (Noisy Neighbor Problem)&lt;/H1&gt;
&lt;P&gt;All tenants share resources:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;compute&lt;/LI&gt;
&lt;LI&gt;database throughput&lt;/LI&gt;
&lt;LI&gt;messaging&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;What happens in practice:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;one high-load tenant impacts others&lt;/LI&gt;
&lt;LI&gt;latency becomes unpredictable&lt;/LI&gt;
&lt;LI&gt;system behavior differs per tenant&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You start adding controls like:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;if (RequestsPerTenant[tenantId] &amp;gt; 100)
{
    return StatusCode(429);
}&lt;/LI-CODE&gt;
&lt;P&gt;And gradually move towards:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;throttling&lt;/LI&gt;
&lt;LI&gt;workload isolation&lt;/LI&gt;
&lt;LI&gt;prioritization&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This is less of a design problem and more of an operational reality.&lt;/P&gt;
&lt;H1&gt;6. Observability in Multi-Tenant Systems&lt;/H1&gt;
&lt;P&gt;Logging works great, until you scale.&lt;/P&gt;
&lt;P&gt;Then suddenly:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;logs from all tenants are mixed&lt;/LI&gt;
&lt;LI&gt;debugging becomes slow&lt;/LI&gt;
&lt;LI&gt;it’s hard to answer basic questions like “which tenant failed?”&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;A small change makes a huge difference:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;_logger.LogInformation(
    "Tenant={TenantId} Action=ProcessOrder OrderId={OrderId}",
    tenantId,
    orderId
);&lt;/LI-CODE&gt;
&lt;P&gt;It sounds obvious, but it’s often inconsistent across services.&lt;/P&gt;
&lt;H1&gt;7. Backup and Restore Considerations&lt;/H1&gt;
&lt;P&gt;Taking backups is easy.&lt;/P&gt;
&lt;P&gt;Restoring a single tenant isn’t.&lt;/P&gt;
&lt;P&gt;In most shared database setups:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;restore is done at database level&lt;/LI&gt;
&lt;LI&gt;which affects all tenants&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;So if one tenant has a problem, recovery is not straightforward.&lt;/P&gt;
&lt;P&gt;This is one of those areas where decisions made early in design matter a lot later.&lt;/P&gt;
&lt;H2&gt;Final Thoughts&lt;/H2&gt;
&lt;P&gt;Designing a multi-tenant system is not just about choosing Azure services.&lt;/P&gt;
&lt;P&gt;The real challenges come from:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;how tenant context flows&lt;/LI&gt;
&lt;LI&gt;how isolation is enforced&lt;/LI&gt;
&lt;LI&gt;how systems behave under uneven load&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Most issues don’t show up on day one.&lt;BR /&gt;They appear gradually as tenants grow, scale, and behave differently.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;References and Further Reading&lt;/H2&gt;
&lt;P&gt;If you want to explore these concepts in more depth, here are some useful official resources:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/active-directory-b2c/" target="_blank"&gt;Microsoft Entra External ID (Azure AD B2C)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/api-management/" target="_blank"&gt;Azure API Management&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/app-service/" target="_blank"&gt;Azure App Service&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/architecture/guide/multitenant/service/cosmos-db" target="_blank"&gt;Azure Cosmos DB and multitenant design&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/service-bus-messaging/" target="_blank"&gt;Azure Service Bus&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 27 May 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/multi-tenant-architecture-real-challenges-and-an-azure-design/ba-p/4517460</guid>
      <dc:creator>pranav_pratik</dc:creator>
      <dc:date>2026-05-27T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Building an On-Device Voice Assistant with Microsoft Foundry Local</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-an-on-device-voice-assistant-with-microsoft-foundry/ba-p/4522392</link>
      <description>&lt;H2&gt;Why on-device voice still matters&lt;/H2&gt;
&lt;P&gt;Most "voice AI" tutorials assume your audio leaves the machine. You ship a WAV to Whisper-API, your transcript to GPT-4, and a synthesized response back over the wire. That works — but it also means three round trips, three per-token bills, and three places your user's voice gets logged.&lt;/P&gt;
&lt;P&gt;The new wave of small, hardware-optimised models changes the trade-off. NVIDIA's &lt;STRONG&gt;Nemotron Speech Streaming En 0.6B&lt;/STRONG&gt; is a 600M-parameter streaming ASR model published into the Microsoft Foundry Local catalog. Paired with a small chat model like &lt;CODE&gt;qwen2.5-0.5b&lt;/CODE&gt; or &lt;CODE&gt;phi-4-mini&lt;/CODE&gt;, you can run the entire capture → transcribe → reason → respond loop in-process on a developer laptop, with no API keys and no network egress.&lt;/P&gt;
&lt;P&gt;This post walks through how the &lt;A href="https://github.com/leestott/fl-nemotron" target="_blank"&gt;fl-nemotron&lt;/A&gt; sample does it, the SDK pitfalls we hit on the way, and the design decisions that made the pipeline reliable.&lt;/P&gt;
&lt;H2&gt;What we're building&lt;/H2&gt;
&lt;P&gt;A browser-hosted assistant served by FastAPI at &lt;CODE&gt;http://127.0.0.1:8000&lt;/CODE&gt;. The page captures microphone audio, posts it to &lt;CODE&gt;/api/transcribe&lt;/CODE&gt;, then streams the chat reply back over Server-Sent Events from &lt;CODE&gt;/api/chat&lt;/CODE&gt;. All inference runs locally through two Foundry Local models loaded into the same process.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The shape of the pipeline:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;Microphone (browser MediaRecorder)
   │  WebM/Opus blob
   ▼
Client-side WAV encoder (16 kHz, mono, PCM-16)
   │  multipart/form-data
   ▼
FastAPI /api/transcribe
   │
   ▼
Nemotron Speech Streaming En 0.6B  (Foundry Local audio client)
   │  transcript text
   ▼
Chat LLM e.g. qwen2.5-0.5b         (Foundry Local chat client)
   │  streamed tokens
   ▼
FastAPI /api/chat → SSE → browser bubble&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H2&gt;The version that bit us: &lt;CODE&gt;foundry-local-sdk &amp;gt;= 1.1.0&lt;/CODE&gt;&lt;/H2&gt;
&lt;P&gt;Before any code, the single most important fact about this project:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;The Nemotron Speech Streaming model only appears in the Foundry Local 1.1.x catalog.&lt;/STRONG&gt; Older SDKs (0.5.x / 0.6.x) cannot resolve the alias &lt;CODE&gt;nemotron-speech-streaming-en-0.6b&lt;/CODE&gt; and fail with &lt;CODE&gt;model not found&lt;/CODE&gt;.&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The module name also changed in 1.1.0 — it is now &lt;CODE&gt;foundry_local_sdk&lt;/CODE&gt; (with the underscore-&lt;CODE&gt;sdk&lt;/CODE&gt; suffix), not &lt;CODE&gt;foundry_local&lt;/CODE&gt;. The pip wheel for &lt;CODE&gt;foundry-local-core&lt;/CODE&gt; is bundled, so there is no separate MSI / winget install to worry about.&lt;/P&gt;
&lt;P&gt;Pin it explicitly:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;pip install --upgrade "foundry-local-sdk&amp;gt;=1.1.0,&amp;lt;2"&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And verify before anything else:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;python -c "import importlib.metadata as m; print('sdk', m.version('foundry-local-sdk'))"
# expect: sdk 1.1.0&lt;/CODE&gt;&lt;/PRE&gt;
&lt;H2&gt;Loading both models from one manager&lt;/H2&gt;
&lt;P&gt;The 1.1.x SDK exposes a single &lt;CODE&gt;FoundryLocalManager&lt;/CODE&gt; that owns the runtime. Each loaded model gives you back a per-model OpenAI-compatible client — &lt;CODE&gt;get_chat_client()&lt;/CODE&gt; for text models and &lt;CODE&gt;get_audio_client()&lt;/CODE&gt; for ASR. There is no need to bring your own &lt;CODE&gt;openai&lt;/CODE&gt; Python package; the SDK ships its own thin client.&lt;/P&gt;
&lt;P&gt;The wrapper used in the repo (&lt;CODE&gt;src/foundry_client.py&lt;/CODE&gt;) does this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;from foundry_local_sdk import Configuration, FoundryLocalManager

FoundryLocalManager.initialize(Configuration(app_name="fl-nemotron"))
manager = FoundryLocalManager.instance

chat_model = manager.load_model("qwen2.5-0.5b")
stt_model  = manager.load_model("nemotron-speech-streaming-en-0.6b")

chat_client  = chat_model.get_chat_client()
audio_client = stt_model.get_audio_client()&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Both models are downloaded on first use into the Foundry Local cache and stay resident for the lifetime of the process. On a laptop with 16 GB RAM, the combined working set sits comfortably under 4 GB.&lt;/P&gt;
&lt;H2&gt;The transcription surprise&lt;/H2&gt;
&lt;img /&gt;
&lt;P&gt;The first naive approach was the obvious one:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;with open(wav_path, "rb") as f:
    result = audio_client.transcribe(file=f, model="nemotron-speech-streaming-en-0.6b")&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;That call &lt;STRONG&gt;fails&lt;/STRONG&gt; on Nemotron. The bundled ONNX Runtime GenAI in &lt;CODE&gt;foundry-local-core&lt;/CODE&gt; does not register the &lt;CODE&gt;nemotron_speech&lt;/CODE&gt; multi-modal model type that the standard &lt;CODE&gt;AudioClient.transcribe()&lt;/CODE&gt; path tries to instantiate. The error surfaces as a cryptic model-type registration failure deep inside the native runtime.&lt;/P&gt;
&lt;P&gt;The fix is to use the streaming session API instead — a different native entry point (&lt;CODE&gt;core_interop.start_audio_stream&lt;/CODE&gt;) that the streaming model &lt;EM&gt;does&lt;/EM&gt; support. The repo isolates this in &lt;A href="https://github.com/leestott/fl-nemotron/blob/main/src/_nemotron_live.py" target="_blank"&gt;&lt;CODE&gt;src/_nemotron_live.py&lt;/CODE&gt;&lt;/A&gt;:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;def transcribe_wav_live(audio_client, wav_path, *, language="en"):
    with wave.open(str(wav_path), "rb") as w:
        sample_rate  = w.getframerate()
        channels     = w.getnchannels()
        sample_width = w.getsampwidth()
        pcm          = w.readframes(w.getnframes())

    session = audio_client.create_live_transcription_session()
    session.settings.sample_rate     = sample_rate
    session.settings.channels        = channels
    session.settings.bits_per_sample = sample_width * 8
    session.settings.language        = language
    session.start()

    # Feed PCM in ~100 ms chunks from a worker thread, then stop.
    bytes_per_sec = sample_rate * channels * sample_width
    chunk_bytes   = max(bytes_per_sec // 10, 1024)

    def _pusher():
        try:
            for offset in range(0, len(pcm), chunk_bytes):
                session.append(pcm[offset:offset + chunk_bytes])
        finally:
            session.stop()

    threading.Thread(target=_pusher, daemon=True).start()

    parts = []
    for resp in session.get_stream():
        for cp in getattr(resp, "content", []) or []:
            text = getattr(cp, "text", "") or getattr(cp, "transcript", "") or ""
            if text:
                parts.append(text)
    return " ".join(p.strip() for p in parts if p.strip()).strip()&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Two things to notice:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Push from a thread, read from the main coroutine.&lt;/STRONG&gt; &lt;CODE&gt;session.append()&lt;/CODE&gt; is a blocking write into the native stream and &lt;CODE&gt;session.get_stream()&lt;/CODE&gt; is a blocking generator. Run one in a worker thread so the other can drain in parallel — otherwise you deadlock the session.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Chunk to ~100 ms.&lt;/STRONG&gt; Smaller chunks (e.g. 10 ms) spend more time crossing the FFI boundary than transcribing; larger chunks (e.g. 1 s) hold back partial results and hurt perceived latency.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Always &lt;CODE&gt;session.stop()&lt;/CODE&gt;.&lt;/STRONG&gt; Without it the generator never terminates and the request hangs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;The other transcription surprise: browsers don't send WAV&lt;/H2&gt;
&lt;P&gt;Inside the browser, &lt;CODE&gt;MediaRecorder&lt;/CODE&gt; defaults to &lt;CODE&gt;audio/webm; codecs=opus&lt;/CODE&gt;. That's great for size but bad for our STT model, which expects a 16-bit mono PCM WAV at a known sample rate. Decoding WebM/Opus server-side would require &lt;CODE&gt;ffmpeg&lt;/CODE&gt; as a runtime dependency — which is exactly the kind of friction this project exists to remove.&lt;/P&gt;
&lt;P&gt;The cleaner solution is to encode WAV on the client. &lt;CODE&gt;AudioContext.decodeAudioData&lt;/CODE&gt; already understands WebM/Opus, so the page can decode the recording, resample to 16 kHz, mix to mono, and emit a PCM-16 WAV blob in 30 lines of JavaScript:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;// Inside src/static/index.html
async function webmToWav(blob) {
  const ctx = new (window.AudioContext || window.webkitAudioContext)({ sampleRate: 16000 });
  const buf = await ctx.decodeAudioData(await blob.arrayBuffer());
  // Mix to mono
  const ch  = buf.numberOfChannels;
  const mono = new Float32Array(buf.length);
  for (let c = 0; c &amp;lt; ch; c++) {
    const data = buf.getChannelData(c);
    for (let i = 0; i &amp;lt; data.length; i++) mono[i] += data[i] / ch;
  }
  return encodeWav(mono, 16000);
}

function encodeWav(samples, sampleRate) {
  const buffer = new ArrayBuffer(44 + samples.length * 2);
  const view   = new DataView(buffer);
  // RIFF header
  writeStr(view, 0, "RIFF");
  view.setUint32(4, 36 + samples.length * 2, true);
  writeStr(view, 8, "WAVE");
  // fmt chunk
  writeStr(view, 12, "fmt ");
  view.setUint32(16, 16, true);              // PCM chunk size
  view.setUint16(20, 1, true);               // PCM format
  view.setUint16(22, 1, true);               // mono
  view.setUint32(24, sampleRate, true);
  view.setUint32(28, sampleRate * 2, true);  // byte rate
  view.setUint16(32, 2, true);               // block align
  view.setUint16(34, 16, true);              // bits per sample
  // data chunk
  writeStr(view, 36, "data");
  view.setUint32(40, samples.length * 2, true);
  // PCM-16 samples
  let o = 44;
  for (let i = 0; i &amp;lt; samples.length; i++, o += 2) {
    const s = Math.max(-1, Math.min(1, samples[i]));
    view.setInt16(o, s &amp;lt; 0 ? s * 0x8000 : s * 0x7FFF, true);
  }
  return new Blob([view], { type: "audio/wav" });
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now the server's &lt;CODE&gt;/api/transcribe&lt;/CODE&gt; endpoint just writes the bytes to a temp file and hands them to &lt;CODE&gt;transcribe_wav_live()&lt;/CODE&gt; — no audio decoding libraries on the Python side.&lt;/P&gt;
&lt;H2&gt;Wiring it into FastAPI&lt;/H2&gt;
&lt;P&gt;The server (&lt;CODE&gt;src/app.py&lt;/CODE&gt;) is deliberately small. The notable detail is that the same process holds both Foundry Local model handles for its entire lifetime, so there is no warm-up cost per request:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;@app.post("/api/transcribe")
async def transcribe(audio: UploadFile = File(...)):
    data = await audio.read()
    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
        f.write(data); path = f.name
    text = _ai_client.transcribe(path)
    return {"text": text}


@app.post("/api/chat")
async def chat(req: ChatRequest):
    if req.stream:
        return StreamingResponse(
            _sse(_ai_client.stream_completion(req.messages)),
            media_type="text/event-stream",
        )
    return {"text": _ai_client.chat_completion(req.messages)}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Streaming uses Server-Sent Events because they are trivially supported in both &lt;CODE&gt;fetch()&lt;/CODE&gt; and the FastAPI runtime, and they don't require a WebSocket upgrade through any proxy a developer might have in front of &lt;CODE&gt;localhost&lt;/CODE&gt;.&lt;/P&gt;
&lt;H2&gt;What it looks like&lt;/H2&gt;
&lt;P&gt;The repo includes &lt;A href="https://github.com/leestott/fl-nemotron/tree/main/docs/screenshots" target="_blank"&gt;screenshots&lt;/A&gt; of the running UI: a welcome screen with both models loaded, a streamed haiku reply, an inline code block with copy-to-clipboard, and the recording state for the microphone.&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Performance, honestly&lt;/H2&gt;
&lt;P&gt;This is a small-model, CPU-friendly stack. On an Arm64 Surface running the x64 SDK under emulation:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;First model load (cold cache): tens of seconds — downloads ~600 MB for Nemotron and ~400 MB for &lt;CODE&gt;qwen2.5-0.5b&lt;/CODE&gt;.&lt;/LI&gt;
&lt;LI&gt;Subsequent loads (warm cache): a few seconds per model.&lt;/LI&gt;
&lt;LI&gt;End-to-end transcription of a 5-second utterance: well under a second after warm-up.&lt;/LI&gt;
&lt;LI&gt;First chat token from &lt;CODE&gt;qwen2.5-0.5b&lt;/CODE&gt;: typically 200–500 ms; full short reply within 1–2 s.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;On x64 silicon with a recent CPU the numbers improve substantially, and the SDK will pick the best execution provider it finds (CPU / DirectML / CUDA) for each model.&lt;/P&gt;
&lt;H2&gt;Trade-offs to know about&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Model quality.&lt;/STRONG&gt; &lt;CODE&gt;qwen2.5-0.5b&lt;/CODE&gt; is a 500M-parameter model. It is fast and small enough to ship on a laptop, but it is not GPT-4. Swap in &lt;CODE&gt;phi-4-mini&lt;/CODE&gt; or &lt;CODE&gt;mistral-nemo-12b-instruct&lt;/CODE&gt; if you have the RAM and want better reasoning — the wrapper accepts any chat alias in the Foundry Local catalog.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;STT is English-only here.&lt;/STRONG&gt; The current Nemotron streaming model in the catalog is &lt;CODE&gt;...-en-0.6b&lt;/CODE&gt;. Multilingual variants are likely to follow.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Browser microphone needs a real browser.&lt;/STRONG&gt; Headless / automated browsers (Playwright, Puppeteer) deny &lt;CODE&gt;getUserMedia&lt;/CODE&gt; by default. Open the page in Edge / Chrome / Firefox to grant the permission and capture audio for real.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No agent framework yet.&lt;/STRONG&gt; This sample is deliberately a single-turn loop over a chat client — there is no tool calling, planning, or multi-agent orchestration. Adding the &lt;A href="https://learn.microsoft.com/azure/ai-foundry/" target="_blank"&gt;Microsoft Agent Framework&lt;/A&gt; on top would be a natural next step for richer behaviour.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Responsible AI considerations&lt;/H2&gt;
&lt;P&gt;Running locally removes the cloud-egress class of privacy concerns, but it does not remove responsibility:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Disclose recording.&lt;/STRONG&gt; The browser prompts for mic permission; your UI should make it obvious when capture is active. The sample shows a red &lt;CODE&gt;⏹&lt;/CODE&gt; button and a "Recording…" banner for that reason.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Don't log raw audio.&lt;/STRONG&gt; The sample writes audio to a per-request &lt;CODE&gt;NamedTemporaryFile&lt;/CODE&gt; and deletes it after transcription. Treat the WAV as sensitive data even when it never leaves the device.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Small models hallucinate.&lt;/STRONG&gt; A 0.5B chat model is great for snappy local replies, but unsuitable for high-stakes answers. Pair it with retrieval, ground it on your own data, or escalate to a larger model when accuracy matters.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Try it&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Clone &lt;A href="https://github.com/leestott/fl-nemotron" target="_blank"&gt;github.com/leestott/fl-nemotron&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;CODE&gt;./setup.ps1&lt;/CODE&gt; (or &lt;CODE&gt;./setup.sh&lt;/CODE&gt;) to create a virtualenv and install the pinned SDK.&lt;/LI&gt;
&lt;LI&gt;&lt;CODE&gt;python scripts/prefetch.py nemotron-speech-streaming-en-0.6b qwen2.5-0.5b&lt;/CODE&gt; to download both models.&lt;/LI&gt;
&lt;LI&gt;&lt;CODE&gt;.venv\Scripts\uvicorn.exe app:app --app-dir src --port 8000&lt;/CODE&gt;&lt;/LI&gt;
&lt;LI&gt;Open &lt;CODE&gt;http://127.0.0.1:8000&lt;/CODE&gt; in a real browser and click the 🎤 button.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Where to go next&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/azure/ai-foundry/foundry-local/" target="_blank"&gt;Foundry Local documentation&lt;/A&gt; — official docs for the runtime, catalog, and SDK.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/microsoft/Foundry-Local" target="_blank"&gt;microsoft/Foundry-Local&lt;/A&gt; — upstream samples and issue tracker.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://developer.nvidia.com/blog/tag/nemotron/" target="_blank"&gt;NVIDIA Nemotron model family&lt;/A&gt; — background on the speech and language models being published into the catalog.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/leestott/fl-nemotron" target="_blank"&gt;leestott/fl-nemotron&lt;/A&gt; — the full source for this post.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Key takeaways&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Pin &lt;CODE&gt;foundry-local-sdk &amp;gt;= 1.1.0&lt;/CODE&gt;. Earlier SDKs cannot see the Nemotron Speech Streaming model.&lt;/LI&gt;
&lt;LI&gt;Use the &lt;CODE&gt;LiveAudioTranscriptionSession&lt;/CODE&gt; API for Nemotron, not &lt;CODE&gt;AudioClient.transcribe()&lt;/CODE&gt;.&lt;/LI&gt;
&lt;LI&gt;Encode WAV in the browser. It eliminates a heavy server-side ffmpeg dependency for a few lines of JS.&lt;/LI&gt;
&lt;LI&gt;Push audio chunks on a worker thread and drain the response generator on the main one to avoid deadlocks.&lt;/LI&gt;
&lt;LI&gt;A small Foundry Local chat model plus Nemotron STT gives you a credible local voice loop in a single Python process — no cloud, no keys, no data egress.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 26 May 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-an-on-device-voice-assistant-with-microsoft-foundry/ba-p/4522392</guid>
      <dc:creator>Lee_Stott</dc:creator>
      <dc:date>2026-05-26T07:00:00Z</dc:date>
    </item>
    <item>
      <title>Building an End-to-End Azure RAG Strategy Agent with MS Foundry</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-an-end-to-end-azure-rag-strategy-agent-with-ms-foundry/ba-p/4516967</link>
      <description>&lt;H3&gt;&lt;STRONG&gt;High-Level Architecture&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;This architecture represents an end-to-end Retrieval-Augmented Generation (RAG) pipeline where raw documents are ingested from Azure Blob Storage, processed using Document Intelligence, transformed into embeddings via Azure OpenAI, and indexed in Azure AI Search for hybrid retrieval. A Foundry/MAF-based agent orchestrates query processing by combining user input with relevant search results and generates contextual responses, which are exposed through a FastAPI or CLI interface.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;&lt;STRONG&gt;Azure-based RAG Pipeline with Agent-Orchestration&lt;/STRONG&gt;&lt;/img&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This solution is composed of&amp;nbsp;&lt;STRONG&gt;two main layers&lt;/STRONG&gt;:&lt;/P&gt;
&lt;H4&gt;1. Data Ingestion Layer (RAG Pipeline)&lt;/H4&gt;
&lt;P&gt;This layer transforms &lt;STRONG&gt;raw enterprise documents into searchable knowledge&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H5&gt;Flow:&lt;/H5&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Raw documents stored in Azure Blob Storage&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Supported formats: PDF, DOCX, PPTX, images, etc.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&amp;nbsp;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Document Intelligence extraction&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Extracts:
&lt;UL&gt;
&lt;LI&gt;Text&lt;/LI&gt;
&lt;LI&gt;Tables&lt;/LI&gt;
&lt;LI&gt;Key-value pairs&lt;/LI&gt;
&lt;LI&gt;Structure&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Writes output as structured JSON back to Blob (processed/)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;&lt;STRONG&gt;Chunking + Embedding&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Documents are split into chunks&lt;/LI&gt;
&lt;LI&gt;Each chunk is embedded using Azure OpenAI (text-embedding-*)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;&lt;STRONG&gt;Indexing into Azure AI Search&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Creates a &lt;STRONG style="color: rgb(30, 30, 30);"&gt;hybrid index&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;:&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI&gt;Keyword search&lt;/LI&gt;
&lt;LI&gt;Semantic ranking&lt;/LI&gt;
&lt;LI&gt;Vector search&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Enables flexible retrieval strategies&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4&gt;2. Query Layer (Strategy Agents)&lt;/H4&gt;
&lt;P&gt;This layer enables &lt;STRONG&gt;intelligent query answering&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H5&gt;Flow:&lt;/H5&gt;
&lt;OL&gt;
&lt;LI&gt;User sends a query via:
&lt;UL&gt;
&lt;LI&gt;FastAPI endpoint&lt;/LI&gt;
&lt;LI&gt;CLI interface&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;Query is handled by:
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Microsoft Agent Framework (MAF) agent&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Running on &lt;STRONG style="color: rgb(30, 30, 30);"&gt;Azure AI Foundry&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;Agent:
&lt;UL&gt;
&lt;LI&gt;Queries Azure AI Search&lt;/LI&gt;
&lt;LI&gt;Retrieves top relevant chunks&lt;/LI&gt;
&lt;LI&gt;Injects them into LLM prompt&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;LLM generates grounded response
&lt;UL&gt;
&lt;LI&gt;This follows the standard RAG pattern:
&lt;UL&gt;
&lt;LI&gt;Retrieval → Augmentation → Generation&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4&gt;End-to-End Flow&lt;/H4&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Key Azure Services Used&lt;/STRONG&gt;&lt;/H4&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Service&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Purpose&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Blob Storage&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Raw + processed document storage&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure AI Document Intelligence&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Extract structured content&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure OpenAI&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Embeddings + LLM generation&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure AI Search&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Hybrid retrieval engine&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure AI Foundry&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Agent orchestration&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Agent Framework&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Agent execution layer&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Why this Architecture Matters&lt;/H4&gt;
&lt;P&gt;This solution goes beyond basic RAG and provides:&lt;/P&gt;
&lt;H5&gt;Hybrid Retrieval&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Combines keyword + semantic + vector search&lt;/LI&gt;
&lt;LI&gt;Improves recall and accuracy&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Structured Document Parsing&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Handles complex enterprise documents&lt;/LI&gt;
&lt;LI&gt;Extracts tables and metadata&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Agent-Based Orchestration&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Enables reasoning over retrieval results&lt;/LI&gt;
&lt;LI&gt;Extensible for multi-agent workflows&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;Scalable Data Pipeline&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Supports continuous ingestion&lt;/LI&gt;
&lt;LI&gt;Works with large document collections&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&amp;nbsp;Enterprise Considerations&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Use &lt;STRONG&gt;Managed Identity&lt;/STRONG&gt; for secure service access&lt;/LI&gt;
&lt;LI&gt;Apply &lt;STRONG&gt;RBAC on Cosmos DB / Search / Storage&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Enable &lt;STRONG&gt;Private Endpoints&lt;/STRONG&gt; for network isolation&lt;/LI&gt;
&lt;LI&gt;Use &lt;STRONG&gt;Guardrails + Evaluations in Foundry&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Summary&lt;/H4&gt;
&lt;P&gt;This repository demonstrates a &lt;STRONG&gt;production-ready Azure RAG architecture&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ingest → Extract → Chunk → Embed → Index&lt;/LI&gt;
&lt;LI&gt;Retrieve → Reason → Generate&lt;/LI&gt;
&lt;LI&gt;Powered by Azure AI Foundry + Agent Framework&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;By combining &lt;STRONG&gt;data engineering + AI orchestration&lt;/STRONG&gt;, it enables enterprise AI systems that are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Accurate&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Grounded&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Extensible&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Repo: &lt;/STRONG&gt;&lt;A class="lia-external-url" href="http://azure-rag-strategy-agent" target="_blank" rel="noopener"&gt;https://github.com/snd94/azure-rag-strategy-agent&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Please refer to the Microsoft Learn Documentation for further information:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/search/" target="_blank" rel="noopener"&gt;Azure AI Search documentation - Azure AI Search | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/?view=doc-intel-4.0.0" target="_blank" rel="noopener"&gt;Document Intelligence documentation - Quickstarts, Tutorials, API Reference - Foundry Tools | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/embeddings?tabs=csharp" target="_blank" rel="noopener"&gt;How to generate embeddings with Azure OpenAI in Microsoft Foundry Models - Microsoft Foundry | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/embeddings?tabs=csharp" target="_blank" rel="noopener"&gt;How to generate embeddings with Azure OpenAI in Microsoft Foundry Models - Microsoft Foundry | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/agent-framework/overview/?pivots=programming-language-python" target="_blank" rel="noopener"&gt;Microsoft Agent Framework Overview | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/foundry/what-is-foundry?tabs=python" target="_blank"&gt;What is Microsoft Foundry? - Microsoft Foundry | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Mon, 25 May 2026 07:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/building-an-end-to-end-azure-rag-strategy-agent-with-ms-foundry/ba-p/4516967</guid>
      <dc:creator>SHAILESHDEVADIGA</dc:creator>
      <dc:date>2026-05-25T07:00:00Z</dc:date>
    </item>
  </channel>
</rss>

