<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex Pechenizkiy</title>
    <description>The latest articles on DEV Community by Alex Pechenizkiy (@az365ai).</description>
    <link>https://dev.to/az365ai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3969141%2Fb5e3e816-d15e-43d1-9916-2fbc9eed6fd3.jpg</url>
      <title>DEV Community: Alex Pechenizkiy</title>
      <link>https://dev.to/az365ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/az365ai"/>
    <language>en</language>
    <item>
      <title>Microsoft Fabric Apps Are a Distribution Channel, Not a Marketplace: Who Should Build One</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Tue, 21 Jul 2026 15:29:15 +0000</pubDate>
      <link>https://dev.to/az365ai/microsoft-fabric-apps-are-a-distribution-channel-not-a-marketplace-who-should-build-one-4707</link>
      <guid>https://dev.to/az365ai/microsoft-fabric-apps-are-a-distribution-channel-not-a-marketplace-who-should-build-one-4707</guid>
      <description>&lt;p&gt;Most ISV product teams I talk to have filed Microsoft Fabric apps under "marketplace strategy," somewhere between the AppSource listing and the Teams app nobody maintains. That is the wrong mental model, and it will cost some of them their category.&lt;/p&gt;

&lt;p&gt;A workload built with the Fabric Workload Dev Kit is not an add-in bolted to the side of Fabric. It is a native surface that renders beside Lakehouse, Power BI, and Data Factory, inside the tool where the buyer's data team already spends its day. That makes this a distribution decision, and distribution decisions with a lock-in risk attached deserve a real evaluation, not a wait-and-see posture. Here is the framework to make that call in 90 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a Fabric app actually is (and is not)
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://learn.microsoft.com/en-us/fabric/workload-development-kit/development-kit-overview" rel="noopener noreferrer"&gt;Fabric Workload Development Kit&lt;/a&gt;, which went generally available at Ignite 2024, lets you register your own item types in a Fabric tenant. Your workload gets a real presence: items that live in workspaces, a UI that renders inside the Fabric shell, read and write access to OneLake, and authentication that flows through Microsoft Entra ID using on-behalf-of tokens, so your app acts as the signed-in user, not a service account with god rights.&lt;/p&gt;

&lt;p&gt;Be precise about what is automatic and what is not. Discovery through the Workload Hub and rendering in the Fabric shell come with the platform. Entra identity flow, item lifecycle handling, and governance behavior for your custom items are things you implement against the dev kit's contracts. And your backend runs on your own infrastructure. Fabric brokers requests to you; it does not host your compute.&lt;/p&gt;

&lt;p&gt;This is a different animal from everything ISVs have shipped into the Microsoft ecosystem before. A Power BI custom visual is a rendering component. A Teams app is a collaboration surface. An Azure Marketplace SaaS listing is a commerce contract with zero data-plane coupling. A Fabric workload sits in the data plane itself, next to the customer's tables.&lt;/p&gt;

&lt;p&gt;One clarification the "app store" framing blurs: the Workload Hub handles in-product discovery and deployment. Procurement and monetization still run through your own commercial motion or an Azure Marketplace transaction. Fabric solves the "get in front of the buyer inside their tool" problem, not the "collect the check" problem.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The docs undersell the engineering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Workload Dev Kit documentation makes registration look like a configuration exercise. In practice, the frontend/backend contract, item CRUD lifecycle, and job scheduling integration take real engineering time, and the sample workload only covers the happy path. Budget for a proper build, not a hackathon. This is judgment from reading the contracts closely, not a measured estimate; your team's number will vary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The takeaway: this is platform-native software. Evaluate it like a platform bet, with platform-bet diligence, not like another listing to keep fresh.&lt;/p&gt;

&lt;h2&gt;
  
  
  The distribution math behind Microsoft Fabric apps
&lt;/h2&gt;

&lt;p&gt;Enterprise SaaS deals die in two places: procurement and security review. Every data vendor selling into the enterprise knows the ritual. Vendor security questionnaires, data residency reviews, a new DPA, a network architecture diagram for where the customer's data will live.&lt;/p&gt;

&lt;p&gt;Now walk through what a Fabric-native workload changes structurally. The customer's data does not leave their tenant; your workload operates on OneLake data under their existing workspace roles and sensitivity labels. Identity is their Entra ID. The platform relationship already exists under their Microsoft agreement. I will not attach a percentage to how much friction that removes, because nobody has published one and I refuse to invent it. But the logic is hard to argue with: every control the customer already trusts is one review you do not restart from zero. Some reviews remain, because your backend is still your backend, but the surface area shrinks.&lt;/p&gt;

&lt;p&gt;Then there is the crowding question. Microsoft said at Build 2024 that &lt;a href="https://blogs.microsoft.com/blog/2024/05/21/microsoft-build-2024-creating-opportunity-for-the-next-generation-of-developers/" rel="noopener noreferrer"&gt;more than 11,000 organizations use Fabric&lt;/a&gt;, and the number has grown since. Meanwhile the Workload Hub is thin. Microsoft's own &lt;a href="https://blog.fabric.microsoft.com/en-us/blog/" rel="noopener noreferrer"&gt;Ignite 2024 announcement&lt;/a&gt; named a handful of launch partners, including Esri, SAS, Informatica, and Teradata. That is a short list for a platform with that customer base. Compare it to AppSource on day one versus AppSource today.&lt;/p&gt;

&lt;p&gt;I will take the strong position: for data-adjacent ISVs, this is the cheapest enterprise distribution channel Microsoft has offered since AppSource launched. Early entrants get category positioning while the hub has a dozen tiles instead of a thousand. That window closes the way it always does, quietly and then all at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  The OneLake trade: interoperability story, capacity-model reality
&lt;/h2&gt;

&lt;p&gt;Here is where the cheerleading stops, because the trade has real teeth.&lt;/p&gt;

&lt;p&gt;The good half first. Building Fabric-native means your data model lives in &lt;a href="https://learn.microsoft.com/en-us/fabric/onelake/onelake-overview" rel="noopener noreferrer"&gt;Delta Lake tables on OneLake&lt;/a&gt;, open Parquet under the hood. That is a genuinely strong OneLake ISV integration story: the customer keeps one copy of their data, in an open format, readable by every engine in their estate and by yours. No proprietary storage tier, no export pipeline, no "your data is in our cloud now" conversation. For customers burned by data silos, this is the single best sales argument a Fabric workload has. I have written before about how OneLake shortcuts change data architecture, and the same zero-copy logic works in the ISV's favor.&lt;/p&gt;

&lt;p&gt;Now the cage. Your cost of goods becomes entangled with Microsoft's capacity unit model. Fabric compute is billed in CUs across F SKUs; published list pricing puts an F64 at roughly $11.52 per hour pay-as-you-go, region dependent, per the &lt;a href="https://azure.microsoft.com/en-us/pricing/details/microsoft-fabric/" rel="noopener noreferrer"&gt;Azure Fabric pricing page&lt;/a&gt;, with reservations meaningfully cheaper. Those are Microsoft's prices to change, and Microsoft's smoothing and throttling behavior to define. If your margin model assumed compute costs you control on infrastructure you tune, you just gave away a lever.&lt;/p&gt;

&lt;p&gt;The second risk is sharper: Microsoft ships first-party workloads aggressively. If your feature is adjacent to something on the Fabric roadmap, you can be commoditized in a single release wave. Ingestion, transformation, and basic BI are already spoken for. Your IP survives only if it lives above the storage substrate: domain logic, vertical data models, proprietary ML, regulated workflows Microsoft will not build.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prototype CU behavior before you price anything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CU consumption under real customer load is hard to predict from documentation alone. Background jobs, smoothing windows, and interactive spikes behave differently than the pricing table implies. Run a representative workload against a trial capacity and measure before you commit to a pricing model. Any modeling you do before that is illustrative; calibrate against actuals.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The takeaway: name the cage risk in your board deck, in the same slide as the distribution upside. Not after you have signed customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should build Microsoft Fabric custom workloads
&lt;/h2&gt;

&lt;p&gt;Fit is not about whether your team can technically build against the dev kit. Almost any competent platform team can. Fit is about where your product's gravity lives: if your value compounds by sitting next to the customer's OneLake data, the channel works for you; if it does not, you are renting expensive real estate in someone else's mall.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Strong fit: build&lt;/th&gt;
&lt;th&gt;Weak fit: skip&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product gravity&lt;/td&gt;
&lt;td&gt;Value increases next to customer data: observability, data quality, MDM, industry analytics&lt;/td&gt;
&lt;td&gt;Value is independent of where the data sits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Buyer base&lt;/td&gt;
&lt;td&gt;Data teams already living in the Microsoft stack&lt;/td&gt;
&lt;td&gt;Multi-cloud-neutral buyers, or a promise of cloud neutrality you cannot break&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compute economics&lt;/td&gt;
&lt;td&gt;Analytics-shaped workloads that map to CU consumption&lt;/td&gt;
&lt;td&gt;GPU-heavy, custom silicon, or margin models that need infrastructure control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency profile&lt;/td&gt;
&lt;td&gt;Batch and interactive analytics&lt;/td&gt;
&lt;td&gt;Sub-second transactional paths where Delta and Parquet fight you&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP position&lt;/td&gt;
&lt;td&gt;Domain logic and models above the storage layer&lt;/td&gt;
&lt;td&gt;Features adjacent to ingestion, transformation, or basic BI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roadmap exposure&lt;/td&gt;
&lt;td&gt;Vertical or regulated capability Microsoft is unlikely to build&lt;/td&gt;
&lt;td&gt;Horizontal feature one Fabric release away from first-party&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Strong-fit categories are the ones the launch partner list already hints at: observability over the data estate, data quality and master data management, geospatial and industry analytics. Anything where the pitch is "we do more because we can see your actual tables, governed, in place."&lt;/p&gt;

&lt;p&gt;Weak fit is just as clear. Transactional cores, sub-second serving, GPU-heavy inference where Fabric's compute model does not match your economics, and any product whose buyers are not Microsoft-centric.&lt;/p&gt;

&lt;p&gt;Here is my opinionated heuristic, explicitly a rule of thumb and not a measured threshold: if fewer than roughly a third of your sales pipeline runs on the Microsoft data stack, skip Fabric-native for now and revisit in a year. Below that line, the workload becomes a side bet your roadmap subsidizes, and side bets on platform channels rot fast.&lt;/p&gt;

&lt;p&gt;Where your product's gravity lives decides this. Not what your engineers can build.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI angle Microsoft is underselling
&lt;/h2&gt;

&lt;p&gt;Everything above treats the buyer as a human opening a workload in a browser. That framing is already aging.&lt;/p&gt;

&lt;p&gt;Because Fabric workloads operate on governed Delta tables in OneLake, they are addressable by the AI experiences Microsoft is building over the tenant's estate. Copilot in Fabric and &lt;a href="https://learn.microsoft.com/en-us/fabric/fundamentals/copilot-fabric-overview" rel="noopener noreferrer"&gt;Fabric data agents&lt;/a&gt; reason over exactly the data layer a native workload plugs into, no custom connectors, no separate semantic export. Verify the preview versus GA status of specific agent features before you build against them; they move quarterly.&lt;/p&gt;

&lt;p&gt;Here is the forward-looking argument, and I label it as such because nobody can cite the future: the long-term prize is being the workload an agent calls, not the dashboard a human opens. App-store dynamics repeat with a new user. When an agent orchestrating over a tenant's data estate needs a data quality score, an entity resolution, or a vertical risk model, it will call whatever capability is registered, governed, and adjacent to the data. Workloads outside the estate do not get the call.&lt;/p&gt;

&lt;p&gt;Do not build against specific agent APIs today; treat them as unstable. Build the durable position instead: your data in open Delta format, your operations exposed as governed items, your value legible to whatever orchestrates over the estate next.&lt;/p&gt;

&lt;p&gt;Position your workload as agent-ready data plus actions, and you are early to the next distribution shift instead of reacting to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 90-day evaluation framework
&lt;/h2&gt;

&lt;p&gt;One engineer-quarter buys you an evidence-based decision. Being late to a platform channel costs a market position. That is the whole cost-benefit.&lt;/p&gt;

&lt;p&gt;Define the kill criteria before day one, in writing: the bet dies if CU economics break your margin model, or if your buyers are demonstrably not in Fabric. Everything else is noise.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Days 1 to 30: prototype against the dev kit&lt;/strong&gt; Build a thin vertical slice with the Fabric Workload Dev Kit: one item type, real Entra on-behalf-of auth, real OneLake reads and writes against a sample workload. The goal is not a demo. The goal is to surface the frontend/backend contract work and lifecycle handling the docs gloss over, so your effort estimate is grounded in your codebase, not Microsoft's sample.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Days 31 to 60: model CU economics against your current spend&lt;/strong&gt; Run representative load on a trial capacity and measure CU consumption, then model customer-scale costs using published Fabric list pricing. Treat every number as illustrative until you have actuals; industry-standard inputs are a starting point, and your workload shape will move the answer. Compare the result against your current cloud COGS and your pricing floor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Days 61 to 90: pressure-test with three design partners&lt;/strong&gt; Take the prototype to three customers or prospects who run Fabric today. Ask two questions: would they deploy your workload inside their tenant instead of your SaaS, and does inherited governance actually shorten their review process for a vendor like you. Their answers tell you whether Fabric-native is a channel or a cage for your product specifically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the cost-modeling leg, I have covered modeling Fabric capacity costs in more depth, including where smoothing and background jobs distort naive per-hour math.&lt;/p&gt;

&lt;p&gt;A 90-day timebox is cheap insurance. Skipping the timebox is the expensive option, whichever way the decision goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decide on Microsoft Fabric apps this quarter
&lt;/h2&gt;

&lt;p&gt;Build if your product's gravity is in the customer's data estate, where governed adjacency to OneLake makes your product better and the Workload Hub is still thin enough to own a category tile. Skip loudly if it is not, and put the revisit date in the calendar rather than letting the default decide for you.&lt;/p&gt;

&lt;p&gt;Microsoft Fabric apps are a channel or a cage, and for your product they are exactly one of the two. You can find out which one in 90 days. The vendors who treat that as optional will find out from their competitors' launch posts instead.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/microsoft-fabric-apps/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildbuy</category>
    </item>
    <item>
      <title>Foundry Hosted vs In-Process vs Copilot Studio Agents (2026 Decision)</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Mon, 20 Jul 2026 15:46:15 +0000</pubDate>
      <link>https://dev.to/az365ai/foundry-hosted-vs-in-process-vs-copilot-studio-agents-2026-decision-2ek1</link>
      <guid>https://dev.to/az365ai/foundry-hosted-vs-in-process-vs-copilot-studio-agents-2026-decision-2ek1</guid>
      <description>&lt;p&gt;A team lead asks the question in a planning meeting and the room splits three ways: do we build this agent in Copilot Studio, write the orchestration ourselves and host it, or hand our container to Foundry and let it run our code? All three are official Microsoft build paths in 2026, all three end up in the same tenant-wide agent inventory, and the wrong pick costs you a rebuild once the project outgrows it.&lt;/p&gt;

&lt;p&gt;The answer is not "the most powerful one." It is the one whose service model matches who is building the agent, who owns the runtime, and how much pro-code control over orchestration and protocols you actually need. This article is the decision framework for that choice, grounded in Microsoft Learn and current as of mid-2026.&lt;/p&gt;

&lt;p&gt;Two of these three paths are public preview, so this is a guide to architectural fit and direction, not a production-reliability scorecard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Three build paths, picked by service model, not power.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copilot Studio:&lt;/strong&gt; low-code managed SaaS for makers. GA.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foundry Hosted agents:&lt;/strong&gt; managed PaaS runtime for your own container. Public preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft 365 Agents SDK:&lt;/strong&gt; pro-code, self-hosted, widest channel reach. Agent Framework orchestrator in public preview.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Monday move:&lt;/strong&gt; before picking a platform, write down four things for this agent - who builds it (maker or pro-dev), who must own the compute, what channels it has to reach, and whether you need custom protocols or background/async behavior. Those four answers pick the path more reliably than a feature checklist.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The three paths in one paragraph each
&lt;/h2&gt;

&lt;p&gt;Microsoft's own Cloud Adoption Framework frames the build options as three service tiers, which is the cleanest mental model to start from. &lt;a href="https://learn.microsoft.com/azure/cloud-adoption-framework/ai-agents/technology-solutions-plan-strategy" rel="noopener noreferrer"&gt;The CAF positions them&lt;/a&gt; as Copilot Studio (SaaS, no/low-code), Microsoft Foundry (PaaS, pro-code or low-code), and GPUs and Containers (IaaS, code-first frameworks for maximum flexibility). The first two are managed by Microsoft. The third is where the self-hosted SDK path lives when you own the compute end to end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot Studio&lt;/strong&gt; is a graphical, low-code tool for building agents and agent flows, part of the Power Platform set. &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/fundamentals-what-is-copilot-studio" rel="noopener noreferrer"&gt;Microsoft describes it&lt;/a&gt; as a fully managed SaaS platform where makers focus on agent experiences without worrying about infrastructure, hosting, or governance. It connects to data via prebuilt or custom connectors, can run standalone, and can extend Microsoft 365 Copilot with enterprise data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foundry Hosted agents&lt;/strong&gt; are the middle path. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/overview" rel="noopener noreferrer"&gt;Foundry Agent Service&lt;/a&gt; is a managed platform for building, deploying, and scaling agents, and it offers two agent types: Prompt agents (fully managed, no code or compute to maintain) and Hosted agents (your own containerized code, run by Foundry with a managed endpoint, scaling, identity, and observability). Hosted agents are the option that interests pro-dev teams who want to keep their orchestration code but not run the servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Microsoft 365 Agents SDK&lt;/strong&gt; is the self-hosted, pro-code path. &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/create-deploy-agents-sdk" rel="noopener noreferrer"&gt;It lets developers build custom engine agents&lt;/a&gt; using the AI stack of their choice and deploy them to Microsoft 365 Copilot. It is model- and orchestrator-agnostic and can surface agents across Microsoft 365 Copilot, Teams, third-party platforms, custom applications, and websites. The trade is that you host the orchestration process yourself.&lt;/p&gt;

&lt;p&gt;A note before the comparison, because the brief flagged it as an open question: Foundry also offers Prompt agents, the fully-managed no-code-runtime option inside the same Agent Service. This article treats the three build paths the title names. Prompt agents are a separate managed option within Foundry Agent Service, and if you do not need custom code at all, they sit alongside Copilot Studio as a low-effort choice rather than competing with the Hosted path.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "in-process" actually means here
&lt;/h2&gt;

&lt;p&gt;"In-process" is the part of this comparison that trips people up, so it is worth pinning down. In-process here means the Microsoft 365 Agents SDK self-hosted path. It refers to running the agent's orchestration inside a process you own and host, rather than handing a container to Foundry or building declaratively in Copilot Studio. Two pieces matter.&lt;/p&gt;

&lt;p&gt;The first is the host. With the Microsoft 365 Agents SDK, &lt;a href="https://learn.microsoft.com/microsoft-365/agents-sdk/using-semantic-kernel-agent-framework" rel="noopener noreferrer"&gt;your Program.cs manages hosting&lt;/a&gt; (for example an ASP.NET host in C#), registers storage (the samples use Memory Storage, switchable to Blob or Cosmos DB for production), and routes the &lt;code&gt;api/messages&lt;/code&gt; endpoint. You provision and pay for that compute, typically on Azure, separately from the agent itself.&lt;/p&gt;

&lt;p&gt;The second is the orchestrator that runs inside that host. Both &lt;a href="https://learn.microsoft.com/microsoft-365/agents-sdk/using-semantic-kernel-agent-framework" rel="noopener noreferrer"&gt;Semantic Kernel and the Microsoft Agent Framework&lt;/a&gt; can be the orchestrator inside an Agents SDK agent. &lt;a href="https://learn.microsoft.com/semantic-kernel/frameworks/agent/agent-orchestration/" rel="noopener noreferrer"&gt;Semantic Kernel&lt;/a&gt; implements orchestration patterns directly in the SDK (Concurrent, Sequential, Handoff, Group Chat, Magentic) and ships an in-process runtime via the &lt;code&gt;Microsoft.SemanticKernel.Agents.Runtime.InProcess&lt;/code&gt; package. That literal "InProcess" runtime is where the term comes from.&lt;/p&gt;

&lt;p&gt;The useful detail for planning: &lt;a href="https://learn.microsoft.com/agent-framework/overview/" rel="noopener noreferrer"&gt;the Microsoft Agent Framework&lt;/a&gt; is the direct successor to Semantic Kernel and AutoGen, built by the same teams. It combines AutoGen's agent abstractions with Semantic Kernel's enterprise features and adds graph-based workflows for explicit multi-agent orchestration, in C# and Python public preview. The same Agent Framework code can run inside your own process today and be packaged as a Foundry Hosted agent later. &lt;a href="https://learn.microsoft.com/agent-framework/hosting/foundry-hosted-agent" rel="noopener noreferrer"&gt;The hosting integration&lt;/a&gt; lets you take any Agent or workflow and expose it through the Foundry Responses or Invocations protocol, deploying it as a containerized Hosted agent; for C# you install the &lt;code&gt;Microsoft.Agents.AI.Foundry.Hosting&lt;/code&gt; and &lt;code&gt;Azure.AI.Projects&lt;/code&gt; NuGet packages.&lt;/p&gt;

&lt;p&gt;That last point reframes the whole decision. In-process self-hosted and Foundry Hosted are not opposite ends of a religious war. They can be the same orchestration code with a different runtime owner. That makes "start in-process, graduate to Hosted" a real migration path rather than a rewrite, and it lowers the stakes of getting the first call slightly wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Foundry Hosted agents actually run
&lt;/h2&gt;

&lt;p&gt;If you have not deployed one, the Hosted agent runtime model is worth understanding because it drives several decisions below. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;Foundry Hosted agents are containerized agentic applications&lt;/a&gt;: you package your agent as a container image, push it to Azure Container Registry, and at deploy time Agent Service pulls the image, provisions compute, assigns a dedicated Microsoft Entra ID agent identity, and exposes a dedicated endpoint. The platform handles scaling, session state persistence, observability, and lifecycle management.&lt;/p&gt;

&lt;p&gt;The runtime is per-session and sandboxed. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;Hosted agents run in per-session VM-isolated sandboxes&lt;/a&gt; with a persistent filesystem (&lt;code&gt;$HOME&lt;/code&gt; and &lt;code&gt;/files&lt;/code&gt;), which enables scale-to-zero with stateful resume. The design intent is short-lived idle sessions that suspend cheaply, with a hard session lifetime ceiling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hosted runtime specs at a glance&lt;/strong&gt; (preview defaults, re-verify before sizing). &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;From the Hosted agents concepts doc&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sandbox sizes: 0.5 vCPU / 1 GiB, 1 vCPU / 2 GiB, or 2 vCPU / 4 GiB&lt;/li&gt;
&lt;li&gt;Session idle timeout: 15 minutes&lt;/li&gt;
&lt;li&gt;Session lifetime: permanently deleted after 30 days of inactivity&lt;/li&gt;
&lt;li&gt;Concurrency: default 50 maximum active concurrent sessions per subscription per region (adjustable via Microsoft Support)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bring-your-own framework is the headline. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;Hosted agents let you bring your own code in any framework&lt;/a&gt; - Microsoft Agent Framework, LangGraph, Semantic Kernel, OpenAI Agents SDK, Anthropic Agent SDK, GitHub Copilot SDK, or custom code (the last three via the Invocations protocol bridge). Language support is Python and C#, and the protocol libraries are framework-agnostic. If your team has standardized on LangGraph, you do not have to abandon it to get a managed Microsoft runtime.&lt;/p&gt;

&lt;p&gt;Tools are opt-in, not automatic. Hosted agents reach &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;Foundry-managed tools&lt;/a&gt; (Code Interpreter, Web Search, Azure AI Search, OpenAPI, custom MCP connections, A2A) through a Toolbox MCP endpoint provisioned in the project. The agent code connects to this endpoint using standard MCP client libraries, and the platform does not inject tools automatically. That is a deliberate design choice: you wire the tools you want rather than inheriting a fixed set, which is closer to how a code-first developer expects to work.&lt;/p&gt;

&lt;p&gt;A few constraints to put in the architecture doc. Hosted agents are &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;in public preview, billed on consumption&lt;/a&gt; of CPU and memory during active sessions plus per-call inference and tool usage. They support &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;deployment within network-isolated Foundry resources&lt;/a&gt; and can use a customer-provided Azure Virtual Network for outbound traffic, but the Azure Container Registry holding the image must currently remain reachable over its public endpoint. If a fully air-gapped registry is a hard requirement today, that is a gap to confirm against current docs before committing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The side-by-side comparison
&lt;/h2&gt;

&lt;p&gt;This is the load-bearing table. Read it by dimension, not by column. The cross-links referenced in these rows live in the body and Read Next sections, not in the cells.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Copilot Studio&lt;/th&gt;
&lt;th&gt;Foundry Hosted agents&lt;/th&gt;
&lt;th&gt;M365 Agents SDK (in-process / self-hosted)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Service model (CAF)&lt;/td&gt;
&lt;td&gt;SaaS, no/low-code&lt;/td&gt;
&lt;td&gt;PaaS, managed runtime (preview)&lt;/td&gt;
&lt;td&gt;Self-hosted; you own and provision the compute (App Service, Container Apps, or your own host)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who builds it&lt;/td&gt;
&lt;td&gt;Makers, low-code, no developers required&lt;/td&gt;
&lt;td&gt;Pro-dev (Python or C#)&lt;/td&gt;
&lt;td&gt;Pro-dev (C#, JavaScript, or Python)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tooling&lt;/td&gt;
&lt;td&gt;Copilot Studio web app, drag-and-drop and natural language&lt;/td&gt;
&lt;td&gt;Container image to ACR, azd provision/deploy&lt;/td&gt;
&lt;td&gt;VS / VS Code with Microsoft 365 Agents Toolkit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who owns the runtime&lt;/td&gt;
&lt;td&gt;Microsoft (fully managed)&lt;/td&gt;
&lt;td&gt;Microsoft runs your container&lt;/td&gt;
&lt;td&gt;You host the orchestration process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orchestration control&lt;/td&gt;
&lt;td&gt;Fixed managed orchestrator&lt;/td&gt;
&lt;td&gt;Bring your own orchestrator, full code control&lt;/td&gt;
&lt;td&gt;Bring your own orchestrator, full code control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Framework / model choice&lt;/td&gt;
&lt;td&gt;Managed models plus optional Azure AI integration&lt;/td&gt;
&lt;td&gt;Any framework; Foundry model catalog&lt;/td&gt;
&lt;td&gt;Model- and orchestrator-agnostic, any model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime specifics&lt;/td&gt;
&lt;td&gt;No infrastructure to manage&lt;/td&gt;
&lt;td&gt;Per-session VM-isolated sandboxes, scale-to-zero, 15-min idle, 30-day session lifetime&lt;/td&gt;
&lt;td&gt;ASP.NET host, storage you choose (Memory/Blob/Cosmos DB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identity&lt;/td&gt;
&lt;td&gt;Automatic Entra Agent ID, cannot bring your own&lt;/td&gt;
&lt;td&gt;Dedicated Entra agent identity per agent, automatic at deploy&lt;/td&gt;
&lt;td&gt;Activity Protocol, Entra plus Agent 365 agentic identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance surface&lt;/td&gt;
&lt;td&gt;Power Platform admin center, DLP, Purview, ALM&lt;/td&gt;
&lt;td&gt;Azure RBAC, content safety/XPIA, App Insights, BYO VNet&lt;/td&gt;
&lt;td&gt;Your own Azure controls plus Agent 365&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distribution / channels&lt;/td&gt;
&lt;td&gt;Web, mobile, Teams, Bot Service channels, M365 Copilot&lt;/td&gt;
&lt;td&gt;Custom endpoints plus M365 Copilot and Teams natively&lt;/td&gt;
&lt;td&gt;M365 Copilot, Teams, partner, mobile, web (widest reach of the three)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extensibility / tools&lt;/td&gt;
&lt;td&gt;Prebuilt + custom connectors, agent flows, MCP via connectors&lt;/td&gt;
&lt;td&gt;Toolbox MCP endpoint, Foundry tool catalog, A2A&lt;/td&gt;
&lt;td&gt;Bring your own tools; Teams SDK v2 adds A2A and MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maturity&lt;/td&gt;
&lt;td&gt;GA&lt;/td&gt;
&lt;td&gt;Public preview&lt;/td&gt;
&lt;td&gt;SDK; Agent Framework orchestrator in public preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Fast departmental/enterprise agents without dev resources&lt;/td&gt;
&lt;td&gt;Custom code and orchestration with Microsoft-run infra&lt;/td&gt;
&lt;td&gt;Fine-grained model/orchestrator control, widest channel reach&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few cells deserve the prose that does not fit in a table cell.&lt;/p&gt;

&lt;p&gt;On governance, all three paths converge in one place. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/agent-identity" rel="noopener noreferrer"&gt;Foundry, Copilot Studio, and other Microsoft agents surface in a single tenant-wide inventory&lt;/a&gt;: administrators view and govern them under Microsoft Entra admin center, Entra ID, Agent ID, All agent identities, where they can apply Conditional Access, Identity Protection, network access controls, and lifecycle governance. All three land in one shared Entra identity inventory you can see in one place, even though each platform keeps its own governance control plane. Shared visibility is not a unified control plane.&lt;/p&gt;

&lt;p&gt;On channels, the practical difference is reach versus native simplicity. &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/overview-custom-engine-agent" rel="noopener noreferrer"&gt;In Microsoft's custom-engine-agent comparison&lt;/a&gt;, the Agents SDK reaches Microsoft 365 Copilot, Teams, partner apps, mobile apps, and custom websites, while Foundry reaches Microsoft 365 Copilot and Teams natively, with other channels requiring custom integration. Copilot Studio agents &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/copilot-studio-experience" rel="noopener noreferrer"&gt;can run across websites, mobile apps, Facebook, Microsoft Teams, or any channel supported by the Azure Bot Service&lt;/a&gt;, and can be published to Microsoft 365 Copilot. If your distribution requirement is "everywhere our customers are," the SDK and Copilot Studio reach further than Foundry's native channels.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you choose between Foundry Hosted, in-process, and Copilot Studio?
&lt;/h2&gt;

&lt;p&gt;Run four gates in order and take the first hard answer: Gate 1 is who builds it (no coder means Copilot Studio), Gate 2 is who owns the compute (must own it means self-hosted SDK), Gate 3 is your code on managed infra (yes means Foundry Hosted), and Gate 4 resolves channels and protocols. Skip the feature checklist on the first pass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gate 1 - Who is building this, and do they write code?&lt;/strong&gt; If the builder is a business maker or analyst with no developers attached, the answer is Copilot Studio. &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/copilot-studio-experience" rel="noopener noreferrer"&gt;It is explicitly for makers&lt;/a&gt; building departmental, organizational, or external-customer agents with multi-step workflows, approvals, branching, autonomous capabilities, and Azure AI integration, all without code. If you do not have pro-dev capacity and the use case fits connectors and flows, stop here. You do not need Foundry or the SDK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gate 2 - Must you own the compute?&lt;/strong&gt; If a hard requirement (a data-residency mandate, an existing hosting estate, a need to run inside a network boundary that Foundry's container registry constraint cannot meet) forces you to own the runtime, the Microsoft 365 Agents SDK self-hosted path is the answer. You bring your own orchestrator, host it yourself, and accept that you are &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/overview-custom-engine-agent" rel="noopener noreferrer"&gt;responsible for compliance, security, and responsible AI of the hosted runtime&lt;/a&gt;. This is the most control and the most operational burden.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gate 3 - Do you want your own code but not your own servers?&lt;/strong&gt; If you have orchestration logic to write but no appetite to run the infrastructure, Foundry Hosted agents are the fit. You containerize the code, push to ACR, and Foundry handles scaling, identity, observability, and lifecycle. This is the path for a team that has outgrown Copilot Studio's fixed orchestrator but does not want to operate a 24/7 host.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gate 4 - What is your channel and protocol requirement?&lt;/strong&gt; If you need to reach the most surfaces (partner apps, mobile, arbitrary websites, the widest reach of the three) the Agents SDK reaches furthest. If you need custom protocols (webhooks, voice, AG-UI), background or async behavior, or agent-to-agent delegation, Foundry Hosted or self-hosted SDK beat Copilot Studio, which is strongest at connector-driven, conversational, in-Microsoft-365 scenarios. If your target is Microsoft 365 Copilot and Teams specifically, all three reach there, so this gate does not decide it; fall back to Gates 1 through 3.&lt;/p&gt;

&lt;p&gt;For an enterprise platform plan, two trade-offs sit underneath these gates. The first is effort versus control: lowest effort and least pro-code control with Copilot Studio, managed code on Microsoft-run infrastructure with Foundry Hosted, and highest control with full ownership of compute on the self-hosted SDK. The second is maturity. Copilot Studio is GA. Foundry Hosted agents are public preview, and the Microsoft Agent Framework is public preview. For a workload you are putting into production this quarter, weigh "GA today" against "the right long-term runtime that is still in preview" honestly, and design the migration path either way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Identity and governance: where the paths quietly differ
&lt;/h2&gt;

&lt;p&gt;Identity is the dimension most teams underweight and then regret. All three paths get an Entra agent identity, but how much you control it differs.&lt;/p&gt;

&lt;p&gt;Copilot Studio takes the automatic route with no override. &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/requirements-certificates-configuration-values" rel="noopener noreferrer"&gt;Agents created in Copilot Studio can be configured to automatically receive a Microsoft Entra agent identity&lt;/a&gt;, an Entra service principal with an "Agent" subtype, when enabled at the Power Platform environment level. The constraint to note: Copilot Studio requires automatic management and does not allow bringing your own Agent ID or app registration. If your security model depends on pre-provisioning specific app registrations, that is a real limitation.&lt;/p&gt;

&lt;p&gt;Foundry Hosted agents also automate identity but expose more of it to your code. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/hosted-agents" rel="noopener noreferrer"&gt;Every Hosted agent gets its own dedicated Microsoft Entra agent identity and dedicated endpoint&lt;/a&gt;, both created automatically at deploy time. When integrated via Microsoft 365 channels it can use OAuth 2.0 On-Behalf-Of for user-invoked scenarios or its own agent identity for autonomous or background scenarios. &lt;a href="https://learn.microsoft.com/azure/foundry/agents/concepts/agent-identity" rel="noopener noreferrer"&gt;Foundry agent identities support both attended (OBO, delegated) and unattended (client-credentials, application-only) authentication&lt;/a&gt;, with an automatic multi-step OAuth token exchange between Agent Service, Entra ID, and the downstream resource. The tools that currently support agent-identity authentication are MCP and Agent-to-Agent. That attended/unattended split is the architecturally important part: it is what lets one Hosted agent act as a user in a chat and as itself in a background job.&lt;/p&gt;

&lt;p&gt;On the governance surface, the platforms diverge by design. &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/copilot-studio-experience" rel="noopener noreferrer"&gt;Copilot Studio agents are governed through the Power Platform admin center&lt;/a&gt; with environment-level data loss prevention, role-based access, auditing, connector governance, ALM across dev/test/prod, and compliance via Microsoft Purview; publishing to an organization's app catalog requires admin approval. Foundry's enterprise capabilities, by contrast, &lt;a href="https://learn.microsoft.com/azure/foundry/agents/overview" rel="noopener noreferrer"&gt;include dedicated Entra agent identity, private networking, Azure RBAC, content safety guardrails that mitigate prompt injection including cross-prompt injection (XPIA), end-to-end tracing with Application Insights, and publishing to Microsoft 365 Copilot, Teams, and the Entra Agent Registry&lt;/a&gt;. Same destination inventory, different control planes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Decide governance first&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Power Platform admin governs the Copilot Studio fleet; an Azure platform team governs the Foundry fleet. Decide who owns governance before you decide the platform, because the platform choice assigns the governance team.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One more useful convergence point: Copilot Studio custom engine agents &lt;a href="https://learn.microsoft.com/microsoft-agent-365/builder/overview" rel="noopener noreferrer"&gt;integrate automatically with Agent 365&lt;/a&gt; - an Agent ID is created automatically, the agent appears in the agent registry automatically, agents are pre-approved via Power Platform admin policies, and telemetry flows to the Agent 365 observability backend automatically. If you want the lowest-friction path to a governed, registered, observable agent, the low-code option does that wiring for you. The pro-code paths give you more control and ask you to wire more yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensibility: tools and MCP across the three
&lt;/h2&gt;

&lt;p&gt;Tooling is where the platforms feel most different day to day.&lt;/p&gt;

&lt;p&gt;Copilot Studio extends agents through &lt;a href="https://learn.microsoft.com/microsoft-copilot-studio/agent-extend-action-mcp" rel="noopener noreferrer"&gt;Power Platform connectors&lt;/a&gt; (hundreds of prebuilt plus custom/REST connectors), agent flows, and Model Context Protocol servers. Each connected MCP server appears as a tool offering its MCP tools and resources. Two details matter for governance: using MCP requires turning on generative orchestration, and MCP connectivity rides on Power Platform connectors, so the same DLP data policies that regulate connectors also regulate MCP access. That is a feature, not a bug, for a regulated org: your existing connector governance automatically covers your agent's MCP tools.&lt;/p&gt;

&lt;p&gt;Foundry Hosted agents take the opposite stance: nothing is automatic, everything is explicit. Tools come through the Toolbox MCP endpoint and you consume them with standard MCP client libraries. That is more setup and more control. It also means your tool layer is portable, since it speaks plain MCP rather than a platform-specific connector model.&lt;/p&gt;

&lt;p&gt;The Agents SDK leaves tools entirely to you. You bring your own, and the &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/overview-custom-engine-agent" rel="noopener noreferrer"&gt;Teams SDK v2 adds A2A and MCP&lt;/a&gt; while the Agent Framework adds graph-based multi-agent workflows. If your agent's value is a bespoke set of internal tools that no connector covers, the SDK and Foundry Hosted both let you build them; Copilot Studio asks you to wrap them as connectors first.&lt;/p&gt;

&lt;p&gt;This maps onto a pattern worth internalizing if you are building agents that should survive a vendor rotation: keeping tools and orchestration portable is exactly the discipline behind LLM-agnostic agent design, and the MCP-everywhere direction across all three platforms makes that easier than it was a year ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it breaks: caveats and the honest limits
&lt;/h2&gt;

&lt;p&gt;Strong opinions, with the practitioner caveats attached.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preview is preview.&lt;/strong&gt; Foundry Hosted agents are public preview and the Microsoft Agent Framework is public preview. Limits and behaviors change. The runtime numbers in the specs list above (concurrency, idle timeout, session lifetime) are preview defaults as of mid-2026; re-check them before you size capacity, and assume the public-endpoint requirement on Azure Container Registry could shift. Just as important, no independent operational reliability signal yet exists for Hosted agents in production, so in my read you should weight this path as architectural direction, not proven reliability. Do not write a production runbook against preview numbers without a "verify current docs" line in it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "graduate later" path is real but not free.&lt;/strong&gt; Yes, the same Agent Framework code can run in-process and later be repackaged as a Foundry Hosted container. That lowers the cost of starting in-process. It does not make the move a no-op: you still take on container packaging, ACR, the Toolbox MCP wiring for tools, and a different identity and networking model. Plan it as a migration with a test pass, not a checkbox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot Studio's ceiling is real.&lt;/strong&gt; It is the fastest path and the right one for a large class of agents. But it is &lt;a href="https://learn.microsoft.com/microsoft-365/copilot/extensibility/declarative-agent-tool-comparison" rel="noopener noreferrer"&gt;weaker at deep pro-code control&lt;/a&gt; over API calls, orchestration, and response formatting, its pro-dev tooling (source control, CI/CD, native Git) is less integrated than the project-based Agents Toolkit, and it supports Adaptive Cards schema 1.6 and earlier. The actual "outgrows Copilot Studio" failure mode, in my experience, is not a missing feature but orchestration reliability: as the instructions and the tool catalog grow, the managed orchestrator's behavior gets harder to keep predictable, and that ceiling shows up well before you hit any documented limit. If you can see the agent needing custom orchestration or bespoke response shaping within a year, starting low-code can become a rebuild. That is the most common expensive mistake in this decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Foundry's networking has a sharp edge today.&lt;/strong&gt; Hosted agents support BYO VNet for outbound traffic, but the container registry must currently remain reachable over its public endpoint. For a strict zero-public-endpoint mandate, that is a blocker until it changes. Confirm against current docs rather than assuming it has been lifted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maturity claims need dates.&lt;/strong&gt; As of mid-2026, Copilot Studio is GA and the other two paths have preview components. Microsoft's pace here is fast, so treat the GA/preview status as a snapshot, not a permanent fact, and re-verify before a go/no-go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing is not in scope here.&lt;/strong&gt; Foundry Hosted agents bill on container compute during active sessions plus inference and tool usage, but the exact rates live on the Foundry pricing page rather than in the Learn docs cited here, and they were not retrieved for this article. Do not build a cost model from the qualitative description above; pull current pricing before you commit budget.&lt;/p&gt;

&lt;p&gt;What you can reason about without rates is the shape of each cost. Copilot Studio bills on capacity or per-message, so cost tracks usage volume. Foundry Hosted is consumption on the active session and is cheap when idle because it scales to zero. The self-hosted SDK path is fixed 24/7 compute that you pay for whether the agent is busy or not, which is the operational weight behind the Gate 3 line about a team that "does not want to operate a 24/7 host." This is the author's framing, not a quoted price; confirm the actual numbers on the current pricing pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which agent build path should you pick?
&lt;/h2&gt;

&lt;p&gt;The decision is less about which platform is most capable and more about matching the service model to your team and your constraints. A maker team with a connector-shaped problem should not be writing containers. A pro-dev team with bespoke orchestration and a hard residency mandate should not be boxed into a fixed low-code orchestrator. And a team that wants its own code without running servers now has a genuine middle path that did not exist cleanly a year ago.&lt;/p&gt;

&lt;p&gt;Run the four gates, document the answer as an architecture decision record, and note the migration path you are keeping open, because the same Agent Framework code spanning in-process and Foundry Hosted means you can defer the highest-stakes part of this call without locking yourself in. The platforms all feed one Entra agent inventory, so whichever you pick, the governance team can see it. Pick for who builds it and who runs it, not for the longest feature list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/azure-ai-foundry-vs-azure-openai-2026-decision/" rel="noopener noreferrer"&gt;Azure AI Foundry vs Azure OpenAI: The 2026 Decision&lt;/a&gt; - the platform-level choice that sits underneath the agent runtime decision&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/six-rules-llm-agnostic-ai-agents-microsoft-foundry/" rel="noopener noreferrer"&gt;Six Rules for LLM-Agnostic AI Agents on Microsoft Foundry&lt;/a&gt; - keeping orchestration and tools portable across all three build paths&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/microsoft-agentic-patterns-playbook-decode-2026/" rel="noopener noreferrer"&gt;The Microsoft Agentic Patterns Playbook, Decoded&lt;/a&gt; - the orchestration patterns these runtimes execute&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/risk-tiered-agent-governance-annotated-2026/" rel="noopener noreferrer"&gt;Risk-Tiered Agent Governance, Annotated&lt;/a&gt; - how to govern the agents once they land in the shared Entra inventory&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/agentops-foundry-cicd-reference-architecture-decode-2026/" rel="noopener noreferrer"&gt;AgentOps on Foundry: A CI/CD Reference Architecture&lt;/a&gt; - the deploy and observability layer for Hosted agents specifically&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;AI Governance Framework for Microsoft Enterprises&lt;/a&gt; - the operational governance that wraps all three runtimes&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If you are mapping the Foundry Hosted vs in-process vs Copilot Studio decision for an enterprise agent platform and want a second-opinion review of your gate answers before you commit, &lt;a href="https://az365.ai/about/" rel="noopener noreferrer"&gt;reach out&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/foundry-agents-hosted-vs-in-process-vs-copilot-studio-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>copilotstudio</category>
      <category>aiagents</category>
    </item>
    <item>
      <title>Azure AI Foundry New vs Classic: 2026 Migration Map</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sun, 19 Jul 2026 14:48:26 +0000</pubDate>
      <link>https://dev.to/az365ai/azure-ai-foundry-new-vs-classic-2026-migration-map-23f6</link>
      <guid>https://dev.to/az365ai/azure-ai-foundry-new-vs-classic-2026-migration-map-23f6</guid>
      <description>&lt;p&gt;There are now two Microsoft Foundry portals, and the toggle between them is a single banner switch labeled "New Foundry." That switch hides a real architecture decision: the new portal shows only Foundry projects, while a whole class of resources (Azure OpenAI, hub-based projects, managed-compute model hosting) lives exclusively on the classic side. The question every architect has to answer in 2026 is not "which portal looks nicer." It is "which of my resources are stranded on classic, and what work it takes to move them."&lt;/p&gt;

&lt;p&gt;This article is the migration map. It separates what reached the new portal from what is still classic-only, lists exactly what transfers during a hub-to-Foundry migration and what you have to rebuild by hand, and flags the two hard dates that actually force your hand. It is current as of mid-2026 and grounded in Microsoft Learn. Where the docs hedge, I hedge too, because some of the most important questions (when does the classic portal retire?) do not have an answer in the current documentation.&lt;/p&gt;

&lt;p&gt;A note on naming first, because Microsoft has changed it twice. The brand evolved from Azure AI Studio to Azure AI Foundry to Microsoft Foundry, and the AI services portfolio went from Azure Cognitive Services to Azure AI Services to Foundry Tools. Through all of it the underlying Azure resource type stayed &lt;code&gt;Microsoft.CognitiveServices/accounts&lt;/code&gt;, as Microsoft documents in the &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt;. This article uses "new portal" and "current portal" interchangeably for the New-Foundry-on experience, and "classic portal" for New-Foundry-off.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are two portals toggled by the "New Foundry" banner switch. The new portal shows only Foundry projects; the classic portal is required for Azure OpenAI resources, hub-based projects, and anything needing prompt flow or managed-compute (open-source) model hosting. The new resource model collapses the old Hub plus Azure OpenAI plus Azure AI Services sprawl into one Foundry resource with child projects on a single project endpoint. Two component-level dates are firm: the &lt;code&gt;azure-ai-inference&lt;/code&gt; package retires May 30, 2026, and the Assistants API sunsets August 26, 2026. There is no announced retirement date for the classic portal itself, for hub-based projects, or for the old brand names. Most teams should default to a Foundry project; keep a hub-based project only when you specifically need prompt flow or open-source model deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monday move:&lt;/strong&gt; inventory your resources by what is stranded on classic. List every standalone Azure OpenAI resource and every hub-based project, then check two things for each: do you have an &lt;code&gt;azure-ai-inference&lt;/code&gt; or Assistants API dependency with a 2026 deadline, and do you need prompt flow or managed compute (the two capabilities that have no new-portal equivalent yet). That single table tells you what must move, what can stay, and what is on a clock. One more pre-flight check: verify Responses API and Foundry Agent Service region support before you migrate, because an unsupported region blocks agents in the new portal entirely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What "New" Actually Means: A Resource Model, Not a Skin
&lt;/h2&gt;

&lt;p&gt;The portal toggle is the visible part. The change underneath is the resource model.&lt;/p&gt;

&lt;p&gt;In the classic model, a typical deployment managed multiple Azure resources at once: a Hub, an Azure OpenAI account, and Azure AI Services, spread across five or more endpoints. The new model collapses that into a single Foundry resource with child projects, accessed through one project endpoint, under one Azure resource provider namespace with unified RBAC, networking, and policies. Microsoft describes this consolidation in the &lt;a href="https://learn.microsoft.com/azure/foundry/what-is-foundry" rel="noopener noreferrer"&gt;what-is-Foundry overview&lt;/a&gt;. The resource type did not change. The number of things you have to wire together did.&lt;/p&gt;

&lt;p&gt;This is why the new portal "shows only Foundry projects." It is not hiding your other resources to be annoying. The new portal is the surface for the new single-resource model, and everything that predates it (Azure OpenAI standalone resources, hub-based projects, the Hub resource type itself) is reached through the classic portal, per the &lt;a href="https://learn.microsoft.com/azure/foundry-classic/what-is-foundry" rel="noopener noreferrer"&gt;classic what-is-Foundry page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So before you compare features, get the vocabulary straight, because three terms do most of the confusing work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Project Types, and the One Microsoft Tells You to Pick
&lt;/h2&gt;

&lt;p&gt;The most consequential choice in this whole migration is not portal-level. It is project-level. There are two project types, and they are not interchangeable.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Foundry project&lt;/strong&gt; is managed directly under a Microsoft Foundry resource and requires no extra Azure resources. A &lt;strong&gt;hub-based project&lt;/strong&gt; is hosted by a Foundry/AI hub, which in turn requires dependent Azure Storage and Key Vault resources. Microsoft's own guidance, stated plainly in the &lt;a href="https://learn.microsoft.com/azure/foundry-classic/what-is-foundry" rel="noopener noreferrer"&gt;classic what-is-Foundry page&lt;/a&gt;, is: "In most cases, you want to use a Foundry project."&lt;/p&gt;

&lt;p&gt;That recommendation is not marketing. It reflects where the feature investment is going. Microsoft notes that in June 2025 it began moving most of the Azure AI Hub's capabilities under the Foundry resource type, with new features primarily landing on Foundry, while select use cases such as open-source model deployments still require a hub resource, per the &lt;a href="https://learn.microsoft.com/azure/foundry-classic/concepts/resource-types" rel="noopener noreferrer"&gt;resource-types concept page&lt;/a&gt;. New generative-AI and model-centric features (the Foundry API and the Foundry Agent Service, both in general availability) are available only through the Foundry resource and its Foundry projects, as the &lt;a href="https://learn.microsoft.com/azure/foundry-classic/how-to/migrate-project" rel="noopener noreferrer"&gt;migrate-project guide&lt;/a&gt; states.&lt;/p&gt;

&lt;p&gt;But "most cases" is not "all cases," and the exceptions are sharp. Here is the capability split between the two project types.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Foundry project&lt;/th&gt;
&lt;th&gt;Hub-based project&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agents&lt;/td&gt;
&lt;td&gt;GA&lt;/td&gt;
&lt;td&gt;Preview only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foundry SDK and API&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI SDK and API&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Via connections only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foundry Models (Azure OpenAI, DeepSeek, xAI)&lt;/td&gt;
&lt;td&gt;Native&lt;/td&gt;
&lt;td&gt;Via connections only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evaluations&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;GA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt flow&lt;/td&gt;
&lt;td&gt;Not available&lt;/td&gt;
&lt;td&gt;Available (hub-based only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed compute / open-source model hosting (e.g. HuggingFace)&lt;/td&gt;
&lt;td&gt;Not available&lt;/td&gt;
&lt;td&gt;Available (hub-based only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extra Azure resources required&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Azure Storage + Key Vault&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read that table the way the docs ask you to: as a snapshot, not a contract. Microsoft says feature parity between the two project types is explicitly not achieved yet ("Foundry projects feature set aren't yet on full parity") and points to a live support matrix rather than a parity-completion date. There is no stated date for when the gaps close. Treat the per-tool GA/Preview labels in the catalog as the source of truth and verify at the tool level, because some entries (agents being one) are described differently in different places in the documentation.&lt;/p&gt;

&lt;p&gt;The two rows that should drive your decision are the bottom two. &lt;strong&gt;Prompt flow&lt;/strong&gt; and &lt;strong&gt;managed compute (open-source model hosting)&lt;/strong&gt; are exclusive to hub-based projects. If your workload depends on either, you are on classic for that workload, full stop, until the docs say otherwise. Everything else points toward a Foundry project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Portal Feature Map: New, Classic, or Both
&lt;/h2&gt;

&lt;p&gt;Project type is one axis. The other is where a given capability is reachable. Microsoft's &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt; groups features into three buckets, and that grouping is the cleanest way to plan a migration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New portal only, generally available:&lt;/strong&gt; the Responses API, Agents v2 (which is the Responses API), a large and growing tool catalog (each entry carrying its own GA or Preview label, which you check per tool), and agent publishing to Microsoft 365 and Teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New portal only, Preview:&lt;/strong&gt; multi-agent workflows, agent memory, Foundry IQ, hosted agents, the A2A protocol, and the Foundry Control Plane. Every item in this list is Preview. None of it should sit unguarded in a production path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Both portals:&lt;/strong&gt; Foundry projects themselves, chat completions, fine-tuning, evaluations (enhanced in the current portal), and the model catalog (expanded in the current portal).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Classic only, requiring migration:&lt;/strong&gt; standalone Azure OpenAI resources (which you upgrade to a Foundry resource) and hub-based projects (which are not visible in the current portal at all, so you either switch to the classic portal or migrate them to Foundry projects).&lt;/p&gt;

&lt;p&gt;The shape here is worth sitting with. The genuinely new generative-AI surface (agents v2, multi-agent, memory, Foundry IQ, A2A, Control Plane) is new-portal-only by design. The boring, load-bearing primitives (chat completions, fine-tuning, evaluations, the model catalog) work in both. And the two things that strand you on classic are an older resource type (standalone Azure OpenAI) and an older project type (hub-based). That is a healthy pattern: the consolidation is additive on the new side and migration-gated on the old side, not a forced rip-and-replace.&lt;/p&gt;

&lt;p&gt;For the deeper "should I even be on Foundry versus standalone Azure OpenAI" question, that is a separate decision with its own tree. I worked through it in &lt;a href="https://az365.ai/blog/azure-ai-foundry-vs-azure-openai-2026-decision/" rel="noopener noreferrer"&gt;Azure AI Foundry vs Azure OpenAI: The 2026 Decision&lt;/a&gt;, and this article assumes you have already decided Foundry is your platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  The API and SDK Rename You Cannot Ignore
&lt;/h2&gt;

&lt;p&gt;If the resource model is the structural change, the API and SDK renames are the change that breaks your code. They are mechanical, well-documented, and unavoidable if you move to the new portal.&lt;/p&gt;

&lt;p&gt;The terminology shifted across the board, per the &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Classic&lt;/th&gt;
&lt;th&gt;New&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Assistants API (Agents v0.5 / v1)&lt;/td&gt;
&lt;td&gt;Responses API (Agents v2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly &lt;code&gt;api-version&lt;/code&gt; params&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;v1&lt;/code&gt; stable routes (&lt;code&gt;/openai/v1/&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threads&lt;/td&gt;
&lt;td&gt;Conversations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Messages&lt;/td&gt;
&lt;td&gt;Items&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runs&lt;/td&gt;
&lt;td&gt;Responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assistants / Agents&lt;/td&gt;
&lt;td&gt;Agent Versions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;create_agent()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;create_version()&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the SDK side, the classic packages and the Azure-specific client collapse into the unified &lt;code&gt;azure-ai-projects&lt;/code&gt; 2.x project client together with the standard &lt;code&gt;openai&lt;/code&gt; &lt;code&gt;OpenAI()&lt;/code&gt; client pointed at one project endpoint, per the same &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt;. The mapping:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Classic&lt;/th&gt;
&lt;th&gt;New&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;azure-ai-inference&lt;/code&gt; (model inference)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;openai&lt;/code&gt; package&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;AzureOpenAI()&lt;/code&gt; client&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;OpenAI()&lt;/code&gt; client with &lt;code&gt;base_url&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;azure-ai-generative&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;azure-ai-projects&lt;/code&gt; 2.x project client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;azure-ai-ml&lt;/code&gt; (hub-to-project scenarios)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;azure-ai-projects&lt;/code&gt; 2.x project client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;azure-ai-projects&lt;/code&gt; 1.x (classic portal)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;azure-ai-projects&lt;/code&gt; 2.x (new portal)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most common rewrite is the smallest one: drop the Azure-specific &lt;code&gt;AzureOpenAI&lt;/code&gt; client and its &lt;code&gt;azure_endpoint&lt;/code&gt; plus &lt;code&gt;api_version&lt;/code&gt; for the standard &lt;code&gt;OpenAI()&lt;/code&gt; client pointed at the single &lt;code&gt;/openai/v1&lt;/code&gt; project endpoint, authenticated with &lt;code&gt;DefaultAzureCredential&lt;/code&gt; rather than an API key. This pattern follows the before/after example in the navigate-from-classic guide.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Classic: azure-ai-projects 1.x era; Azure-specific client + monthly api-version
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AzureOpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AzureOpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;azure_endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://my-resource.openai.azure.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;my-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2024-12-01-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# New: pin azure-ai-projects 2.x; standard OpenAI client on the one project endpoint
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;azure.ai.projects&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AIProjectClient&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;azure.identity&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultAzureCredential&lt;/span&gt;

&lt;span class="n"&gt;project&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AIProjectClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://&amp;lt;resource&amp;gt;.services.ai.azure.com/api/projects/&amp;lt;project&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;DefaultAzureCredential&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_openai_client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# OpenAI() bound to the ".../openai/v1/" base URL
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The version split is the part that bites: &lt;code&gt;azure-ai-projects&lt;/code&gt; 1.x targets the classic portal and 2.x targets the new portal, and mixing versions across portals causes errors. In my own experience this is the single most common stumbling block, more than any strategy question, and it is easy to miss because the symptom (a &lt;code&gt;ModuleNotFoundError&lt;/code&gt; or an unexpected API response) reads like a code bug rather than a portal mismatch. Microsoft lists exactly that symptom and its "SDK version doesn't match your portal target" cause in the troubleshooting table of the &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt;. If you have ever debugged a "works on my machine" SDK mismatch, this is the same trap wearing a Foundry badge.&lt;/p&gt;

&lt;p&gt;RBAC roles changed too. The old &lt;code&gt;Cognitive Services OpenAI User&lt;/code&gt; and similar roles are replaced by &lt;code&gt;Foundry User&lt;/code&gt;, &lt;code&gt;Foundry Project Manager&lt;/code&gt;, &lt;code&gt;Foundry Owner&lt;/code&gt;, and &lt;code&gt;Foundry Account Owner&lt;/code&gt;, with control-plane and data-plane separation. One reassurance from the docs: these were recently renamed from &lt;code&gt;Azure AI User/Owner/Account Owner/Project Manager&lt;/code&gt;, and the rename left role IDs and core permissions unchanged. So if you wrote Bicep or Terraform against the role IDs rather than the display names, the rename did not break you. If you hardcoded display names in scripts or documentation, update them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are the Azure AI Foundry Migration Deadlines in 2026?
&lt;/h2&gt;

&lt;p&gt;Two component-level deadlines are firm. The &lt;code&gt;azure-ai-inference&lt;/code&gt; package retires May 30, 2026, and the Assistants API sunsets August 26, 2026. Everything else in the transition is soft: you can toggle portals freely, hub-based projects remain accessible on classic, and the docs announce no shutdown date for the classic portal itself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hard dates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;azure-ai-inference&lt;/code&gt; package retires &lt;strong&gt;May 30, 2026&lt;/strong&gt; - migrate to the &lt;code&gt;openai&lt;/code&gt; package. The Assistants API sunsets &lt;strong&gt;August 26, 2026&lt;/strong&gt; - move workloads to the generally available Microsoft Foundry Agents service / Responses API. Both dates are stated in Microsoft's &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt;. Everything else in the classic-to-new transition is opt-in. These two are not. Both dates are component-level: they retire one SDK package and one API. Neither date retires the classic portal, hub-based projects, or the AI Hub resource type.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Read these carefully, because they are narrower than the rumors. Neither date retires the classic portal. Neither date retires hub-based projects or the AI Hub resource type. They retire two specific components: an SDK package and an API. If your codebase imports &lt;code&gt;azure-ai-inference&lt;/code&gt;, you have a hard deadline. If you run the Assistants API in production, you have a hard deadline. If you do neither, these dates do not touch you, regardless of which portal you use day to day.&lt;/p&gt;

&lt;p&gt;This distinction is, in my own analysis, where planning most often goes wrong. Teams read "classic" and "retiring" in the same paragraph and conclude the portal is sunsetting. It is not, at least not on any date Microsoft has published. The honest statement is: the only firm dates are component-level, and you should plan to them specifically rather than to a vague "classic is going away" anxiety.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Transfers in a Hub-to-Foundry Migration (and What Does Not)
&lt;/h2&gt;

&lt;p&gt;If you decide to move a hub-based project to a Foundry project, the mechanics are documented and reasonably quick, but the "what does not transfer" list is the part that will hurt if you skip it.&lt;/p&gt;

&lt;p&gt;From a hub-based project, you create a new Foundry project on the existing Foundry resource. This requires the Owner role and takes roughly 5 to 10 minutes, per the &lt;a href="https://learn.microsoft.com/azure/foundry-classic/how-to/migrate-project" rel="noopener noreferrer"&gt;migrate-project guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What transfers:&lt;/strong&gt; model deployments, data files, fine-tuned models, assistants, and vector stores.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does not transfer:&lt;/strong&gt; preview agent state (messages, threads, and files), open-source and managed-compute model deployments (which are unsupported on Foundry projects), and hub-project access itself.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Migrates to Foundry project?&lt;/th&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model deployments&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Verify after migration; do not assume&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data files&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Confirm presence in the new project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fine-tuned models&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Re-test inference paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assistants&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;But Assistants API sunsets Aug 26, 2026 - move to Responses API anyway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector stores&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Re-validate retrieval after move&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Preview agent state (messages, threads, files)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Recreate by hand; do not migrate mid-conversation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open-source / managed-compute deployments&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Unsupported on Foundry projects; keep on a hub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hub-project access&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Hub project is not reachable post-migration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two of those "no" rows deserve a flag. First, &lt;strong&gt;preview agent state does not move.&lt;/strong&gt; If you have agents mid-flight with live conversations, threads, and uploaded files, migrating loses that state. Plan the cutover for a quiet window and recreate, rather than treating it as a hot-path operation.&lt;/p&gt;

&lt;p&gt;Second, &lt;strong&gt;open-source and managed-compute deployments are unsupported on Foundry projects.&lt;/strong&gt; This is the same exclusion as the prompt-flow and managed-compute rows in the capability matrix earlier. If your hub-based project exists specifically to host an open-source model on managed compute, migration to a Foundry project is not a move, it is a deletion of the one thing that workload does. Keep it on a hub.&lt;/p&gt;

&lt;p&gt;One more constraint that lives in the documentation and is easy to miss. The hub-to-Foundry migration article, along with the other hub-focused articles (hub RBAC, hub quickstart, hub resources overview), is labeled "Applies only to: Foundry (classic) portal" and explicitly states the steps do not work for Foundry projects in the new portal. So when you follow migration guidance, confirm which portal the doc is written for, because hub-focused and Foundry-project-focused docs are not interchangeable even when they describe the same conceptual task.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Decision Framework You Can Defend in a Review
&lt;/h2&gt;

&lt;p&gt;Here is how I would structure the classic-to-new decision for an enterprise platform plan. It is built from the &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;decision dimensions Microsoft surfaces&lt;/a&gt;, ordered by how often each one is the actual deciding factor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Do you need prompt flow or managed-compute (open-source) model hosting?&lt;/strong&gt; If yes, you stay on a hub-based project in the classic portal for that workload. These two capabilities have no Foundry-project equivalent in the current docs. This is the first question because it is the only true blocker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Do you have an &lt;code&gt;azure-ai-inference&lt;/code&gt; or Assistants API dependency?&lt;/strong&gt; If yes, you have a hard deadline (May 30, 2026 for the package, August 26, 2026 for the API). Migrate the dependency regardless of your broader portal strategy. These dates do not wait for your platform roadmap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Are the new-portal features you want GA or Preview?&lt;/strong&gt; Responses API, Agents v2, the tool catalog, and M365/Teams publishing are GA. Multi-agent workflows, agent memory, Foundry IQ, hosted agents, A2A, and the Control Plane are Preview. Gate every Preview capability out of production paths and design a fallback. Building production agent orchestration on Preview multi-agent workflows is a bet on a date Microsoft has not given you. Preview features are also typically excluded from SLAs and may fall outside Online Services Terms protections (verify the supplemental Preview terms against your current agreement), so gating Preview out of production is a contractual control, not just a stability precaution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Is your target region supported?&lt;/strong&gt; The Responses API and Foundry Agent Service are not available in every Azure region. Microsoft warns that if a Foundry resource sits in an unsupported region, agents and other Responses API features will not work in the current portal, and you must create a new Foundry resource in a supported region. Region-strand is not a theoretical edge case: Microsoft lists "Foundry resource is in a region that doesn't support the Responses API" as one of the documented common migration issues in the &lt;a href="https://learn.microsoft.com/azure/foundry/how-to/navigate-from-classic" rel="noopener noreferrer"&gt;navigate-from-classic guide&lt;/a&gt;, which points at a dedicated &lt;a href="https://learn.microsoft.com/azure/foundry/reference/region-support" rel="noopener noreferrer"&gt;feature availability across cloud regions&lt;/a&gt; reference (verify the exact supported-region list against current docs, since it moves). Verify region support before you migrate, not after.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Do your SDK versions match your portal?&lt;/strong&gt; &lt;code&gt;azure-ai-projects&lt;/code&gt; 1.x for classic, 2.x for new. Mismatched versions error out. This is a code-hygiene check, not a strategy question, but in my experience it strands more migrations than the strategy questions do, and Microsoft documents the mismatch symptom and fix in its troubleshooting table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Do you still depend on standalone Azure OpenAI resources or hub-based projects?&lt;/strong&gt; These are classic-only and require an explicit upgrade (Azure OpenAI resource to Foundry resource) or migration (hub-based project to Foundry project). They are not blockers, but they are work you have to schedule.&lt;/p&gt;

&lt;p&gt;If the answers point you toward a Foundry project (and for most workloads they will, because Microsoft says so and the feature investment confirms it), the migration itself is the 5-to-10-minute operation described above. The framework exists so that the 5-to-10-minute operation is the last step, not the first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where It Breaks: Caveats and Open Questions
&lt;/h2&gt;

&lt;p&gt;I would be misrepresenting the documentation if I gave you cleaner answers than the docs actually contain. Several important questions do not have published answers as of mid-2026, and you should plan around the uncertainty rather than around a guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is no announced retirement date for the classic portal.&lt;/strong&gt; The docs say new investment focuses on the new portal and that you can toggle freely, but they give no classic-portal shutdown date. Anyone telling you the classic portal dies on a specific date is reading something the current documentation does not say. Plan your migration on the value of consolidation and on the two real component dates, not on a phantom portal-retirement deadline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is no announced retirement date for hub-based projects or the AI Hub resource type.&lt;/strong&gt; They remain accessible in the classic portal with no announced sunset. Given that prompt flow and managed-compute hosting are hub-only and have no new-portal equivalent, this is consistent: Microsoft cannot retire the hub while the hub is the only home for those capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The old brand names have no stated naming-retirement date.&lt;/strong&gt; "Azure AI Studio" and "Azure AI Foundry" are described as superseded brands, but the docs give no date on which the names stop being used. This is cosmetic, but it matters for documentation and onboarding material that references the old names.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature parity between project types is not complete, and no completion date is stated.&lt;/strong&gt; Microsoft explicitly says Foundry projects "aren't yet on full parity" and points to a live support matrix. Do not assume a capability you saw on a hub-based project is available on a Foundry project. Check the matrix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Individual tool GA/Preview states should be verified at the tool level.&lt;/strong&gt; The classic capability table lists agents as "Preview only" on hub-based projects, while agents are described as GA on Foundry projects elsewhere. The catalog carries per-tool labels, and the docs tell you to trust those over any summary table, including the ones in this article. When the stakes are production, read the live label.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some new-portal availability is hedged in the docs themselves.&lt;/strong&gt; For example, whether the Content Understanding GA API (2025-11-01) is yet available in the new portal is described as "will soon support," with no exact date. When the official docs hedge, do not firm it up in your architecture decision record. Carry the hedge forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API key authentication does not cover every surface in the new portal.&lt;/strong&gt; Per Microsoft's &lt;a href="https://learn.microsoft.com/azure/foundry/concepts/general-availability" rel="noopener noreferrer"&gt;new-portal GA overview&lt;/a&gt;, Foundry supports API key authentication for most areas, but agents, evaluations, the datasets tab, Content Understanding, and workflows require Microsoft Entra ID authentication (point-in-time as of the GA overview; verify against current docs). A team that scripted against API keys on classic will hit auth failures on exactly these surfaces. Plan an Entra ID with managed-identity path for them before you cut over, not after the first 401.&lt;/p&gt;

&lt;p&gt;The pattern across all of these: the consolidation is real and directional, but the calendar is mostly empty except for two component dates. Build your plan on the firm dates and the GA/Preview gates, treat everything else as directional, and re-check the live matrix before you commit production load. The governance wrapper around all of this (who can create what, which Preview features are allowed where) is the same discipline I described in the &lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;AI governance framework for the Microsoft stack&lt;/a&gt;, and it applies cleanly to the new resource model because RBAC, networking, and policy are now unified under one resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  Foundry New vs Classic: The 2026 Bottom Line
&lt;/h2&gt;

&lt;p&gt;Three takeaways for the architect writing the 2026 platform plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, default to a Foundry project, and document the exceptions.&lt;/strong&gt; Microsoft says "in most cases, you want to use a Foundry project," the feature investment backs it up, and the new single-resource model is genuinely simpler than the old Hub-plus-OpenAI-plus-AI-Services sprawl. The only durable reasons to stay on a hub-based project are prompt flow and managed-compute model hosting. If neither applies, your default is a Foundry project, and the exceptions should be written down as exceptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second, plan to the two real dates and ignore the phantom one.&lt;/strong&gt; May 30, 2026 (the &lt;code&gt;azure-ai-inference&lt;/code&gt; package) and August 26, 2026 (the Assistants API) are firm and component-level. The classic portal retirement is not a date, because there is no date. Most migration anxiety I see conflates the two. Separate them in your plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third, the new-portal Preview list is long, and that is the real production gate.&lt;/strong&gt; Multi-agent workflows, agent memory, Foundry IQ, hosted agents, A2A, and the Control Plane are the capabilities people get excited about, and every one of them is Preview right now. The GA surface (Responses API, Agents v2, tool catalog, M365/Teams publishing) is what you can build on today. Design for the GA line and treat the Preview features as roadmap, not foundation. If you are mapping how those agent patterns fit a broader architecture, the &lt;a href="https://az365.ai/blog/microsoft-agentic-patterns-playbook-decode-2026/" rel="noopener noreferrer"&gt;Microsoft agentic patterns playbook&lt;/a&gt; is the companion read.&lt;/p&gt;

&lt;p&gt;The migration is happening either way. The question is whether you move proactively on the workloads that benefit and the dependencies that have deadlines, while leaving the genuinely classic-only workloads where they belong. Pick the project type per workload, document the choice as an ADR, verify region support before you cut over, and re-read the live capability matrix the week you migrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/azure-ai-foundry-vs-azure-openai-2026-decision/" rel="noopener noreferrer"&gt;Azure AI Foundry vs Azure OpenAI: The 2026 Decision&lt;/a&gt; - the upstream decision: Foundry as a platform versus standalone Azure OpenAI, with the eight scenarios and the resource-upgrade mechanics&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/microsoft-agentic-patterns-playbook-decode-2026/" rel="noopener noreferrer"&gt;The Microsoft Agentic Patterns Playbook, Decoded&lt;/a&gt; - how the new-portal agent capabilities map to actual orchestration patterns&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/six-rules-llm-agnostic-ai-agents-microsoft-foundry/" rel="noopener noreferrer"&gt;Six Rules for LLM-Agnostic AI Agents on Microsoft Foundry&lt;/a&gt; - designing agents that survive the SDK and model-catalog churn this article describes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-governance-framework-microsoft-stack/" rel="noopener noreferrer"&gt;AI Governance Framework for the Microsoft Stack&lt;/a&gt; - the RBAC, policy, and Preview-gating discipline that the unified Foundry resource model makes easier to enforce&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/azure-ai-landing-zone-reference-architecture-2026/" rel="noopener noreferrer"&gt;Azure AI Landing Zone: The 2026 Reference Architecture&lt;/a&gt; - the platform-level architecture that hosts Foundry resources, networking, and policy from day one&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If you are mapping a classic-to-Foundry migration for an enterprise platform and want a second-opinion read on which workloads to move and which to leave on the hub, &lt;a href="https://az365.ai/about/" rel="noopener noreferrer"&gt;reach out&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/azure-ai-foundry-new-vs-classic-feature-parity-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>msfoundry</category>
      <category>azureai</category>
    </item>
    <item>
      <title>Ship a Real Website with Claude Code, GitHub, and Cloudflare (Cheap and Reliable)</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sat, 18 Jul 2026 14:45:03 +0000</pubDate>
      <link>https://dev.to/az365ai/ship-a-real-website-with-claude-code-github-and-cloudflare-cheap-and-reliable-4nhh</link>
      <guid>https://dev.to/az365ai/ship-a-real-website-with-claude-code-github-and-cloudflare-cheap-and-reliable-4nhh</guid>
      <description>&lt;p&gt;The cheapest, most durable way to put a website on the internet has not changed much: publish static files to a CDN, version them in Git, and let a build run on every push. What has changed is who does the wiring. You can now describe the site to an AI coding agent and let it run the whole sequence, while you click the two things only a human can click. This is the stack I use to ship the sites behind this publication, written so you can hand it to your agent and get a live site on your own domain in an afternoon. The interesting part is not the tools, it is the division of labor: the agent runs the whole sequence, and you own only the two steps it genuinely cannot do.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The stack:&lt;/strong&gt; Astro (static output) for the site, GitHub for source, Cloudflare Pages for hosting, pnpm for builds, and a tiny Playwright smoke test as the quality gate. &lt;strong&gt;The cost:&lt;/strong&gt; about $0 per month plus the domain (roughly $8 to $15 per year), because static files on a CDN have no server to run or scale. &lt;strong&gt;The reliability:&lt;/strong&gt; there is no origin to crash and no database to corrupt, so the common failure is a typo, which the smoke test catches. &lt;strong&gt;Monday move:&lt;/strong&gt; install the four tools (Node, pnpm, git, the GitHub CLI), then paste the "Give this to your AI" prompt below to Claude Code and answer its questions. The only steps it cannot do for you are the two clicks inside the Cloudflare dashboard.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why this is cheap and reliable
&lt;/h2&gt;

&lt;p&gt;The reliability comes from the shape of the system, not from spending more. A static site is a folder of HTML, CSS, and a little JavaScript. Served from a CDN, it has no server process to patch, no runtime to crash, and no database to corrupt. Your repository is the source of truth, GitHub holds it, and Cloudflare rebuilds and ships the site on every push. The most common way to break it is a typo in your own content, and the test gate below catches the usual cases of that before they go live.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;Astro (static output)&lt;/td&gt;
&lt;td&gt;Ships plain HTML and CSS with almost no JavaScript by default, so pages are fast and there is no server runtime. Content is Markdown or MDX in your repo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Source control&lt;/td&gt;
&lt;td&gt;GitHub (private repo)&lt;/td&gt;
&lt;td&gt;Free, durable, and the thing Cloudflare watches. A bad change is one &lt;code&gt;git revert&lt;/code&gt; away.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Cloudflare Pages&lt;/td&gt;
&lt;td&gt;Free tier includes a global CDN, automatic HTTPS, and Git-connected auto-deploy. Static hosting on a CDN is about as reliable as the web gets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Package manager&lt;/td&gt;
&lt;td&gt;pnpm&lt;/td&gt;
&lt;td&gt;Fast, disk-efficient installs. npm or yarn work too.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quality gate&lt;/td&gt;
&lt;td&gt;Build check plus a Playwright smoke test&lt;/td&gt;
&lt;td&gt;Catches broken builds, missing images, and dead links before they reach visitors.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Alternatives that also work: Cloudflare Workers if you need server-side logic, Vite with React, Svelte, or Vue if you want a single-page app, and Netlify or GitHub Pages instead of Cloudflare Pages. The principles carry over. This guide picks one good default path so your AI does not have to deliberate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites (one-time, about 15 minutes)
&lt;/h2&gt;

&lt;p&gt;Three free accounts: a &lt;a href="https://github.com/signup" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; account, a &lt;a href="https://dash.cloudflare.com/sign-up" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt; account, and a domain name if you want a custom address (Cloudflare Registrar sells them at cost, which is the cheapest honest option). You can skip the domain and use the free &lt;code&gt;*.pages.dev&lt;/code&gt; subdomain.&lt;/p&gt;

&lt;p&gt;Four tools on your machine: &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; LTS (version 20 or newer), pnpm (&lt;code&gt;npm install -g pnpm&lt;/code&gt;), &lt;a href="https://git-scm.com" rel="noopener noreferrer"&gt;Git&lt;/a&gt;, and the &lt;a href="https://cli.github.com" rel="noopener noreferrer"&gt;GitHub CLI&lt;/a&gt; (&lt;code&gt;gh&lt;/code&gt;, then &lt;code&gt;gh auth login&lt;/code&gt; once, so your agent can create the repo without you clicking through the web UI). Plus your AI coding agent of choice.&lt;/p&gt;

&lt;p&gt;Verify them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;    &lt;span class="c"&gt;# v20 or higher&lt;/span&gt;
pnpm &lt;span class="nt"&gt;--version&lt;/span&gt;
git &lt;span class="nt"&gt;--version&lt;/span&gt;
gh auth status    &lt;span class="c"&gt;# should say "Logged in"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Give this to your AI
&lt;/h2&gt;

&lt;p&gt;Once the prerequisites are in, paste the block below to your agent. Replace the bracketed values first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I want to create and deploy a website. Use this stack and follow it exactly:

- Framework: Astro (static output)
- Source: a NEW PRIVATE GitHub repo named [my-site]
- Hosting: Cloudflare Pages, auto-deploy on push to main
- Package manager: pnpm
- Custom domain (optional): [yourname.com]

Site description: [one or two sentences about what the site is and who it is for].

Do this:
1. Scaffold a minimal Astro site with pnpm. Run it locally and confirm it builds.
2. Initialize git, create the private GitHub repo with the gh CLI, and push.
3. Add a publish gate: a "pnpm build" check and a minimal Playwright smoke test
   that loads the home page, checks the title, and verifies every &amp;lt;img&amp;gt; loads
   without a 404. Wire it so I can run it before every push.
4. Give me the exact Cloudflare Pages settings to enter (build command, output
   directory, framework preset) and the DNS steps for the custom domain. I will
   click those in the Cloudflare dashboard; you cannot do that part for me.
5. Write a short README with the local dev command, the deploy flow, and the
   gotchas list.

Keep it minimal and working. Do not add features I did not ask for. After each
step, tell me what you did and what I need to do next.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The one thing your agent cannot do is click inside the Cloudflare dashboard to connect the repo and the domain. Everything else it can run. The steps below are what it follows, and what you click.&lt;/p&gt;

&lt;h2&gt;
  
  
  The steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Scaffold and confirm it builds
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm create astro@latest my-site
&lt;span class="c"&gt;# Choose a minimal or blog starter, TypeScript "Strict", install dependencies&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;my-site
pnpm dev          &lt;span class="c"&gt;# open the local URL; confirm the page loads&lt;/span&gt;
pnpm build        &lt;span class="c"&gt;# produces the static site in ./dist&lt;/span&gt;
pnpm preview      &lt;span class="c"&gt;# serves ./dist exactly as it will deploy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;pnpm build&lt;/code&gt; fails, fix it before going further. A green build locally is the contract Cloudflare relies on.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Put it on GitHub (private)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
git add &lt;span class="nt"&gt;-A&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial site scaffold"&lt;/span&gt;
gh repo create my-site &lt;span class="nt"&gt;--private&lt;/span&gt; &lt;span class="nt"&gt;--source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--remote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;origin &lt;span class="nt"&gt;--push&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last command creates the private repo and pushes in one shot.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Connect Cloudflare Pages (you click this part)
&lt;/h3&gt;

&lt;p&gt;In the &lt;a href="https://dash.cloudflare.com" rel="noopener noreferrer"&gt;Cloudflare dashboard&lt;/a&gt;, open &lt;strong&gt;Workers and Pages&lt;/strong&gt;, click &lt;strong&gt;Create&lt;/strong&gt;, then &lt;strong&gt;Pages&lt;/strong&gt;, then &lt;strong&gt;Connect to Git&lt;/strong&gt;. Authorize GitHub, select your repo, and set the build configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework preset:&lt;/strong&gt; Astro&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build command:&lt;/strong&gt; &lt;code&gt;pnpm build&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build output directory:&lt;/strong&gt; &lt;code&gt;dist&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node version:&lt;/strong&gt; add an environment variable &lt;code&gt;NODE_VERSION&lt;/code&gt; set to &lt;code&gt;20&lt;/code&gt; (or newer) so the build matches your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;Save and Deploy&lt;/strong&gt;. In a minute or two you have a live site at &lt;code&gt;my-site.pages.dev&lt;/code&gt;. From then on, every push to &lt;code&gt;main&lt;/code&gt; triggers a new deploy automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Add your custom domain (you click this part)
&lt;/h3&gt;

&lt;p&gt;In the Pages project, open &lt;strong&gt;Custom domains&lt;/strong&gt;, click &lt;strong&gt;Set up a domain&lt;/strong&gt;, and enter your domain. If its DNS is already on Cloudflare, the records are added for you. If not, Cloudflare gives you the exact CNAME or A records to add at your registrar, or you can move the domain's nameservers to Cloudflare (free) and let it manage DNS. HTTPS is automatic.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The reliability gate
&lt;/h3&gt;

&lt;p&gt;A site that deploys is not the same as a site that works. Add a small gate so a broken build or a missing image never reaches visitors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm add &lt;span class="nt"&gt;-D&lt;/span&gt; @playwright/test
pnpm &lt;span class="nb"&gt;exec &lt;/span&gt;playwright &lt;span class="nb"&gt;install &lt;/span&gt;chromium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create &lt;code&gt;tests/smoke.spec.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;expect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@playwright/test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SMOKE_URL&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:4321&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;home page loads with a title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;BASE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toHaveTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/.+/&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no broken images&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;BASE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;srcs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;locator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;img&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;evaluateAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;imgs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;imgs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;HTMLImageElement&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;srcs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="s2"&gt;`broken image: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toBeLessThan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it against your local preview before every push. The habit is the point: build green, smoke green, then push. I learned the "no broken images" check the hard way, so it is not optional in my own setup. A broken &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; does not fail the build; the page just renders with a gap, and the smoke test is the only thing that catches it cheaply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost, honestly
&lt;/h2&gt;

&lt;p&gt;Hosting is $0 on Cloudflare Pages' free tier, which serves unlimited static requests and bandwidth, with a cap on the number of builds per month. Source control is $0 on GitHub, where private repos are free. The domain is the only guaranteed cost, roughly $8 to $15 per year depending on the extension. Everything else is free at this scale. If the site later needs a server, Cloudflare Workers plus a small database is the next step, and it stays inexpensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotchas (the things that actually bite)
&lt;/h2&gt;

&lt;p&gt;These are real failure modes from running this stack. Tell your agent to watch for them.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Wrong build output directory.&lt;/strong&gt; Astro outputs to &lt;code&gt;dist&lt;/code&gt;. If Cloudflare is set to &lt;code&gt;build&lt;/code&gt; or &lt;code&gt;public&lt;/code&gt;, you deploy an empty or wrong site. Confirm &lt;code&gt;dist&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node version mismatch.&lt;/strong&gt; Pin &lt;code&gt;NODE_VERSION&lt;/code&gt; in the Pages environment variables so CI matches your machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Images that 404 silently.&lt;/strong&gt; A broken &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; renders as a gap, not a build error. The smoke test's image check is what catches it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trailing-slash redirects.&lt;/strong&gt; Static hosts often redirect &lt;code&gt;/page&lt;/code&gt; to &lt;code&gt;/page/&lt;/code&gt; with a 308. This is normal. If you script checks against your own URLs, follow redirects (&lt;code&gt;curl -L&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets in the repo.&lt;/strong&gt; Never commit API keys. Put them in &lt;code&gt;.env&lt;/code&gt;, add &lt;code&gt;.env&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt;, and set the real values as encrypted environment variables in the Cloudflare dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Committing &lt;code&gt;node_modules&lt;/code&gt; or &lt;code&gt;dist&lt;/code&gt;.&lt;/strong&gt; Both belong in &lt;code&gt;.gitignore&lt;/code&gt;. The scaffold sets this up; confirm it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pushing a red build.&lt;/strong&gt; The whole reliability story depends on never pushing when &lt;code&gt;pnpm build&lt;/code&gt; is failing locally. Build first, push second.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The mental model to keep
&lt;/h2&gt;

&lt;p&gt;You are not running a server. You are publishing files. Your repo is the source of truth, GitHub holds it, Cloudflare turns it into a fast global site on every push, and a small test gate keeps obviously broken changes from going out. That is the entire system, and it is cheap and reliable precisely because it is so small. Hand the prompt above to your agent, answer its questions, click the two Cloudflare steps when it tells you to, and you have a real site on your own domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://az365.ai/blog/agentic-development-with-claude-code-the-setup-that-actually-works/" rel="noopener noreferrer"&gt;Agentic Development with Claude Code: The Setup That Actually Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://az365.ai/blog/living-documentation-in-git-why-sharepoint-word-docs-are-dead/" rel="noopener noreferrer"&gt;Living Documentation in Git: Why SharePoint Word Docs Are Dead&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/ship-a-site-with-claude-code-github-cloudflare/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiaugmenteddev</category>
      <category>claudecode</category>
      <category>staticsites</category>
    </item>
    <item>
      <title>Microsoft Agent vs Flow: What Foundry's June 2026 Release Really Decides for You</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Fri, 17 Jul 2026 15:07:55 +0000</pubDate>
      <link>https://dev.to/az365ai/microsoft-agent-vs-flow-what-foundrys-june-2026-release-really-decides-for-you-1jhd</link>
      <guid>https://dev.to/az365ai/microsoft-agent-vs-flow-what-foundrys-june-2026-release-really-decides-for-you-1jhd</guid>
      <description>&lt;p&gt;The June 2026 Foundry release makes agents dramatically cheaper to ship. That is exactly the problem. The Microsoft agent vs flow question was already the most consequential architecture call a platform team makes, and this release raises the stakes by making the wrong answer easier to ship than ever.&lt;/p&gt;

&lt;p&gt;Here is my position: most teams over-build agents for jobs a deterministic flow does better. The release lowers the cost of building an agent. It does not lower the cost of operating one, auditing one, or explaining one to a governance board. The release lowers the cost of shipping. That raises the cost of choosing wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually shipped, and why Claude is not the headline
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://devblogs.microsoft.com/foundry/whats-new-in-microsoft-foundry-june-2026/" rel="noopener noreferrer"&gt;Foundry June 2026 release&lt;/a&gt; covers a lot of ground: Claude reaching "general availability" in Foundry, agents publishing directly to Teams and Microsoft 365 Copilot, expanded Toolboxes and Routines, Memory updates, and Agent Optimizer in what Microsoft calls "private preview."&lt;/p&gt;

&lt;p&gt;Before anything else, know which product you are actually comparing. Foundry Agent Service is the pro-code agent platform on Azure. Copilot Studio agents live in the Power Platform governance boundary. Microsoft 365 Copilot agents are the distribution surface inside Teams and Office. Power Automate flows are deterministic workflow automation. These four things get conflated in every planning meeting, and the conflation is where bad architecture starts.&lt;/p&gt;

&lt;p&gt;Most coverage led with Claude's GA. I think that misses the point. Shipping a top competitor's flagship model at GA signals that Foundry is not betting on any single model winning. My read, and this is my stance rather than anything Microsoft claims: Foundry is positioning itself as the substrate agents run on, where distribution and governance are the moat and models are interchangeable tenants. Plan as if that is true, because the feature list only makes sense through that lens.&lt;/p&gt;

&lt;p&gt;The headline is not Claude. The headline is that Microsoft just made model choice boring and distribution decisive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microsoft agent vs flow: the honest decision rule
&lt;/h2&gt;

&lt;p&gt;Microsoft's positioning treats agents as the more capable option and flows as the simpler one. In production the relationship inverts. A &lt;a href="https://learn.microsoft.com/power-automate/flow-types" rel="noopener noreferrer"&gt;Power Automate flow&lt;/a&gt; you can read line by line, with per-run history an auditor can replay, beats an agent nobody can fully explain. A &lt;a href="https://learn.microsoft.com/azure/ai-foundry/agents/overview" rel="noopener noreferrer"&gt;Foundry agent&lt;/a&gt; earns its complexity only when the input is unstructured and the next step genuinely depends on reasoning.&lt;/p&gt;

&lt;p&gt;Determinism is the first test, but not the only one. Ask about human approval gates, transactionality, failure tolerance, volume, connector coverage, and data residency. And ask about money. Power Automate bills on per-user or per-flow licensing, so cost is largely fixed against volume. Foundry agents bill on consumption, so cost moves with every run. Illustrative math with industry-standard inputs, calibrate against your own tenancy and rates, actuals vary: ten thousand invoice-routing runs on a per-flow license cost the same in January as in June. The same ten thousand runs through an agent, at a few thousand tokens per run, is tens of millions of tokens a month, priced against your model rates and swinging with prompt length, retries, and model choice. Neither number matters as much as the shape: one is flat, one is a curve nobody forecast.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;Power Automate flow&lt;/th&gt;
&lt;th&gt;Foundry agent&lt;/th&gt;
&lt;th&gt;Custom Azure build&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Determinism&lt;/td&gt;
&lt;td&gt;Fixed path, every run&lt;/td&gt;
&lt;td&gt;Reasons over unstructured input&lt;/td&gt;
&lt;td&gt;Whatever you code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auditability&lt;/td&gt;
&lt;td&gt;Line-by-line run history&lt;/td&gt;
&lt;td&gt;Trace and explain&lt;/td&gt;
&lt;td&gt;You build the logging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;Milliseconds to seconds&lt;/td&gt;
&lt;td&gt;Model round-trips&lt;/td&gt;
&lt;td&gt;As fast as you engineer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance surface&lt;/td&gt;
&lt;td&gt;Power Platform DLP&lt;/td&gt;
&lt;td&gt;Foundry plus M365 admin&lt;/td&gt;
&lt;td&gt;You own everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintained by&lt;/td&gt;
&lt;td&gt;Citizen dev or fusion team&lt;/td&gt;
&lt;td&gt;AI team&lt;/td&gt;
&lt;td&gt;Platform engineering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost model&lt;/td&gt;
&lt;td&gt;Per-user or per-flow license&lt;/td&gt;
&lt;td&gt;Consumption billing&lt;/td&gt;
&lt;td&gt;Full run cost plus headcount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failure mode&lt;/td&gt;
&lt;td&gt;Visible error, run stops&lt;/td&gt;
&lt;td&gt;Plausible wrong answer&lt;/td&gt;
&lt;td&gt;Depends on your discipline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read the failure-mode row twice. A flow that breaks throws an error and stops. An agent that breaks produces a confident, plausible, wrong answer and keeps going. That single difference should drive more architecture decisions than every capability slide from Build combined.&lt;/p&gt;

&lt;p&gt;Three illustrative examples, not client work. Invoice approval routing: fixed path, mandatory audit trail, defined approvers. Flow wins, and putting an agent here adds probabilistic risk for zero benefit. Triaging unstructured support email into categorized tickets: free text in, judgment call out. Agent wins, wrapped in human review while you build confidence in its accuracy. A latency-sensitive fraud-scoring step inside an existing event pipeline: milliseconds matter and the data plane is bespoke. Custom Azure build wins, and no managed agent platform changes that.&lt;/p&gt;

&lt;p&gt;Default to a flow. Escalate to an agent only when the flow's branching logic becomes unmaintainable, which is the honest signal that you need reasoning rather than more switch cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI copilots vs custom Azure build: what Teams publishing changes
&lt;/h2&gt;

&lt;p&gt;For years, the strongest argument in the AI copilots vs custom Azure build debate was distribution. Getting an assistant in front of users inside Teams meant bot registrations, manifest packaging, and admin negotiations that pushed teams toward custom front ends instead. Agents &lt;a href="https://learn.microsoft.com/microsoft-365-copilot/extensibility/publish" rel="noopener noreferrer"&gt;publishing directly to Teams and Microsoft 365 Copilot&lt;/a&gt; removes much of that work, though admin approval gates and tenant catalog policies still stand between "published" and "in front of users."&lt;/p&gt;

&lt;p&gt;So when does a custom build still win? Three cases hold: bespoke data-plane requirements the platform will not accommodate, latency-sensitive paths where a model round-trip through managed infrastructure is unacceptable, and orchestration patterns the platform does not expose. If your custom-build rationale was distribution, it is now weaker. If it was control, it holds completely.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Published is not governed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An agent appearing in Teams does not mean it is governed in Teams. Before you ship, settle who owns &lt;a href="https://learn.microsoft.com/power-platform/admin/wp-data-loss-prevention" rel="noopener noreferrer"&gt;Power Platform DLP policy&lt;/a&gt;, who monitors agent data handling through &lt;a href="https://learn.microsoft.com/purview/ai-microsoft-purview" rel="noopener noreferrer"&gt;Microsoft Purview&lt;/a&gt;, and who manages &lt;a href="https://learn.microsoft.com/microsoft-365-copilot/manage-copilot-agents-integrated-apps" rel="noopener noreferrer"&gt;agent lifecycle in the M365 admin center&lt;/a&gt;. Agents surface what existing permissions already allow. An oversharing problem you tolerated with search becomes an incident when an agent presents the same file conversationally.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wrote about the guardrail layer this requires in &lt;a href="https://az365.ai/blog/power-platform-governance-guardrails" rel="noopener noreferrer"&gt;Power Platform governance guardrails&lt;/a&gt;, and everything there applies double once agents enter the tenant. Distribution just got easy. Governance did not, and the gap between the two is now your problem, not Microsoft's.&lt;/p&gt;

&lt;h2&gt;
  
  
  Toolboxes, Routines, and Memory: the governance story hiding in the features
&lt;/h2&gt;

&lt;p&gt;A sourcing caveat first: public documentation on Toolboxes and Routines is still thin as of this writing. Treat what follows as directional, and verify specifics against current Microsoft Learn docs before you commit an architecture to them.&lt;/p&gt;

&lt;p&gt;Directionally, Toolboxes and Routines read like productivity features and are not. A Toolbox is a curated, scoped collection of capabilities an agent can reach, which means policy can live at the tool-grant level instead of being re-litigated per agent. A Routine is a declarative, reviewable definition of how an agent executes a task, which moves agent behavior toward something a change advisory board can actually reason about. Together they are Microsoft's answer to the single biggest objection enterprise IT raises against agents: unpredictability. What remains unconfirmed publicly is the RBAC model, versioning guarantees, and whether approval workflows are built in. Ask those questions before you standardize.&lt;/p&gt;

&lt;p&gt;Adopt Routines before you scale agents, not after. Retrofitting predictability onto fifty deployed agents is a rewrite. Building it into your first three is a template.&lt;/p&gt;

&lt;p&gt;Memory is the unglamorous feature that matters most, and it cuts both ways. Persistent context across sessions is what separates a chatbot from an assistant, and users notice immediately. But persistent memory is persistent data retention, and it creates four specific liabilities. First, retention itself: confirm where memory is stored, what the default retention period is, and whether expiry is configurable, against &lt;a href="https://learn.microsoft.com/azure/ai-foundry/how-to/concept-data-privacy" rel="noopener noreferrer"&gt;Microsoft Learn's data and privacy documentation&lt;/a&gt; rather than the release blog. Second, subject rights: a GDPR erasure request that touches agent memory needs a programmatic, auditable purge path, and you should prove that path exists before go-live. Third, reproducibility: explaining a past agent decision requires knowing what memory state existed at inference time, so confirm memory reads and writes land in your traces. Fourth, scope isolation: memory scoped wrong bleeds context between users, and that is a test case, not an assumption.&lt;/p&gt;

&lt;p&gt;Treat everything an agent remembers as PII until proven otherwise. Marketing copy does not survive a Purview audit. Documentation does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent Optimizer: watch list, not roadmap
&lt;/h2&gt;

&lt;p&gt;Everyone ships agent builders. Almost nobody ships agent evaluators, which is why so many agents die between demo and production. Agent Optimizer, in private preview, looks like Microsoft acknowledging that gap: a harness for testing and tuning agent behavior rather than eyeballing it.&lt;/p&gt;

&lt;p&gt;Private preview means unconfirmed. Do not plan Q3 around capabilities that can change or vanish before GA. For compliance evidence today, anchor on the GA evaluation tooling and tracing you can already run, which is exactly the discipline I argue for in &lt;a href="https://az365.ai/blog/evaluating-ai-agents-before-production" rel="noopener noreferrer"&gt;evaluating agents before production&lt;/a&gt;. Put Optimizer on your watch list and revisit at GA.&lt;/p&gt;

&lt;h2&gt;
  
  
  The decision gate to run before you build
&lt;/h2&gt;

&lt;p&gt;Do not end your next planning meeting with "let's build an agent." End it with this gate, in order, and stop at the first exit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Is the execution path fixed and known?&lt;/strong&gt; Build a flow. Stop here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the input genuinely require reasoning over unstructured content?&lt;/strong&gt; If no, it is a flow with more branches. If the branches have become unmaintainable, continue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you tolerate a plausible wrong answer, or wrap the agent in human review until you cannot find one?&lt;/strong&gt; If neither, it is not an agent candidate yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do latency, data-plane, or orchestration requirements exceed what the platform exposes?&lt;/strong&gt; If yes, it is a custom Azure build and you own everything that implies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Before any agent ships:&lt;/strong&gt; DLP owner named, lifecycle owner named, memory retention verified against Learn docs, erasure path proven, evaluation harness running on GA tooling.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The best production pattern I know is a deterministic wrapper around a probabilistic core: the flow owns the trigger, the approvals, and the audit trail, and the agent owns only the judgment call in the middle. Microsoft just handed you a faster way to ship agents. Run the gate, and what you choose not to build will matter more than what you do.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/microsoft-agent-vs-flow/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
    </item>
    <item>
      <title>From Zero to Autonomous: An Agentic Development Workflow with Claude Code and Azure ML</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Thu, 16 Jul 2026 15:28:07 +0000</pubDate>
      <link>https://dev.to/az365ai/from-zero-to-autonomous-an-agentic-development-workflow-with-claude-code-and-azure-ml-5e3n</link>
      <guid>https://dev.to/az365ai/from-zero-to-autonomous-an-agentic-development-workflow-with-claude-code-and-azure-ml-5e3n</guid>
      <description>&lt;p&gt;Most Claude Code demos fall apart the moment you put them inside an enterprise. Not because the model is weak. Because the demo has no state, no guardrails, and no audit trail, and those three gaps are exactly what an enterprise cannot forgive.&lt;/p&gt;

&lt;p&gt;The teams treating &lt;strong&gt;agentic development with Claude Code&lt;/strong&gt; as a prompt-engineering problem are solving the wrong problem. Prompts are the easy part. The hard part is proving what an autonomous system did, why it did it, and how to undo it. That is an MLOps problem, and MLOps teams have been solving it for years.&lt;/p&gt;

&lt;p&gt;An agent that writes code but cannot prove what it changed is not a productivity gain. It is a liability with a nice UI.&lt;/p&gt;

&lt;p&gt;Here is the position this whole piece defends: if you cannot audit and reverse an agent's action, you do not have a pipeline. You have a risk waiting to be discovered in an incident review.&lt;/p&gt;

&lt;h2&gt;
  
  
  The blueprint: Claude as a first-class Azure ML compute step
&lt;/h2&gt;

&lt;p&gt;Start with the constraint everyone tries to patch around instead of designing for. Claude Code is stateless per invocation. The &lt;a href="https://docs.anthropic.com/en/docs/claude-code/overview" rel="noopener noreferrer"&gt;Claude Code documentation&lt;/a&gt; frames each run as a fresh session, and people immediately reach for durable volumes to persist the CLI's internal session files.&lt;/p&gt;

&lt;p&gt;Do not do that. Mounting the agent's internal session state couples your pipeline to undocumented CLI internals that can change without notice.&lt;/p&gt;

&lt;p&gt;Make the git repo, the Azure ML artifacts, and explicit JSON hand-offs your source of truth instead. State lives in version control and pipeline I/O, not in the agent's memory. This is the single most important architectural decision in &lt;strong&gt;azure ml agentic development&lt;/strong&gt;, and it is the one most tutorials skip.&lt;/p&gt;

&lt;p&gt;Once you accept that, the wiring is clean. Claude becomes a named &lt;a href="https://learn.microsoft.com/en-us/azure/machine-learning/concept-component" rel="noopener noreferrer"&gt;Azure ML pipeline component&lt;/a&gt; with declared inputs and outputs, not a side script someone runs from a laptop. It reads the repo, generates code, and registers artifacts (code bundles, candidate changes) in the &lt;a href="https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment" rel="noopener noreferrer"&gt;model and component registry&lt;/a&gt; like any other run.&lt;/p&gt;

&lt;p&gt;Every invocation gets a run ID, tracked inputs, and tracked outputs. The agent is just another reproducible step in a graph. That is the entire point.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Checkout repo&lt;/strong&gt; The pipeline pulls a pinned git commit into the component workspace. The commit hash is the context anchor for the entire run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent generates&lt;/strong&gt; Claude Code runs as a scoped component step, reading the repo map and prior JSON hand-offs from a mounted datastore, then producing a code bundle as a tracked output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Register artifact&lt;/strong&gt; The generated bundle is registered in the component/model registry with the run ID, so the change is reproducible and attributable later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test gate&lt;/strong&gt; The unit and integration suite runs against the candidate. Failures return as structured context for the next agent turn, not raw logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Promote&lt;/strong&gt; A passing candidate advances to a staging scope and waits at a human approval boundary before it reaches production artifacts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On the access path, treat direct API versus Bedrock as a trust-boundary decision, not a preference. The direct &lt;a href="https://docs.anthropic.com/en/api/overview" rel="noopener noreferrer"&gt;Anthropic API&lt;/a&gt; is one external dependency and a simpler compliance story. &lt;a href="https://aws.amazon.com/bedrock/claude/" rel="noopener noreferrer"&gt;Claude on Amazon Bedrock&lt;/a&gt; means two clouds, added egress and data-residency complexity, and it only earns its place if your org already governs Claude centrally through Bedrock.&lt;/p&gt;

&lt;p&gt;One thing worth checking before you architect around either path: Claude may or may not appear in your Azure AI Foundry model catalog depending on region and subscription. Verify it for your tenant rather than assuming.&lt;/p&gt;

&lt;p&gt;The takeaway is blunt. Model the agent as a pipeline component with tracked I/O, or you lose reproducibility on day one and never get it back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tests as the control plane
&lt;/h2&gt;

&lt;p&gt;Give the agent a reward signal it cannot argue with. In a &lt;strong&gt;claude azure ml pipeline&lt;/strong&gt;, your unit and integration tests are that signal. Claude iterates against the Azure ML test gate until the suite goes green, instead of shipping confident first-pass output that nobody validated.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.anthropic.com/en/docs/build-with-claude/tool-use/overview" rel="noopener noreferrer"&gt;tool-use and iteration patterns&lt;/a&gt; in Anthropic's docs make this loop mechanically simple. The discipline is in the boundaries you put around it.&lt;/p&gt;

&lt;p&gt;Set an explicit iteration cap and a per-run token or cost ceiling so the loop always terminates. Feed failing tests back as structured context (which assertion failed, which file, which expected value), not raw log dumps. The agent fixes faster when the feedback is shaped.&lt;/p&gt;

&lt;p&gt;Now the caveat that separates this from vendor cheerleading. A green suite proves the agent satisfied the tests. It does not prove the tests were right.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Goodhart's Law applies to your test gate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a measure becomes a target, it stops being a good measure. An agent optimizing against a test gate will satisfy the tests, not necessarily your intent. Weak tests produce confidently wrong code that passes every check. Your suite is now the specification, so treat gaps in coverage as gaps in the spec.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This reframes what test coverage means. It is no longer just a quality metric. It is your autonomy budget.&lt;/p&gt;

&lt;p&gt;Thin tests mean a short leash, because everything outside the tests is a place the agent can go wrong without anyone noticing until production. Rich tests mean you can safely let the loop run further before a human looks.&lt;/p&gt;

&lt;p&gt;The takeaway: your test coverage is the length of the leash. Decide it deliberately, not by accident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Governance that makes it shippable
&lt;/h2&gt;

&lt;p&gt;This is where auditability stops being a slogan and becomes configuration. Give the agent a scoped principal, never a shared secret or someone's personal token. &lt;a href="https://learn.microsoft.com/en-us/azure/machine-learning/how-to-identity-based-service-authentication" rel="noopener noreferrer"&gt;Managed identities&lt;/a&gt; and &lt;a href="https://learn.microsoft.com/en-us/azure/machine-learning/how-to-assign-roles" rel="noopener noreferrer"&gt;Azure RBAC&lt;/a&gt; let the agent run as an identity you can scope, log, and revoke.&lt;/p&gt;

&lt;p&gt;Apply least privilege to registries and datastores. The agent writes to a staging scope. It does not write straight to production artifacts, ever. If a run goes wrong, the blast radius is a staging namespace, not your release channel.&lt;/p&gt;

&lt;p&gt;Lineage is the other half. Azure ML tracks runs, and with &lt;a href="https://learn.microsoft.com/en-us/azure/machine-learning/concept-mlflow" rel="noopener noreferrer"&gt;MLflow tracking&lt;/a&gt; every agent action becomes logged, attributable, and reversible. That is the reversibility the opening promised.&lt;/p&gt;

&lt;p&gt;But here is the gap you have to own, because the platform will not close it for you. There is no out-of-box mechanism that cryptographically distinguishes "the agent wrote this" from "the compute identity wrote this." There is no native versioning of the prompt or session that produced a given code change.&lt;/p&gt;

&lt;p&gt;You build that. Custom tagging conventions on runs, the source commit and JSON hand-off captured as artifacts, and git-based review of the diff. This is an architecture responsibility, not a checkbox you tick.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Demo vs enterprise pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A laptop demo skips authentication (it runs as you), skips lineage (nobody can prove what changed), and skips rollback (there is no staging boundary to reverse). An enterprise pipeline treats all three as non-negotiable. The demo optimizes for a fast first result. The pipeline optimizes for defending that result in an audit six months later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Attribution and reversibility are the line between a demo and an &lt;strong&gt;ai agent ci/cd azure&lt;/strong&gt; workflow you can defend when someone asks who changed the auth logic and why. Cross that line before you scale, not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment with a human checkpoint that scales
&lt;/h2&gt;

&lt;p&gt;Full end-to-end autonomy to production is the wrong goal today. Say it plainly, because the vendor marketing will not.&lt;/p&gt;

&lt;p&gt;The right goal is autonomy up to a reviewable, batched checkpoint. The agent runs freely through generation, testing, and staging. A human signs off at the boundary that actually matters: the merge to production.&lt;/p&gt;

&lt;p&gt;Azure ML supports this natively. &lt;a href="https://learn.microsoft.com/en-us/azure/machine-learning/concept-endpoints-online" rel="noopener noreferrer"&gt;Managed online endpoints&lt;/a&gt; with safe rollout and controlled promotion give you a real gate, not a vibe. Autonomy runs up to it. It does not run through it.&lt;/p&gt;

&lt;p&gt;Batch the review so humans approve diffs and lineage together, rather than babysitting every step. A reviewer looking at a coherent change with its test results and lineage attached makes a better decision than one clicking approve forty times an hour.&lt;/p&gt;

&lt;p&gt;Which is the caveat, and it has a name. Approval fatigue is not "reviewers get tired." It is automation complacency: as agent output volume rises and most of it is correct, reviewers calibrate toward trust and miss the rare consequential failure precisely because it looks like all the safe ones.&lt;/p&gt;

&lt;p&gt;The fix is not "review everything." That guarantees complacency. The fix is risk-tiered gating.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk tier&lt;/th&gt;
&lt;th&gt;Example change&lt;/th&gt;
&lt;th&gt;Gate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Docstrings, test additions, isolated refactors with full coverage&lt;/td&gt;
&lt;td&gt;Batched auto-approve with post-hoc audit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;New feature code within an established, well-tested module&lt;/td&gt;
&lt;td&gt;Batched human review of diff plus lineage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Auth logic, schema migrations, security-critical paths&lt;/td&gt;
&lt;td&gt;Mandatory individual sign-off, no batching&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Concentrate human attention on blast radius. Put the human at the one boundary autonomy should never cross, and automate everything before it. That is the shape of a system that scales without quietly rubber-stamping its way into an incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this breaks and the honest limits
&lt;/h2&gt;

&lt;p&gt;Every failure mode here traces back to the two design constraints already covered. Name them up front and gate for them, because they will happen.&lt;/p&gt;

&lt;p&gt;Cost runaway comes from unbounded iteration on large tasks. This is the tests-as-control-plane point turned against you: without a hard iteration cap and cost ceiling, an agent chasing a green suite on a big change can burn through budget re-attempting the same fix. The cap is not optional.&lt;/p&gt;

&lt;p&gt;Context-window drift comes from the statelessness constraint on sprawling monorepos. When the repo map exceeds what the agent can hold, it loses the thread and re-solves problems it already solved. The mitigation is the same JSON hand-off and datastore discipline from the blueprint. Scope the context to the change, do not feed the whole monorepo.&lt;/p&gt;

&lt;p&gt;Then there are the tasks the test-gate model breaks on by design, not by accident.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do not hand these to an agent yet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Untestable correctness (security posture, performance characteristics, architectural fit), irreversible changes (schema migrations, auth logic), and underspecified requirements are not edge cases. Tests encode known properties. These problems live in the unknown ones, so a green suite tells you nothing about whether the agent got them right.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For illustrative planning only: teams often model an iteration cap of three to five attempts per task and a per-run token ceiling before a human is pulled in. Treat those as industry-standard inputs; calibrate against your own data, actuals vary. The number that matters is the one your own test coverage and cost tolerance justify.&lt;/p&gt;

&lt;p&gt;The failure modes are predictable, which means they are gateable. An unpredictable failure is a research problem. A predictable one is an engineering decision you either made or forgot to make.&lt;/p&gt;

&lt;p&gt;If you want the upstream discipline this depends on, our write-up on &lt;a href="https://az365.ai/blog/azure-ml-pipelines-mlops-practice" rel="noopener noreferrer"&gt;building reproducible Azure ML pipelines&lt;/a&gt; covers the tracking foundation, and the piece on &lt;a href="https://az365.ai/blog/ai-agent-guardrails-ci-cd" rel="noopener noreferrer"&gt;guardrails for AI agents in a CI/CD flow&lt;/a&gt; goes deeper on the iteration caps and risk-tiered gating referenced above.&lt;/p&gt;

&lt;p&gt;The teams winning with &lt;strong&gt;agentic development claude code&lt;/strong&gt; are not the ones with the cleverest prompts. They are the ones treating the agent as a governed pipeline component, with tests as its control plane and a human at the one gate that counts. Build that, and autonomy becomes an asset you can defend. Skip it, and you have automated the production of unexplained changes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/agentic-development-claude-code/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
    </item>
    <item>
      <title>Rayfin Decoded: Microsoft's Bet on Prompt-to-Production Backends</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Wed, 15 Jul 2026 15:20:57 +0000</pubDate>
      <link>https://dev.to/az365ai/rayfin-decoded-microsofts-bet-on-prompt-to-production-backends-b6n</link>
      <guid>https://dev.to/az365ai/rayfin-decoded-microsofts-bet-on-prompt-to-production-backends-b6n</guid>
      <description>&lt;p&gt;A coding agent can write an app in minutes. Getting that app into production is still the slow part: a database to stand up, APIs to wire, authentication to configure, access policies to enforce, and infrastructure to own. That gap, between prompt-to-code and prompt-to-production, is where most agentic development quietly stalls.&lt;/p&gt;

&lt;p&gt;At Build 2026, Microsoft put a bet on the table for closing it. &lt;a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Introducing-Rayfin-A-new-AI-first-way-to-build-deploy-and-govern/ba-p/5191676" rel="noopener noreferrer"&gt;Rayfin&lt;/a&gt; is an open-source SDK and CLI that lets developers and coding agents define a complete application backend in code, then deploy it directly into Microsoft Fabric with one command. No manual database setup, no API plumbing, no infrastructure work. The backend lands as a managed Fabric artifact, and its data lands in OneLake.&lt;/p&gt;

&lt;p&gt;This is worth an architect's attention not because it is finished (it is a public preview), but because of which layer it is aiming at. If you read the &lt;a href="https://az365.ai/blog/coding-agents-developer-economics-2026/" rel="noopener noreferrer"&gt;developer-economics argument&lt;/a&gt; that coding agents compress execution but leave the deliver layer alone, Rayfin is the counter-move: Microsoft trying to compress deliver too.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it is.&lt;/strong&gt; An open-source SDK and CLI that defines a backend in code (data models, APIs, access policies, business logic) and deploys it straight into Microsoft Fabric.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The one-command pitch.&lt;/strong&gt; A single deploy provisions the database, authentication, access policies, and APIs, with no manual setup or infrastructure work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where the data goes.&lt;/strong&gt; App data lands in OneLake by default, immediately usable by Power BI, notebooks, and data agents with no pipelines in between.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The launch partner.&lt;/strong&gt; Replit is the exclusive launch partner, so the build environment is an AI-first vibe-coding surface that deploys into a governed Fabric tenant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The architect's catch.&lt;/strong&gt; It compresses the plumbing, not the judgment. It also couples your app and its data to Fabric. Both of those are decisions, not defaults.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Confirmed vs commentary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirmed by Microsoft.&lt;/strong&gt; Rayfin as an open-source SDK and CLI, the define-deploy-run workflow, the one-command provisioning of database, authentication, access policies, and APIs, data landing in OneLake, apps running as managed Fabric artifacts with inherited governance, and Replit as launch partner are all from Microsoft's Fabric announcement, linked inline. Rayfin was announced at Build 2026 on June 2, 2026, and is an early release (reported as a public preview).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commentary (mine).&lt;/strong&gt; The deliver-layer framing, the coupling and lock-in tradeoffs, the maturity caution, and the build-versus-wait guidance are my read of the documented mechanics, not Microsoft positions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What Rayfin actually does
&lt;/h2&gt;

&lt;p&gt;Per Microsoft's &lt;a href="https://community.fabric.microsoft.com/t5/Fabric-Updates-Blog/Introducing-Rayfin-A-new-AI-first-way-to-build-deploy-and-govern/ba-p/5191676" rel="noopener noreferrer"&gt;Fabric announcement&lt;/a&gt;, Rayfin runs a three-step loop, and the interesting part is what each step removes from your plate.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;What you (or the agent) do&lt;/th&gt;
&lt;th&gt;What you no longer hand-build&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Define&lt;/td&gt;
&lt;td&gt;Specify data models, APIs, access policies, business logic, and connections to existing data sources in code via the SDK&lt;/td&gt;
&lt;td&gt;Schema scripts, API scaffolding, auth wiring, policy config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deploy&lt;/td&gt;
&lt;td&gt;Run the CLI once&lt;/td&gt;
&lt;td&gt;Database provisioning, authentication setup, API hosting, infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run&lt;/td&gt;
&lt;td&gt;Use the app&lt;/td&gt;
&lt;td&gt;Pipelines to move data into analytics, and a separate governance story&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The deploy step is the headline: one command, no manual setup or infrastructure work. The payoff is what happens next to the data. Whatever the app writes lands directly in OneLake, where Power BI, notebooks, and data agents can read it immediately, with no copies or pipelines in between. The application runs as a managed Fabric artifact, so it inherits Fabric's governance rather than carrying its own.&lt;/p&gt;

&lt;p&gt;The launch surface matters too. Replit is the exclusive launch partner, which means the intended path is: build in an AI-first environment where an agent does the vibe coding, then deploy that app into a securely managed Fabric tenant. The agent writes the backend definition. Rayfin makes it real inside the data platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is aimed at the layer that did not compress
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://az365.ai/blog/coding-agents-developer-economics-2026/" rel="noopener noreferrer"&gt;developer-economics piece&lt;/a&gt; on this site argued, following Brad DeLong, that agents compress execution while the decide and deliver layers resist automation. Deliver, in that framing, is everything between a working artifact and a governed thing running in production: provisioning, security, data plumbing, the operational surface.&lt;/p&gt;

&lt;p&gt;Rayfin is a direct attempt to compress exactly that. It does not try to make the agent decide better. It tries to make the agent's output deployable without a human spending a week on glue. If it works at scale, it moves a real chunk of the deliver layer from bespoke human work to one command, which is genuinely new.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bet in one line: move the deliver layer from bespoke human glue to a single command.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the optimistic read, and it is a fair one. It is also incomplete, because compressing the mechanics of deliver is not the same as compressing the judgment in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it genuinely solves
&lt;/h2&gt;

&lt;p&gt;Three things here are real and worth naming plainly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glue-code elimination.&lt;/strong&gt; The unglamorous work of standing up a database, wiring auth, and hosting APIs is the part of agentic development that does not parallelize and does not delight anyone. Collapsing it into a deploy command is a real productivity gain, not a demo trick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inherited governance.&lt;/strong&gt; Because the app runs as a managed Fabric artifact, it sits inside the tenant's existing governance rather than reinventing it. For a regulated Microsoft shop, an app that is governed by default is worth more than an app that is fast by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analytics-ready data.&lt;/strong&gt; App data landing in OneLake with no pipeline means the gap between operational data and analytical data closes to zero. The thing your app wrote a second ago is already queryable by Power BI and by Fabric data agents. For teams whose whole reason to exist is turning operational data into decisions, that is the feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it couples you to
&lt;/h2&gt;

&lt;p&gt;Now the architect's other eye. Every one of those benefits is also a coupling decision.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The benefit&lt;/th&gt;
&lt;th&gt;The coupling it implies&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deploys straight into Fabric&lt;/td&gt;
&lt;td&gt;Your backend now lives inside Fabric, not a portable runtime you control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data lands in OneLake by default&lt;/td&gt;
&lt;td&gt;Your application's system-of-record data sits in the analytics platform, with that platform's residency, access, and cost model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inherits Fabric governance&lt;/td&gt;
&lt;td&gt;Your app's governance is Fabric's governance, for better and for worse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-command provisioning&lt;/td&gt;
&lt;td&gt;The provisioning decisions are made for you, which is convenient until the day you need them to be different&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of these are reasons to avoid Rayfin. They are the questions to answer before you adopt it. An app whose data belongs in OneLake and whose lifecycle belongs to Fabric is a great fit. An app that needs to be portable across clouds, or whose system-of-record data should not live in the analytics estate, is not, and no amount of deploy-command convenience changes that.&lt;/p&gt;

&lt;p&gt;There is also the plain maturity point. This is a public preview. The mechanics are documented and the direction is clear, but day-one preview reliability and the long-run cost shape of running production apps as Fabric artifacts have no track record yet. Treat the architecture as real and the operational maturity as unproven.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deliver compresses, accountability does not
&lt;/h2&gt;

&lt;p&gt;Here is the line an architect should hold. Rayfin compresses the mechanics of deliver. It does not compress the judgment in deliver.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The deploy command can&lt;/th&gt;
&lt;th&gt;It cannot decide&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provision the database&lt;/td&gt;
&lt;td&gt;Whether this app should own that data, or whether OneLake is its right home&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wire authentication&lt;/td&gt;
&lt;td&gt;Who should have access, or who owns the incident when the policy is wrong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stand up the APIs in one step&lt;/td&gt;
&lt;td&gt;Whether the thing the agent built is the thing the business needed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the same discipline the rest of this stack demands still applies. The agent drafts the backend definition. A human still decides whether it should exist, verifies that it behaves, and owns it in production. Rayfin removes the week of plumbing. It does not remove the architect.&lt;/p&gt;

&lt;p&gt;Cheap deployment raises the value of judgment, it does not lower it. The cost of shipping the wrong thing just dropped, so the volume of things shipped is about to rise.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to reach for it
&lt;/h2&gt;

&lt;p&gt;A short, honest decision sketch.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reach for it&lt;/strong&gt; when you are building data-centric apps on Microsoft, your data belongs in OneLake anyway, you want governance inherited rather than rebuilt, and you can live with preview-grade maturity for now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wait&lt;/strong&gt; when you need portability across clouds or runtimes, when the app's system-of-record data should not sit in the analytics platform, or when the workload cannot absorb preview-stage risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Either way&lt;/strong&gt;, keep the human gates. Cheap deployment makes verification and accountability more important, not less, because more things will ship.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rayfin is one of the more interesting answers anyone has shipped to the prompt-to-production gap, precisely because it does not pretend the gap is only about code. It treats deployment, data, and governance as the real work, which they are. The judgment about what to point it at stays exactly where it was.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/coding-agents-developer-economics-2026/" rel="noopener noreferrer"&gt;Coding Agents and Developer Economics on the Microsoft Stack&lt;/a&gt; - the deliver-layer argument Rayfin is built to attack.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/copilot-credits-work-iq-cowork-billing-2026/" rel="noopener noreferrer"&gt;Copilot Credits Went Live: What Work IQ and Cowork Actually Cost&lt;/a&gt; - the other June 2026 shift in how Microsoft meters and governs agent work.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/foundry-agents-hosted-vs-in-process-vs-copilot-studio-2026/" rel="noopener noreferrer"&gt;Foundry Hosted vs In-Process vs Copilot Studio Agents&lt;/a&gt; - choosing where an agent actually runs.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/rayfin-fabric-prompt-to-production-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aiaugmenteddev</category>
      <category>rayfin</category>
      <category>aiagents</category>
      <category>ai</category>
    </item>
    <item>
      <title>Coding Agents and Developer Economics on the Microsoft Stack (2026)</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Tue, 14 Jul 2026 15:18:48 +0000</pubDate>
      <link>https://dev.to/az365ai/coding-agents-and-developer-economics-on-the-microsoft-stack-2026-39hn</link>
      <guid>https://dev.to/az365ai/coding-agents-and-developer-economics-on-the-microsoft-stack-2026-39hn</guid>
      <description>&lt;p&gt;Every few years a tool arrives that is supposed to end programming as a paid profession. FORTRAN was going to let scientists write their own code. COBOL was going to let managers read it. SQL was going to let business users query the database without a developer in the room. Each prediction was reasonable. Each was wrong in the same direction: demand for skilled builders went up, not down.&lt;/p&gt;

&lt;p&gt;Brad DeLong's essay &lt;a href="https://braddelong.substack.com/p/coding-agents-as-a-continuation-of" rel="noopener noreferrer"&gt;Coding agents as a continuation of normal software tool evolution&lt;/a&gt; puts AI coding agents in that lineage. His argument is not that agents are unimpressive. It is that they are normal. They compress the part of software work that was already getting compressed - the execution - while leaving the parts that resisted automation for seventy years exactly where they were: deciding what to build, verifying that it works, and holding the contextual understanding that makes both possible.&lt;/p&gt;

&lt;p&gt;That framing matters more in the Microsoft business-apps world than almost anywhere else, because this is the stack where "anyone can build it" has been the marketing promise the longest. Copilot Studio, low-code Power Platform, makers shipping agents without writing a line of C#: the execute phase here is already close to free. So the question DeLong forces is the useful one. If building is no longer the constraint, what is the scarce skill an enterprise actually pays for in 2026?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeLong's read on coding agents, translated to the Microsoft stack.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agents heavily compress &lt;strong&gt;execution&lt;/strong&gt; and assist with &lt;strong&gt;decide&lt;/strong&gt; and &lt;strong&gt;deliver&lt;/strong&gt;, but the accountable judgment at those ends does not transfer.&lt;/li&gt;
&lt;li&gt;Programmer headcount grew by orders of magnitude from 1935 to 2025 as tools got more productive, not less (DeLong's figures: about 2,000 to over 2.5 million).&lt;/li&gt;
&lt;li&gt;Cheaper agents mean more agents, which means more architecture decisions and more governance to own.&lt;/li&gt;
&lt;li&gt;The durable, paid skill on this stack is decision quality, verification discipline, and accountability ownership - not build speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Monday move:&lt;/strong&gt; for one agent you are about to ship, write down who decides what it does, who verifies its output, and whose pager rings when it is wrong in production. If those three names are blank, the agent is not ready, and no model will fill them in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The headcount data is the whole argument
&lt;/h2&gt;

&lt;p&gt;DeLong's strongest move is to put numbers on a thing people assert from intuition. Software tooling has gotten dramatically more productive across ninety years, and the population of people who do software work did not shrink. It multiplied.&lt;/p&gt;

&lt;p&gt;He traces the count across ninety years:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Approximate headcount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1935&lt;/td&gt;
&lt;td&gt;Calculator-tabulator machine wirers&lt;/td&gt;
&lt;td&gt;about 2,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1965&lt;/td&gt;
&lt;td&gt;Coders&lt;/td&gt;
&lt;td&gt;about 80,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1995&lt;/td&gt;
&lt;td&gt;Programmers&lt;/td&gt;
&lt;td&gt;about 500,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;Software developers plus programmers&lt;/td&gt;
&lt;td&gt;about 2.25 million developers plus 250,000 programmers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The population that does software work did not shrink as the tools got more powerful. It grew by orders of magnitude. Even the conservative recent-window read, the thirty years from 1995 to 2025, is on its own roughly a fivefold rise. The assembler did not end the coder. The compiler did not end the assembler programmer. The high-level language did not end the compiler programmer. Each tool moved the work up a level and the number of people doing it grew.&lt;/p&gt;

&lt;p&gt;This is the Jevons-paradox shape, and it is the part of the essay most worth internalizing if your career is on this stack. When a productive input gets cheaper, you do not automatically consume less of it. Often you consume far more, because uses that were previously too expensive to justify suddenly clear the bar. Cheaper software production did not mean less software. It meant software went into places no one would have funded a custom build for in 1995.&lt;/p&gt;

&lt;p&gt;The Microsoft business-apps stack is living through exactly this right now. When a department can stand up a Copilot Studio agent in an afternoon, the answer is not fewer agents. It is more agents, in more corners of the business, owned by more people, touching more data. Every one of those agents is a decision someone made and an outcome someone is accountable for. That work does not compress. It multiplies along with the agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually compresses, and what does not
&lt;/h2&gt;

&lt;p&gt;DeLong's clean line is that writing code was never the bottleneck. The constraints were always upstream and downstream of the keyboard: deciding what to build, verifying that the deliverable is correct, and maintaining the deep contextual understanding that lets you do either one well. Agents are very good at the middle. They are not good at the ends, and there is no strong reason to expect that to change soon.&lt;/p&gt;

&lt;p&gt;It helps to name the three phases plainly and ask which one an AI agent genuinely takes off your plate.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Who owns it after agents arrive&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Decide&lt;/td&gt;
&lt;td&gt;Choosing what to build, for whom, against which constraint. Picking the agent, the data it sees, the boundary it must not cross.&lt;/td&gt;
&lt;td&gt;Human-led. The agent can surface options, but it has no stake and no accountability for the choice.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execute&lt;/td&gt;
&lt;td&gt;Producing the artifact: the flow, the plugin, the prompt, the C# orchestration, the connector wiring.&lt;/td&gt;
&lt;td&gt;Increasingly the agent, with a human in review. This is the phase that compresses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deliver&lt;/td&gt;
&lt;td&gt;Verifying the result is correct, shipping it into production, and owning it on-call when it misbehaves.&lt;/td&gt;
&lt;td&gt;Human-led. The agent can draft tests and checks, but verification and accountability do not transfer to a tool that cannot be held responsible.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the Microsoft stack the three phases are concrete, not abstract. Decide is the architect choosing whether a problem wants a Copilot Studio agent, a Foundry-hosted container, or no agent at all. Execute is the build itself, and this is where Copilot, agents, and low-code tooling have made enormous progress. Deliver is the part that keeps people honest: who signs off that a Copilot Studio agent gives correct answers about pricing or eligibility, and who gets paged when it gives a wrong one to a customer at 2am.&lt;/p&gt;

&lt;p&gt;That last question is the one the technology cannot answer. An agent can draft the plugin. It cannot be the name in the incident channel. Accountability is not a capability you can add to a model. It is a property of a person inside an organization, and it is precisely what an enterprise is buying when it hires a senior architect rather than renting more compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  The job changes shape, exactly as it always has
&lt;/h2&gt;

&lt;p&gt;DeLong's other useful observation is that the profession does not vanish under a new tool. It transforms. He contrasts the 1995 programmer, who translated specifications into code while managing memory and databases by hand, with the 2025 developer, who orchestrates tools and services across distributed systems and owns the result from design through deployment to on-call pager duty. Same profession, different centre of gravity. The hand-management of low-level mechanics fell away. The scope of ownership expanded.&lt;/p&gt;

&lt;p&gt;The Microsoft business-apps practitioner has lived a smaller version of this transition more than once. The person who hand-wrote plugin registration steps and FetchXML by memory in 2012 is, if they kept current, the person designing solution-aware ALM, environment strategy, and governance guardrails in 2026. The low-level mechanics got abstracted. The ownership got bigger. AI agents are the next turn of that same wheel, not a different machine.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Then&lt;/th&gt;
&lt;th&gt;Now&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hand-wrote the plugin, the flow, the query.&lt;/td&gt;
&lt;td&gt;Specs the behavior, then reviews and verifies what the agent drafts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owned a feature inside an application.&lt;/td&gt;
&lt;td&gt;Owns an agent's outcomes from intake through retirement, including its on-call.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bottleneck was typing the code.&lt;/td&gt;
&lt;td&gt;Bottleneck is deciding what is worth building and proving it is correct.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scarce skill: knowing the API surface cold.&lt;/td&gt;
&lt;td&gt;Scarce skill: judgment, verification discipline, and accountability.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of this is a downgrade for the practitioner. It is the opposite. The work that compresses is the work that was always the least differentiated. The work that remains is the work that was always the reason a skilled person was in the room.&lt;/p&gt;

&lt;h2&gt;
  
  
  What should you hire a Microsoft AI architect for in 2026?
&lt;/h2&gt;

&lt;p&gt;Hire for the work that does not compress: decision quality (judging which agents should exist and what they must not touch), verification discipline (proving an agent's output before trusting it), and accountability ownership (being the name on it in production). Build speed is the one axis a tool already wins, so it is the wrong axis to hire on.&lt;/p&gt;

&lt;p&gt;This is the part that matters for anyone making or seeking a senior hire on this stack. If execution compresses and judgment plus accountability stay scarce, then hiring on build speed is hiring on the wrong axis. The candidate who can produce a working flow fastest is competing with a tool that is getting faster every quarter. The candidate who can decide which agent should exist, prove it behaves, and own it when it does not is competing with no tool at all.&lt;/p&gt;

&lt;p&gt;Three things are worth paying for, in order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision quality.&lt;/strong&gt; The ability to look at a business problem and correctly judge whether it wants an agent, what that agent should and should not touch, and what the failure modes are before a line is built. This is the cheapest decision to get wrong and the most expensive to discover late. It does not show up in a coding test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verification discipline.&lt;/strong&gt; The instinct to treat an agent's output as a draft to be proven, not a result to be trusted. On this stack that means eval datasets, deterministic gates, governance checks, and the refusal to ship a Copilot Studio answer to customers because it looked right in three manual tries. The more the build compresses, the more this matters, because the volume of things to verify goes up while the cost of producing them goes down.&lt;/p&gt;

&lt;p&gt;Illustratively, that discipline is concrete on this stack. A Copilot Studio agent that answers pricing-eligibility questions gets an eval set and a gate before it ever faces a customer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Eval set for a Copilot Studio pricing-eligibility agent (excerpt, illustrative)
Q: Are Claude models on Azure covered by Founders Hub credits?    -&amp;gt; Expected: No
Q: Does a sponsored subscription with a card on file get charged? -&amp;gt; Expected: Yes
Q: Which regions deploy Claude on Foundry today?                  -&amp;gt; Expected: East US 2, Sweden Central
# Gate: a Power Automate test flow runs this set on every solution import;
#       a pass-rate below 100% fails the pipeline and the solution does not promote.
# Owner of record: a named architect. Audit: Managed Environment, DLP and log retention on.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can draft that eval set. It cannot decide the threshold, hold the gate, or be the name on the incident. Those are the parts that do not compress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accountability ownership.&lt;/strong&gt; The willingness and the standing to be the name on the agent in production. To define its success metrics, hold its release gate, and lead the response when it misfires. This is the scarcest of the three because it cannot be automated, outsourced, or faked, and because most organisations have not yet built the role that holds it.&lt;/p&gt;

&lt;p&gt;A useful interview reframe falls out of this directly. Stop asking a senior candidate to build the thing faster. Ask them to tell you what should not be built, how they would prove the thing is correct once it exists, and who they think should own it on-call. The answers separate someone who can drive a tool from someone you can hand a production estate to.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The optimistic reading&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeLong's data points to a genuinely good outcome for skilled practitioners. More agents mean more decisions about which agents should exist, more architecture about how they fit together, more governance over what they touch, and more people needed who can judge all of it. Cheaper execution does not retire the architect. It raises the demand for the judgment that execution was never the point of.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Where the analogy has edges
&lt;/h2&gt;

&lt;p&gt;The continuity argument is strong, and it is worth holding it honestly rather than as a comfort blanket. DeLong's own framing - agents as cranes or photolithography, automating heavy execution while humans keep supervisory control - is a claim about supervised execution, not autonomous judgment. It holds while a human stays in the loop on the decide and deliver ends. The open question for the Microsoft stack is how disciplined enterprises will be about keeping that human there as the agents multiply and the temptation to let them self-approve grows.&lt;/p&gt;

&lt;p&gt;That is not a refutation of the thesis. It is the condition the thesis runs on. The headcount grew across ninety years because skilled judgment and accountability stayed essential at every tool transition. They stay essential through this one only if organizations choose to keep them in the loop. The architects who make that case, and who can fill the decide and deliver roles themselves, are the ones the data says will be in more demand, not less.&lt;/p&gt;

&lt;p&gt;DeLong's bottom line, translated for this stack: the agent is the crane. Someone still has to decide where the building goes, sign off that it is safe to occupy, and answer the phone when something cracks. That someone is the hire. It always was.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not mean
&lt;/h2&gt;

&lt;p&gt;The continuity read is optimistic, not a guarantee. Hold the edges honestly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aggregate growth is consistent with individuals being squeezed out of the execute-only tier. The category grows; a given job is not safe by default.&lt;/li&gt;
&lt;li&gt;Agents do draft evals, tests, and options. The human owns the gate, not the absence of agent involvement.&lt;/li&gt;
&lt;li&gt;Cheaper execution is not free quality. Review burden rises with agent volume, it does not fall.&lt;/li&gt;
&lt;li&gt;The historical pattern is correlational, not a law. Ninety years of growth does not guarantee the next ten.&lt;/li&gt;
&lt;li&gt;The headcount-and-continuity read is DeLong's. The hire-for-decide-and-deliver prescription is mine, an extension of his data rather than his claim.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/foundry-agents-hosted-vs-in-process-vs-copilot-studio-2026/" rel="noopener noreferrer"&gt;Foundry Hosted vs In-Process vs Copilot Studio Agents (2026 Decision)&lt;/a&gt;. The decision framework for which build path an agent actually wants, picked by who builds and who runs it.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-copilots-vs-custom-azure-build-buy/" rel="noopener noreferrer"&gt;AI Copilots vs Custom Azure Build: The Build-Buy Decision&lt;/a&gt;. The upstream decide question this article argues is the scarce skill, worked through for the buy-vs-build choice.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://braddelong.substack.com/p/coding-agents-as-a-continuation-of" rel="noopener noreferrer"&gt;Source: Brad DeLong, "Coding agents as a continuation of normal software tool evolution"&lt;/a&gt;. The essay this piece responds to.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/coding-agents-developer-economics-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiaugmenteddev</category>
      <category>aiagents</category>
      <category>copilotstudio</category>
    </item>
    <item>
      <title>AB-100 Decoded (2026): What the Agentic AI Architect Exam Tests</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Mon, 13 Jul 2026 16:24:11 +0000</pubDate>
      <link>https://dev.to/az365ai/ab-100-decoded-2026-what-the-agentic-ai-architect-exam-tests-1173</link>
      <guid>https://dev.to/az365ai/ab-100-decoded-2026-what-the-agentic-ai-architect-exam-tests-1173</guid>
      <description>&lt;p&gt;On June 30, 2026, Microsoft &lt;a href="https://learn.microsoft.com/en-us/credentials/support/retired-certification-exams" rel="noopener noreferrer"&gt;retired four certifications at once&lt;/a&gt;: MB-335 and MB-700 on the Dynamics side, PL-500 and PL-600 on the Power Platform side. The Supply Chain functional consultant, the F&amp;amp;O solution architect, the RPA developer, and the Power Platform solution architect all reached end of life on the same day. And Microsoft's own &lt;a href="https://learn.microsoft.com/en-us/partner-center/announcements/2026-june#specialization-skilling-updates" rel="noopener noreferrer"&gt;Partner Center announcement&lt;/a&gt; names the successor in plain language: those certifications "have collectively been replaced by Agentic AI Business Solutions Architect (AB-100)."&lt;/p&gt;

&lt;p&gt;To be precise about what that means: those four certs covered different job scopes, and AB-100 is not a one-for-one successor to any of them. It is the credential Microsoft now offers where the expert and specialist end of the business-apps track used to sit, and the retired tracks point to it rather than to four new specialist exams. That consolidation is the statement. If you held PL-600 as your credential of record, the upgrade path Microsoft provides runs through agents whether your current projects do or not.&lt;/p&gt;

&lt;p&gt;I am preparing for this exam now, and the study guide turned out to be a more honest document about what this job is becoming than most of the keynote content on the subject. One calibration before the decode: the blueprint certifies knowledge of tooling that is itself young, and several of the capabilities it tests are weeks past general availability or still in preview, so treat it as a statement of direction as much as of settled practice. What follows is what is actually on the exam, what the weighting signals, the sharp edges I would want to know before test day, and how I would prepare with a working architect's calendar.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AB-100 replaces MB-335, MB-700, PL-500, and PL-600&lt;/strong&gt; as the credential where the expert tier of the business-apps track used to sit (successor by position, not a one-for-one scope match), and it is prerequisite gated: you must earn one of 14 associate certs, or passing the exam grants you nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy is the heaviest domain at 40 to 45 percent.&lt;/strong&gt; The exam weights operating agents (monitoring, evaluation, ALM, security) above designing them, which matches what I keep seeing production teams learn the expensive way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The center of gravity is Copilot Studio, not Foundry.&lt;/strong&gt; Credit economics, orchestration modes, governance, and testing detail all live in the low-code tier. Foundry is the escalation path, not the default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The most repeated lesson is when not to build an agent.&lt;/strong&gt; For a certification with agentic in the name, a striking share of the blueprint is elimination logic: use code, a flow, or plain retrieval first.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What Is AB-100? The New Architect Exam and Its Prerequisite Gate
&lt;/h2&gt;

&lt;p&gt;AB-100 is Microsoft's architect-level certification for agentic AI business solutions, spanning Microsoft 365 Copilot, Copilot Studio, Microsoft Foundry, Power Platform, Dataverse, and Dynamics 365. It sits at the top of the new AB series, requires an existing associate certification before it grants anything, and weights production operations above design.&lt;/p&gt;

&lt;p&gt;It is also the exam Microsoft points retired PL-600 and MB-700 holders toward.&lt;/p&gt;

&lt;p&gt;The mechanics, from the &lt;a href="https://learn.microsoft.com/credentials/certifications/agentic-ai-business-solutions-architect/" rel="noopener noreferrer"&gt;certification page&lt;/a&gt;: 100 minutes, proctored through Pearson Vue, may include interactive components, offered in English only, passing score 700, renewal by a free online assessment every 12 months. Pricing varies by country. There is a free practice assessment to calibrate against, and the skills outline receives a minor update on July 22, 2026, so work from the current study guide rather than a cached course.&lt;/p&gt;

&lt;h3&gt;
  
  
  The AB-100 prerequisite gate: 14 qualifying certs, and retired PL-600 or MB-700 do not count
&lt;/h3&gt;

&lt;p&gt;AB-100 is prerequisite locked: you must earn at least one of 14 qualifying certifications, or passing the exam leaves you with a score report instead of a credential. The list, grouped (from the &lt;a href="https://learn.microsoft.com/credentials/certifications/agentic-ai-business-solutions-architect/" rel="noopener noreferrer"&gt;certification page's prerequisite section&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamics 365 associates (8):&lt;/strong&gt; Business Central Developer, Business Central Functional Consultant, Customer Experience Analyst, Customer Service Functional Consultant, Field Service Functional Consultant, Finance Functional Consultant, Supply Chain Management Functional Consultant, and Finance and Operations Apps Developer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Power Platform associates (3):&lt;/strong&gt; Power Platform Developer, Power Platform Functional Consultant, and Power Automate RPA Developer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI associates (3):&lt;/strong&gt; Azure AI Engineer, Azure AI Apps and Agents Developer (currently marked beta), and AI Agent Builder (AB-620).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read that list carefully, because it contains the catch that will surprise exactly the people this exam is aimed at: &lt;strong&gt;every qualifying cert is associate level. The retired expert-tier credentials themselves are not on the list&lt;/strong&gt;, so holding PL-600 or MB-700 alone does not open the gate; what counts is a qualifying associate. Whether an expired associate still counts is exactly the ambiguity in the callout below. The one retired exam whose certification does appear is PL-500: the Power Automate RPA Developer Associate cert is on today's list even though its exam retired in June.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Before you book&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The certification page says only that you must "earn" a qualifying cert. It says nothing about how long an earned prerequisite keeps counting or whether it must be unexpired. Check your qualifying cert's status on your Microsoft Learn profile first, and re-check the prerequisite list after the July 22, 2026 outline update, because the list itself could change that day.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just as important is who should not take AB-100. Microsoft built the AB series with distinct rungs, and climbing the wrong one wastes months. Our &lt;a href="https://az365.ai/blog/microsoft-ai-certifications-2026/" rel="noopener noreferrer"&gt;Microsoft AI certifications hub&lt;/a&gt; maps the whole track; the short version:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Exam&lt;/th&gt;
&lt;th&gt;Certification&lt;/th&gt;
&lt;th&gt;Right person&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AB-900&lt;/td&gt;
&lt;td&gt;Copilot and Agent Administration Fundamentals&lt;/td&gt;
&lt;td&gt;Admins and IT generalists running Copilot and agents in a tenant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-730&lt;/td&gt;
&lt;td&gt;AI Business Professional&lt;/td&gt;
&lt;td&gt;Business users applying AI at work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-731&lt;/td&gt;
&lt;td&gt;AI Transformation Leader&lt;/td&gt;
&lt;td&gt;Executives owning AI strategy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-620&lt;/td&gt;
&lt;td&gt;AI Agent Builder Associate&lt;/td&gt;
&lt;td&gt;Makers and developers building Copilot Studio agent solutions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AB-100&lt;/td&gt;
&lt;td&gt;Agentic AI Business Solutions Architect&lt;/td&gt;
&lt;td&gt;Architects designing and, above all, operating agentic solutions end to end&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is also a commercial forcing function. Per the same &lt;a href="https://learn.microsoft.com/en-us/partner-center/announcements/2026-june#microsoft-365-copilot-specialization-updates-coming-in-july" rel="noopener noreferrer"&gt;Partner Center announcement&lt;/a&gt;, four things change in July 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The specialization is renamed to the Microsoft 365 Copilot specialization&lt;/li&gt;
&lt;li&gt;The MS-102 certification requirement is removed&lt;/li&gt;
&lt;li&gt;The old Applied Skills requirements retire at the end of June 2026&lt;/li&gt;
&lt;li&gt;AB-100 plus AB-620 are added as new certification requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Partners who want that specialization have to staff these credentials, which puts a floor under demand that has nothing to do with individual career choices.&lt;/p&gt;

&lt;p&gt;Independent cert-watchers reached the same reading of the wave: &lt;a href="https://vladtalkstech.com/microsoft-learning-and-credential-news/microsoft-certification-retirements-2026/" rel="noopener noreferrer"&gt;Vlad Catrinescu's 2026 retirements guide&lt;/a&gt; frames AB-100 as the recommended path forward for PL-600 and MB-700 holders and flags the partner-designation risk for firms that do not transition their certified staff.&lt;/p&gt;

&lt;h2&gt;
  
  
  AB-100 Exam Weighting: Why Deploy Beats Design
&lt;/h2&gt;

&lt;p&gt;The exam has three domains. Plan sits at 25 to 30 percent, Design at 25 to 30 percent, and Deploy at 40 to 45 percent: the domain about running agents in production outweighs the one about designing them by a wide margin, and four of its subsections are monitoring, testing, ALM, and responsible AI with security and governance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fab-100-domain-weighting.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fab-100-domain-weighting.png" alt="A proportional horizontal bar chart of AB-100 exam domains. Plan takes 25 to 30 percent and Design takes 25 to 30 percent, both in muted cream tones. Deploy takes 40 to 45 percent in a bold amber accent, labeled the heaviest domain, with four chips underneath: monitor and tune, testing and evaluation, ALM, and responsible AI, security, governance." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;Domain weighting from the current AB-100 study guide; a minor outline update is scheduled for July 22, 2026.
  &lt;p&gt;&lt;/p&gt;

&lt;p&gt;I find that weighting quietly remarkable. The industry demo culture celebrates the design moment: the clever orchestration, the multi-agent diagram, the tool-calling loop. Microsoft's own architect exam says the job is mostly what happens after: whether you can tell a healthy agent from a degrading one, whether you have an evaluation practice instead of a vibe check, whether your deployment survives moving from dev to prod, and whether security holds when a malicious document lands in the agent's context.&lt;/p&gt;

&lt;p&gt;Four Deploy-domain details, pulled from the official study material, illustrate the level it tests at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation targets 80 to 90 percent, not 100.&lt;/strong&gt; Microsoft's &lt;a href="https://learn.microsoft.com/en-us/agents/agent-evaluation/evaluation-checklist" rel="noopener noreferrer"&gt;agent-evaluation checklist&lt;/a&gt; sets a realistic pass-rate band for probabilistic systems and tells you to run test sets multiple times. Copilot Studio ships &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/analytics-agent-evaluation-overview" rel="noopener noreferrer"&gt;seven built-in evaluation methods&lt;/a&gt;, and the details discriminate: the general-quality method needs no expected answer while every match and similarity method requires one, and evaluation results are retained for only 89 days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A near-perfect score is a defect signal, at least in AI Builder.&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/en-us/ai-builder/prediction-performance" rel="noopener noreferrer"&gt;AI Builder's model grading&lt;/a&gt; treats grade D as double-sided: a prediction model can fail by being worse than random or by scoring 99 percent plus, which usually means an overfit model or a leaked column. The exam expects an architect who reads "99 percent accurate" on that report as a warning, not a win.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring is persona-matched, not one dashboard.&lt;/strong&gt; The &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/sec-gov-phase5" rel="noopener noreferrer"&gt;governance guidance&lt;/a&gt; routes makers to Copilot Studio analytics, developers to Application Insights, admins to the Power Platform admin center, and security teams to Sentinel. The &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/analytics" rel="noopener noreferrer"&gt;retention traps&lt;/a&gt; are exam bait and production bait alike: reactions and comments keep 28 days, transcript downloads 29 days, analytics views 360.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ALM is a trap inventory.&lt;/strong&gt; Solutions move metadata, never data. Copilot Studio keeps a &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/alm" rel="noopener noreferrer"&gt;documented list of settings that are not solution-aware&lt;/a&gt; and must be redone per environment, from Application Insights wiring to channel security. And &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/fine-tuning-deploy" rel="noopener noreferrer"&gt;fine-tuned model deployments&lt;/a&gt; bill hourly even at zero traffic and are deleted after 15 idle days while the model itself is retained. The exam wants the architect who knows where deployments actually break.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have been reading this site, that emphasis will sound familiar. The case for &lt;a href="https://az365.ai/blog/ai-agent-vs-flow-when-not-to-build-2026/" rel="noopener noreferrer"&gt;a standing evaluation practice and a per-run spend guard&lt;/a&gt; is not editorial preference anymore; it is what Microsoft's own architect exam tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Microsoft Thinks an Agentic AI Architect Is
&lt;/h2&gt;

&lt;p&gt;Studying the full blueprint, five signals stand out about the role Microsoft is actually certifying.&lt;/p&gt;

&lt;h3&gt;
  
  
  Copilot Studio is the center of gravity
&lt;/h3&gt;

&lt;p&gt;The credit economics, the orchestration modes, and the evaluation and governance detail overwhelmingly live in Copilot Studio. The &lt;a href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ai/strategy" rel="noopener noreferrer"&gt;Cloud Adoption Framework strategy guidance&lt;/a&gt; the exam draws from is explicit about the build ladder: buy a SaaS agent if one meets the functional requirements, extend with low-code before building, and treat pro-code as the escalation rather than the default. Where Foundry does appear, the exam wants the boundary: which agent workloads belong in &lt;a href="https://az365.ai/blog/foundry-agents-hosted-vs-in-process-vs-copilot-studio-2026/" rel="noopener noreferrer"&gt;hosted versus in-process versus Copilot Studio&lt;/a&gt;. The architect this exam certifies is buy-then-extend-then-build, in that order.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architect owns the money
&lt;/h3&gt;

&lt;p&gt;Microsoft's own ROI guidance is exam material at the level of actual numbers. The &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/agent-business-value-measure-impact" rel="noopener noreferrer"&gt;agent business-value framework&lt;/a&gt; computes agent-assisted value as assisted hours times an hourly rate, defaulting to 72 dollars per hour based on U.S. Bureau of Labor Statistics compensation data, and it requires the baseline to come from telemetry rather than surveys. Treat the default as a starting point that flatters the case; substitute your own loaded rate before you show the math to a CFO. Consumption is priced in &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-messages-management" rel="noopener noreferrer"&gt;Copilot Credits&lt;/a&gt;, and the blueprint expects you to know the rate card, not just that one exists:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metered thing&lt;/th&gt;
&lt;th&gt;Credits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Prepaid capacity pack (monthly)&lt;/td&gt;
&lt;td&gt;25,000 credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Classic answer&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Generative answer&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent action&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tenant graph grounding query&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent flow actions (per 100)&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Enforcement behavior differs by feature (the sharp-edges table below carries the thresholds), and pay-as-you-go never enforces a stop, which is the same class of problem as &lt;a href="https://az365.ai/blog/ai-cost-governance-spend-caps-that-dont-cap-2026/" rel="noopener noreferrer"&gt;the spend caps that do not actually cap&lt;/a&gt;. We keep a deeper teardown of the credits model in &lt;a href="https://az365.ai/blog/copilot-credits-work-iq-cowork-billing-2026/" rel="noopener noreferrer"&gt;the Copilot Credits billing decode&lt;/a&gt;, and the ROI framing pairs with &lt;a href="https://az365.ai/blog/copilot-roi-calculator-microsoft-enterprises/" rel="noopener noreferrer"&gt;our Copilot ROI calculator piece&lt;/a&gt;. This is FinOps material, and the blueprint treats it as core architect knowledge rather than an afterthought for procurement.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architect owns agent identity
&lt;/h3&gt;

&lt;p&gt;The identity story splits by tier, and the split is the point.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low code, per-agent identity.&lt;/strong&gt; Every new Copilot Studio agent gets an auto-provisioned &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-certificates-configuration-values" rel="noopener noreferrer"&gt;Microsoft Entra Agent ID&lt;/a&gt;, &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/admin-use-entra-agent-identities" rel="noopener noreferrer"&gt;mandatory for new agents since July 2026&lt;/a&gt;. The identity doc's distinction is worth memorizing: the identity's scopes describe what an agent is configured to do, while access-control and DLP policies decide what it is allowed to do at the moment of execution, revalidated at every connector call. Conditional Access enforcement on agent identities currently applies only in the Teams channel, a scoping detail worth knowing before you promise it everywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro code, per-project identity.&lt;/strong&gt; In Foundry, &lt;a href="https://learn.microsoft.com/en-us/azure/architecture/ai-ml/architecture/baseline-microsoft-foundry-chat" rel="noopener noreferrer"&gt;all agents within a single project share the same managed identity&lt;/a&gt;, so least privilege forces a separate project per distinct access pattern. That is a wider blast radius by default than the low-code tier, and exactly the kind of detail that separates a working deployment from an audit finding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the attack side, the blueprint covers &lt;a href="https://learn.microsoft.com/en-us/security/zero-trust/sfi/defend-indirect-prompt-injection" rel="noopener noreferrer"&gt;defense against indirect prompt injection&lt;/a&gt; in layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt shields screening documents and other untrusted content&lt;/li&gt;
&lt;li&gt;Spotlighting to separate instructions from data&lt;/li&gt;
&lt;li&gt;Guardrails at the tool-call boundary&lt;/li&gt;
&lt;li&gt;A human in the loop for consequential actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treat the stack as risk reduction, not prevention: assume an injection succeeds sometimes and design the blast radius accordingly. Status calibration belongs here too: the Agent ID platform &lt;a href="https://learn.microsoft.com/en-us/entra/fundamentals/whats-new" rel="noopener noreferrer"&gt;went GA in April 2026&lt;/a&gt;, while several surrounding governance features are still in preview. My read of the balance: cost governance and agent identity are the blueprint's two obsessions, while data science barely appears.&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft-governed does not mean Microsoft-only
&lt;/h3&gt;

&lt;p&gt;The blueprint normalizes Salesforce, ServiceNow, and Zendesk as systems the agents serve, and Anthropic's Claude models appear inside the &lt;a href="https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-router" rel="noopener noreferrer"&gt;Azure model router&lt;/a&gt; and computer-use scenarios. Status matters here: the router itself is GA, while its Claude-model support is in preview, and Claude models must be deployed separately before the router can use them. The exam expects you to know multi-vendor mechanics, not just tolerate them.&lt;/p&gt;

&lt;h3&gt;
  
  
  The most repeated lesson is restraint
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ai-agents/business-strategy-plan" rel="noopener noreferrer"&gt;planning guidance&lt;/a&gt; opens with elimination logic: structured, rule-bound work goes to code or non-generative automation; static question answering over a fixed corpus goes to classic retrieval; an agent is justified only for multi-step, adaptive, many-tool work. &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/flows-overview" rel="noopener noreferrer"&gt;Agent flows are deterministic on purpose&lt;/a&gt; despite the name. Multi-agent designs are gated behind real conditions like security boundaries and separate owning teams. For a certification named agentic AI, the single strongest through-line is knowing when not to build one, which is the same &lt;a href="https://az365.ai/blog/ai-agent-vs-flow-when-not-to-build-2026/" rel="noopener noreferrer"&gt;lowest-rung-that-works elimination ladder&lt;/a&gt; we have argued for here, now with an exam number attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Worked Example: An Invoice-Dispute Agent, the Way AB-100 Thinks
&lt;/h2&gt;

&lt;p&gt;Here is the blueprint's instinct applied to a request every business-apps architect has heard some version of: "Finance wants an agent to handle vendor invoice disputes." Walk every slice down the elimination ladder before you accept the word "agent."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fab-100-elimination-ladder.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Faz365.ai%2Fimages%2Fblog%2Fdiagrams%2Fab-100-elimination-ladder.png" alt="A four-row decision diagram for the invoice-dispute request. Policy questions map to classic retrieval, not an agent. Email classification and routing maps to an agent flow, deterministic by design. Cross-system investigation where each query depends on the last result maps to one guarded agent with least privilege, human approval, and audit logging. Only the investigator plus a payment approver with different data access justifies multi-agent, because a security boundary demands it." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;Three quarters of the request was never an agent.
  &lt;p&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The lookup slice is not an agent.&lt;/strong&gt; "What is our late-payment policy for tier-2 vendors" is static question answering over a fixed policy corpus (in this stack, grounded knowledge sources in Copilot Studio or an Azure AI Search index). That is classic retrieval, grounded and cited, and building an agent for it buys non-determinism with no payoff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The triage slice is not an agent either.&lt;/strong&gt; Classifying an incoming dispute email and routing it to the right queue is one model judgment inside fixed steps. That is an agent flow: deterministic by design despite the name, billed per action through Copilot Studio consumption, no orchestration loop anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One slice is genuinely agent-shaped.&lt;/strong&gt; Investigating a disputed invoice across the ERP, the vendor's email thread, and the contract terms, where the next query depends on what the last one returned, cannot be drawn as branches in advance. That slice earns an agent, with event triggers, least-privilege access, a human approval on any credit action, and audit logging, which is precisely how the blueprint scopes autonomous agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-agent is gated, not default.&lt;/strong&gt; The blueprint's conditions are concrete: a security boundary to respect, separate owning teams, planned growth. A dispute investigator and a payment approver with different data access qualify. Splitting one workload into five agents because the diagram looks impressive does not.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then the Deploy domain takes over, because the exam's real question is not "can you design this" but "can you run it":&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A labeled evaluation set with an 80 to 90 percent pass band, re-run on every prompt or tool change&lt;/li&gt;
&lt;li&gt;Monitoring routed to the right persona per surface&lt;/li&gt;
&lt;li&gt;Credit consumption modeled before the pilot, not after the invoice&lt;/li&gt;
&lt;li&gt;Dev-to-prod through solutions, with the not-solution-aware settings on a per-environment checklist&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the exam in miniature. Three quarters of the request was never an agent, and the quarter that was carries an operations bill the demo never shows.&lt;/p&gt;

&lt;h2&gt;
  
  
  AB-100 Sharp Edges Worth Knowing Before Test Day
&lt;/h2&gt;

&lt;p&gt;A handful of product facts from the study material are both likely exam discriminators and genuinely useful at work. Each traces to current Microsoft Learn documentation, and GA-versus-preview status is tagged where it matters. Two rows deserve their sources up front. &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/computer-use" rel="noopener noreferrer"&gt;Computer use&lt;/a&gt; is GA, billed per step, and its hosted browser is documented as not for production use; the &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/requirements-messages-management" rel="noopener noreferrer"&gt;credit enforcement thresholds&lt;/a&gt; come from the same consumption doc as the rate card above.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;The detail that separates a pass from a guess&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model router&lt;/td&gt;
&lt;td&gt;The model subset you configure doubles as the failover set. Configure a single model and you silently have no failover. Claude support is preview, and Claude models must be deployed separately first.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evaluation (GA)&lt;/td&gt;
&lt;td&gt;Seven built-in test methods in Copilot Studio; only the general-quality method works without an expected answer. Results retain 89 days.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analytics retention&lt;/td&gt;
&lt;td&gt;Reactions and comments 28 days, transcript downloads 29 days, analytics views 360 days. Long retention means exporting to Dataverse, not hoping.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Builder grading&lt;/td&gt;
&lt;td&gt;Grade D flags both worse-than-random and 99-percent-plus models. Near-perfect accuracy usually means a leaked column.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fine-tuned models&lt;/td&gt;
&lt;td&gt;Storage is free, but a deployment bills hourly at zero traffic and is deleted after 15 idle days. The model survives; the endpoint does not.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ALM&lt;/td&gt;
&lt;td&gt;Solutions move metadata, never data. App Insights settings, manual authentication, channel security, and sharing are not solution-aware and must be redone per environment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credits enforcement&lt;/td&gt;
&lt;td&gt;Whole-agent disablement triggers at 125 percent of prepaid capacity, but agent flows block at 100 percent, and pay-as-you-go never enforces a stop.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Computer use (GA)&lt;/td&gt;
&lt;td&gt;Billed per step, 5 credits standard and 15 premium; the hosted browser is explicitly not for production use.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of these are trick knowledge. Every row is a production incident waiting for a calendar date, and I have watched close cousins of two of them: an analytics window that quietly expired before the retrospective that needed it, and an idle fine-tuned endpoint billing for weeks at zero traffic because nobody knew hourly billing survived zero usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Prepare for AB-100: A Three-Week Plan With a Day Job
&lt;/h2&gt;

&lt;p&gt;The exam's own material points the way, and the weighting tells you where the hours go. Here is the plan I am running, sized for a working architect at roughly eight to ten hours a week over three weeks.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Hours&lt;/th&gt;
&lt;th&gt;Done means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Deploy domain: monitoring personas, the seven evaluation methods, ALM traps, responsible AI and agent identity&lt;/td&gt;
&lt;td&gt;~10&lt;/td&gt;
&lt;td&gt;One trial-tenant agent taken through evaluation runs, solution export, and import into a second environment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Design domain: orchestration modes and what each unlocks, first-party Dynamics 365 agents, extensibility boundaries&lt;/td&gt;
&lt;td&gt;~8&lt;/td&gt;
&lt;td&gt;You can say from memory which capabilities require generative orchestration and which first-party agent maps to which scenario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Plan domain plus calibration: CAF AI strategy, ROI and credit math, then the free practice assessment&lt;/td&gt;
&lt;td&gt;~6&lt;/td&gt;
&lt;td&gt;Practice assessment comfortably above the passing threshold before you book&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three notes on the plan:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clear the gate first.&lt;/strong&gt; Check the 14-cert list above against your Learn profile and confirm your qualifying associate cert is current. If you hold none, AB-620 or &lt;a href="https://learn.microsoft.com/en-us/credentials/certifications/exams/ai-103/" rel="noopener noreferrer"&gt;AI-103&lt;/a&gt; are the natural on-ramps depending on whether you live in Copilot Studio or in code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Study Deploy first, not last.&lt;/strong&gt; It is the heaviest domain and the least demo-friendly, and hands-on beats video for it: a trial tenant with Copilot Studio, one agent taken through evaluation runs, solution export, and a second environment teaches the testing and ALM subsections better than any course. Work from the &lt;a href="https://learn.microsoft.com/credentials/certifications/resources/study-guides/ab-100" rel="noopener noreferrer"&gt;official study guide&lt;/a&gt; outline and read the linked product docs, because the discriminating details live there, not in summaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mind the outline date.&lt;/strong&gt; The skills outline gets a minor update on July 22, 2026, so pull the current study guide rather than a cached course. As of this writing, third-party prep courses for AB-100 barely exist, which cuts both ways: no shortcut courses, but also no stale ones. The primary docs are the actual source of truth.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What AB-100 Does Not Certify
&lt;/h2&gt;

&lt;p&gt;Honesty about the boundary keeps the credential useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not the retired certs' depth.&lt;/strong&gt; It does not replace the domain depth of MB-335 supply-chain work, MB-700 F&amp;amp;O architecture, or PL-500 RPA engineering; those bodies of knowledge no longer have a dedicated exam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge of operations, not operating experience.&lt;/strong&gt; It certifies that you know the controls, evaluation methods, and traps exist, not that your evaluation sets, data hygiene, and spend guards actually hold in your tenant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not Azure platform architecture.&lt;/strong&gt; Landing zones, networking, and workload architecture remain AZ-305 territory, which lives outside the business-apps track and is unaffected by this wave.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a project filter.&lt;/strong&gt; Passing it does not make agents the right answer for your project mix; the exam itself spends its planning domain teaching the opposite.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Verdict: Is AB-100 Worth Taking?
&lt;/h2&gt;

&lt;p&gt;For architects who built careers on PL-600-era credentials, yes, with eyes open: AB-100 is the continuation of the role's credential line rather than an optional specialty. It is the only architect-tier credential Microsoft now offers where those four used to sit within the business-apps track. Whether employers and clients treat it as required is a market outcome that will take a year to observe; what is already fixed is the partner-specialization requirement and the absence of an alternative in this track. The content itself is a fair, occasionally blunt statement of what the role now requires: agent restraint at planning time, product-boundary fluency at design time, and operations, evaluation, cost control, and security discipline above everything else.&lt;/p&gt;

&lt;p&gt;One caveat belongs next to the credential: the exam tests that you know the operational controls exist, not that yours work. Pair it with a standing evaluation set, honest baselines, and a spend guard, or it certifies a vocabulary.&lt;/p&gt;

&lt;p&gt;That said, the emphasis is the encouraging bit. The exam does not certify enthusiasm. It certifies the unglamorous operational competence that separates the agent that survives contact with production from the one that becomes next quarter's writedown. If your instinct on agentic AI has been to ask what could go wrong before what could be automated, this exam was written for how you already work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Exam facts verified against Microsoft Learn on 2026-07-11. AB-100's skills outline receives a minor update on 2026-07-22; check the &lt;a href="https://learn.microsoft.com/credentials/certifications/resources/study-guides/ab-100" rel="noopener noreferrer"&gt;study guide&lt;/a&gt; for the current version before booking.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/ab-100-agentic-ai-architect-certification-decode-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
      <category>certifications</category>
      <category>career</category>
    </item>
    <item>
      <title>How to Align Claude Code With Your Codebase: 6 Techniques (2026)</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sun, 12 Jul 2026 14:49:19 +0000</pubDate>
      <link>https://dev.to/az365ai/how-to-align-claude-code-with-your-codebase-6-techniques-2026-3k28</link>
      <guid>https://dev.to/az365ai/how-to-align-claude-code-with-your-codebase-6-techniques-2026-3k28</guid>
      <description>&lt;p&gt;A coding agent does not invent a house style. It absorbs yours. Point Claude Code at a repo where every feature scatters its own LLM calls, mixes data access into the UI, and skips tests, and the agent will produce more of exactly that. It is not being lazy. It is doing what it was asked to do: extend the codebase in the codebase's own idiom.&lt;/p&gt;

&lt;p&gt;That is one of the most useful things to understand about working with coding agents. As the team at Towards Data Science put it, &lt;a href="https://towardsdatascience.com/how-to-effectively-align-with-claude-code/" rel="noopener noreferrer"&gt;the coding agent will just follow the natural pattern in your codebase&lt;/a&gt;. Your existing habits, good and bad, become the agent's defaults. Alignment is the work of closing the gap between what you want, what the agent builds, and what the project actually needs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coding agents imitate the patterns already in your repo, so bad structure perpetuates itself. To align Claude Code with your intent: refactor toward the pattern you want copied, use plan mode before any implementation, load the full context including constraints like cost, encode recurring corrections as project memory, mechanize hard rules as hooks so they cannot be skipped, and run independent reviewer agents to catch what same-session review misses. This works the same whether the agent writes Power Platform solutions, Dataverse plug-ins, Azure infrastructure-as-code, or content.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What does it mean to align a coding agent with your codebase?
&lt;/h2&gt;

&lt;p&gt;Alignment is closing the gap between three things that rarely match on their own: what you envision, what the agent builds from your prompt and the repo's patterns, and what the project actually needs. You close it with context, encoded rules, and gates the agent cannot skip, not with a smarter model.&lt;/p&gt;

&lt;p&gt;Every agent-assisted task involves three mental models that rarely match:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you envision.&lt;/strong&gt; The design in your head, including the constraints you never said out loud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What the agent implements.&lt;/strong&gt; Its best reading of your prompt plus the patterns it found in the repo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What the project actually needs.&lt;/strong&gt; The correct answer, which sometimes differs from both of the above.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Misalignment is the distance between these three. The dangerous case is not when the agent produces something broken. Broken code announces itself. The dangerous case is when the agent produces something technically correct but contextually wrong: code that compiles, passes the obvious tests, and solves a problem you did not actually have. That output looks finished, so it slips through review, and you discover the mismatch only after it is wired into three other modules.&lt;/p&gt;

&lt;p&gt;Incomplete specifications are the usual cause. If you ask for "a service that calls the model and returns a summary" without mentioning that the workload runs on a per-call budget, the agent will reach for the most capable model and the richest prompt it can justify. Correct against the words. Wrong against the wallet. The fix is rarely a smarter agent. It is more context, supplied earlier.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Source of truth&lt;/th&gt;
&lt;th&gt;Failure mode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What you envision&lt;/td&gt;
&lt;td&gt;Your intent, often unspoken&lt;/td&gt;
&lt;td&gt;Constraints stay in your head&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What the agent builds&lt;/td&gt;
&lt;td&gt;Your prompt plus repo patterns&lt;/td&gt;
&lt;td&gt;Imitates bad structure faithfully&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What the project needs&lt;/td&gt;
&lt;td&gt;The actual correct design&lt;/td&gt;
&lt;td&gt;Nobody states it explicitly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Six Techniques You Can Apply This Week
&lt;/h2&gt;

&lt;p&gt;These are the moves that close the gap. None of them require a new model or a plugin. They are discipline, encoded so the discipline does not depend on you remembering it.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Refactor toward the pattern you want imitated
&lt;/h3&gt;

&lt;p&gt;If you want the agent to write clean data access, give it one clean example first. The agent generalizes from what it reads far more reliably than from what you describe. Telling it "keep concerns separated" is weaker than showing it one module where the model call lives behind a single typed interface and the rest of the code depends on that interface, not on the SDK.&lt;/p&gt;

&lt;p&gt;This is leverage, not housekeeping. Spend an hour refactoring the one file the agent will treat as the reference, and every subsequent generation inherits the better shape. In a Microsoft shop the same rule holds: if your first Dataverse plug-in puts business logic, retrieval, and tracing all in one &lt;code&gt;Execute&lt;/code&gt; method, the next ten the agent writes will look the same. Establish the seam you want copied, then let the agent copy it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Use plan mode before any implementation
&lt;/h3&gt;

&lt;p&gt;Claude Code's plan mode lets the agent investigate the repo and propose an approach without writing code. Use it as a contradiction detector. Describe the goal, ask the agent to read the relevant files, and have it tell you where your idea collides with what already exists.&lt;/p&gt;

&lt;p&gt;This is where unspoken assumptions surface cheaply. The agent will say things like "the existing flow assumes synchronous calls, but this design needs a queue" or "there is no place to inject this config without touching the shared client." You resolve those in conversation, for free, before a single line is committed. Skipping plan mode does not remove the contradictions. It just defers them to the diff, where they cost an implementation pass to unwind.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Load the full context, including the constraints
&lt;/h3&gt;

&lt;p&gt;Agents implement against the context you give them, so withholding context is the same as misleading them. The constraints you forget to state are the ones that cause rework.&lt;/p&gt;

&lt;p&gt;Bring the whole picture into the session: the relevant meeting notes, the chat thread where the real requirement was argued out, the architecture doc, and the limits. Cost is the constraint people most often omit, and it is the one that quietly produces expensive solutions. Latency budgets, compliance boundaries, the model tier you are allowed to call, the data that must never leave a region: state them up front. An illustrative example, kept generic on purpose: a team asks an agent to add document summarization and gets back a design that calls a premium model on every page load. Correct to the prompt, wrong to the budget, and entirely avoidable by saying "this runs on a tight per-request cost ceiling" in the first message.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Encode recurring corrections as project memory
&lt;/h3&gt;

&lt;p&gt;The second time you correct the agent on the same thing, stop correcting and start recording. Claude Code &lt;a href="https://code.claude.com/docs/en/memory" rel="noopener noreferrer"&gt;reads a &lt;code&gt;CLAUDE.md&lt;/code&gt; file at the start of every session&lt;/a&gt;, and that file is your standing instruction set. House rules belong there: naming conventions, the libraries you have standardized on, the patterns you have banned, the commands the agent should run before declaring work done.&lt;/p&gt;

&lt;p&gt;For durable behavioral rules that accumulate over time, this content platform keeps a synced agent-memory directory alongside &lt;code&gt;CLAUDE.md&lt;/code&gt;, with an index file and individual rule files that the agent loads on every session. Each rule was a correction once: a phrasing the brand does not use, a verification step that must run before publishing, an asset that must never be deleted during cleanup. Captured as memory, a correction becomes a default. You can edit this memory directly or through the &lt;code&gt;/memory&lt;/code&gt; command. The point is that a rule written down once stops costing you attention forever.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6t0o6rrby4uw2310vmmh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6t0o6rrby4uw2310vmmh.png" alt="Diagram showing the alignment loop from refactoring patterns through plan mode, full context, project memory, mechanized gates, and independent review" width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Alignment is a loop: each correction either gets encoded as memory or mechanized as a gate, so it never has to be made twice.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Mechanize hard rules as hooks and gates
&lt;/h3&gt;

&lt;p&gt;Memory shapes behavior, but it does not enforce it. An instruction in &lt;code&gt;CLAUDE.md&lt;/code&gt; is a strong suggestion, and a strong suggestion can be missed under a long context or an ambiguous prompt. For the rules you cannot afford to have skipped, move from suggestion to mechanism.&lt;/p&gt;

&lt;p&gt;Claude Code &lt;a href="https://code.claude.com/docs/en/hooks" rel="noopener noreferrer"&gt;supports hooks, configured in &lt;code&gt;settings.json&lt;/code&gt;&lt;/a&gt;, that run on events such as before a tool call (PreToolUse). A hook is ordinary code, so it can inspect the action and block it. On this platform there is a publish gate built exactly this way: a PreToolUse hook intercepts any attempt to push a site repo and refuses unless the pre-flight check has passed. That check is deterministic. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;verifies the frontmatter is complete,&lt;/li&gt;
&lt;li&gt;confirms the hero image and its WebP companion both exist,&lt;/li&gt;
&lt;li&gt;checks that every internal link resolves,&lt;/li&gt;
&lt;li&gt;and scans for forbidden characters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent cannot talk its way past it, because the gate is not part of the conversation. It is part of the harness. The hook is a few lines wired into &lt;code&gt;settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node framework/hooks/git-push-gate.mjs"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The referenced script reads the proposed command on stdin and, when it is a &lt;code&gt;git push&lt;/code&gt; from a site repo with no fresh pre-flight pass, returns a deny decision. The push simply does not happen.&lt;/p&gt;

&lt;p&gt;This is the difference between hoping a rule holds and knowing it does. Pair it with &lt;a href="https://code.claude.com/docs/en/settings" rel="noopener noreferrer"&gt;default-deny permissions&lt;/a&gt;: &lt;code&gt;settings.json&lt;/code&gt; lets you allowlist exactly the commands the agent may run without prompting, so anything outside the list stops and asks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permissions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Bash(pnpm build)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bash(git status)"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deny"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Read(./.env)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Read(./.env.*)"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The combination, a permission policy that defaults to deny plus hooks that mechanically block unsafe actions, turns your most important rules from advice into guarantees. The same approach maps directly onto a Microsoft pipeline: a PreToolUse gate that runs &lt;code&gt;pac solution check&lt;/code&gt; and refuses to deploy a Power Platform solution while the checker still reports errors, or one that blocks an &lt;code&gt;az deployment&lt;/code&gt; apply until the plan has been reviewed.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Use independent reviewer agents
&lt;/h3&gt;

&lt;p&gt;Same-session review is weak review. The agent that wrote the code is primed by everything it just did, so it tends to confirm its own work. To catch what that misses, fan the review out to separate agents that arrive without the writing context.&lt;/p&gt;

&lt;p&gt;On this platform a saved review workflow runs several critic subagents in parallel, each with a single narrow lens - one checks that every claim traces to a source, one reads the draft as the target reader, one looks only for passages that need a diagram - and a synthesis step merges their findings into one ranked list. &lt;a href="https://code.claude.com/docs/en/sub-agents" rel="noopener noreferrer"&gt;Subagents are first-class in Claude Code&lt;/a&gt;: each gets its own context window and its own instructions, so a fresh reviewer evaluates the artifact, not the conversation that produced it. The general pattern for code is the same. A security-focused reviewer, a test-coverage reviewer, and a "does this match the spec" reviewer, each independent, will surface issues that a single self-review never raises.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Coding-Agent Alignment Works the Same for Power Platform and Azure
&lt;/h2&gt;

&lt;p&gt;This platform is a content system, but nothing above is specific to writing. The alignment discipline is identical whether the agent is producing a blog post, a Dataverse plug-in, an Azure Bicep module, or a Power Automate flow.&lt;/p&gt;

&lt;p&gt;The agent inherits your repo's habits in every one of those cases. Scattered model calls in a TypeScript service and business logic crammed into a plug-in's &lt;code&gt;Execute&lt;/code&gt; method are the same failure: a structure the agent will faithfully reproduce until you refactor the example it learns from. The unspoken cost constraint that produces an over-engineered summarizer is the same unspoken constraint that produces an over-provisioned landing zone. And the rule you keep repeating - run the checker, never push without the gate, never invent a documentation slug - is the same kind of rule whether it guards prose or infrastructure.&lt;/p&gt;

&lt;p&gt;So the durable lesson is mechanical, not motivational. Do not rely on the agent to remember your intent, and do not rely on yourself to restate it every session. Codify intent where the agent reads it, and codify the rules you cannot compromise on as checks the agent cannot skip. Memory clarifies the contract. Gates enforce the part of it you cannot afford to leave to chance.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Hope-based alignment&lt;/th&gt;
&lt;th&gt;Gate-based alignment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Where intent lives&lt;/td&gt;
&lt;td&gt;In your head, restated each session&lt;/td&gt;
&lt;td&gt;In CLAUDE.md and project memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recurring corrections&lt;/td&gt;
&lt;td&gt;Repeated by hand every time&lt;/td&gt;
&lt;td&gt;Encoded once as a rule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hard rules&lt;/td&gt;
&lt;td&gt;A strong suggestion in a prompt&lt;/td&gt;
&lt;td&gt;A PreToolUse hook that blocks the action&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permissions&lt;/td&gt;
&lt;td&gt;Broad, agent runs most commands&lt;/td&gt;
&lt;td&gt;Default-deny allowlist in settings.json&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Review&lt;/td&gt;
&lt;td&gt;Same session confirms itself&lt;/td&gt;
&lt;td&gt;Independent reviewer subagents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failure visibility&lt;/td&gt;
&lt;td&gt;Found after it ships&lt;/td&gt;
&lt;td&gt;Caught before the push&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Start Small, Then Mechanize
&lt;/h2&gt;

&lt;p&gt;You do not need the full harness on day one. The progression is natural and each step earns the next:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with plan mode and full context. They cost nothing and prevent the most expensive misalignments.&lt;/li&gt;
&lt;li&gt;Refactor the one file you want imitated, so the agent learns the shape you actually want.&lt;/li&gt;
&lt;li&gt;The next time you correct the agent on the same thing twice, write it into &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;When a rule becomes genuinely non-negotiable (never push without passing checks, never run a destructive command unprompted), promote it from memory to a hook so it stops depending on anyone's attention.&lt;/li&gt;
&lt;li&gt;When the work gets high-stakes, add independent reviewers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each step moves a piece of your intent out of your head and into the system, where it holds without you. That is what alignment is: not a smarter agent, but a clearer contract, written where the agent will actually read it and enforced where it actually runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/agentic-development-with-claude-code-the-setup-that-actually-works/" rel="noopener noreferrer"&gt;Agentic Development with Claude Code: The Setup That Actually Works&lt;/a&gt; - the full harness this article draws its examples from&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/coding-agents-developer-economics-2026/" rel="noopener noreferrer"&gt;Coding Agents and Developer Economics on the Microsoft Stack&lt;/a&gt; - why the judgment this article mechanizes is the durable, paid skill&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ship-a-site-with-claude-code-github-cloudflare/" rel="noopener noreferrer"&gt;Ship a Real Website with Claude Code, GitHub, and Cloudflare&lt;/a&gt; - the same agent discipline applied end to end on a real build&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/logic-apps-mcp-server-architecture-that-actually-works/" rel="noopener noreferrer"&gt;Logic Apps MCP Server Architecture That Actually Works&lt;/a&gt; - giving agents governed tools to act on your systems&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/align-claude-code-practical-guide/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiaugmenteddev</category>
      <category>claudecode</category>
      <category>codingagents</category>
    </item>
    <item>
      <title>Copilot Credits Went Live: What Work IQ and Cowork Actually Cost</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sat, 11 Jul 2026 14:45:35 +0000</pubDate>
      <link>https://dev.to/az365ai/copilot-credits-went-live-what-work-iq-and-cowork-actually-cost-2e6e</link>
      <guid>https://dev.to/az365ai/copilot-credits-went-live-what-work-iq-and-cowork-actually-cost-2e6e</guid>
      <description>&lt;p&gt;On June 16, 2026, two Microsoft announcements landed on the same day, and most coverage treated them as separate stories. &lt;a href="https://www.microsoft.com/en-us/licensing/news/work-iq-general-availability" rel="noopener noreferrer"&gt;Work IQ reached general availability with consumption billing&lt;/a&gt;, and &lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/16/copilot-cowork-is-now-generally-available/" rel="noopener noreferrer"&gt;Copilot Cowork became generally available&lt;/a&gt;. They are not separate stories. They are the same event: Microsoft turned on a single metered currency, Copilot Credits, across the Copilot Studio, Work IQ, and Cowork surface, and the meter started running the moment the announcements went live.&lt;/p&gt;

&lt;p&gt;If you run Copilot Studio agents or have Frontier participants who can switch on Cowork, you now have a consumption line item that did not exist on June 15. This article is the cost decode: what the meter actually charges, where the real money is (it is not where the headline number points), and the governance switches an architect should set before the grace period closes on July 1. One calibration up front: the billing mechanics below are documented and live, but the day-one reliability of the underlying grounding and the quality of Cowork's output have no production track record yet. Treat the architecture as confirmed and the maturity as unproven.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One currency.&lt;/strong&gt; Copilot Credits now bill Work IQ, Cowork, and Copilot Studio from a single consumption pool. Pay-as-you-go list price is $0.01 per credit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The headline rate is a decoy.&lt;/strong&gt; Work IQ charges a static 0.1 Copilot Credits ($0.001) per API call for actions, but the variable grounding and reasoning charge is where the overwhelming majority of the cost lives. The static charge is under 1 percent of Microsoft's own scenario ranges of $0.20 to $1.50 per call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work IQ MCP needs a Microsoft 365 Copilot license.&lt;/strong&gt; Consumption is billed on top of that license, not instead of it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cowork is off by default&lt;/strong&gt; and carries a grace period through July 1, 2026 for organizations with Frontier participants. Turn on cost controls before you turn on the feature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The governance surface is real.&lt;/strong&gt; Admins can block servers tenant-wide, set spending limits per tenant, group, and user, and trace every tool call in Microsoft Defender. Set these first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Confirmed vs reported vs commentary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article separates three kinds of claim so you can apply your own evidence threshold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirmed by Microsoft.&lt;/strong&gt; The June 16 GA date, the Copilot Credits currency, the $0.01 per credit pay-as-you-go rate, the 0.1 credits per API call static charge, the Light/Medium/Heavy scenario ranges, the Microsoft 365 Copilot license requirement for Work IQ MCP, Cowork's off-by-default state, and the July 1 grace period are all sourced to Microsoft Learn, the Microsoft 365 blog, and the Microsoft licensing newsroom. Links are inline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arithmetic.&lt;/strong&gt; The "200x to 1500x" gap between the static and variable charge is my calculation from Microsoft's own published numbers, shown inline so you can check it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commentary (mine).&lt;/strong&gt; The "headline rate is a decoy" framing, the fan-out cost model, the pre-flight checklist, and the build-versus-wait guidance are my interpretation of the documented mechanics, not Microsoft positions. Read them as such.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  One currency, three surfaces
&lt;/h2&gt;

&lt;p&gt;Until this month, the agent-cost conversation was fragmented. Copilot Studio had message packs. Work IQ was preview, unbilled. Cowork was a Frontier experiment. As of June 16, Microsoft's &lt;a href="https://www.microsoft.com/en-us/licensing/news/work-iq-general-availability" rel="noopener noreferrer"&gt;licensing newsroom describes Copilot Credits&lt;/a&gt; as "a unified consumption currency that also covers Copilot Studio and other Microsoft AI services." The &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/use-work-iq" rel="noopener noreferrer"&gt;Work IQ MCP documentation&lt;/a&gt; uses nearly identical language: Copilot Credits are "the common currency across Copilot Studio capabilities and Work IQ protocols across your tenant."&lt;/p&gt;

&lt;p&gt;That consolidation is the actual news. One pool, one pay-as-you-go rate of &lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/16/copilot-cowork-is-now-generally-available/" rel="noopener noreferrer"&gt;$0.01 per credit&lt;/a&gt;, one admin dashboard, drawn down by every agent capability you switch on. The two products that went GA this week are the first two taps on that pool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work IQ: the two-part meter
&lt;/h2&gt;

&lt;p&gt;Work IQ is the intelligence layer that grounds Microsoft 365 Copilot and custom agents in organizational context. Per the &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/use-work-iq" rel="noopener noreferrer"&gt;Work IQ MCP overview&lt;/a&gt;, it is built on three layers - Data, Memory, and Inference - and exposed to agents in Copilot Studio as MCP servers that return real-time context from email, calendars, and chats. The servers available today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work IQ Mail&lt;/li&gt;
&lt;li&gt;Work IQ Calendar&lt;/li&gt;
&lt;li&gt;Work IQ Teams&lt;/li&gt;
&lt;li&gt;Custom servers you publish&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The billing has two components, and the difference between them is the whole story. From Microsoft's licensing page, Work IQ API charges consist of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;static&lt;/strong&gt; component: "0.1 Copilot Credits per API call" for actions and tools.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;variable&lt;/strong&gt; component for queries: grounding, retrieval, and reasoning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At $0.01 per credit, the static charge is $0.001 per call. That is the number that traveled fastest, and it makes the feature sound nearly free. It is also almost irrelevant. The variable component is unbounded by comparison, and Microsoft's own consumption scenarios show where the real money sits.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Example prompt&lt;/th&gt;
&lt;th&gt;Price per call&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Light&lt;/td&gt;
&lt;td&gt;Identify action items assigned to me by my manager and compile them into a checklist&lt;/td&gt;
&lt;td&gt;$0.20 to $0.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Review the latest customer interview emails, identify top themes and roadmap impact, recommend three prioritized actions&lt;/td&gt;
&lt;td&gt;$0.30 to $0.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heavy&lt;/td&gt;
&lt;td&gt;Produce Level 1 and Level 2 summaries from the latest roadmap executive review using recent meetings and documents&lt;/td&gt;
&lt;td&gt;$0.50 to $1.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now do the arithmetic. The static charge is $0.001 per call. The Light scenario bills $0.20 to $0.40 per call. That is 200 to 400 times the static charge. The Heavy scenario, at up to $1.50, is 1500 times the static charge. The 0.1-credits-per-call headline describes a rounding error sitting on top of a grounding-and-reasoning bill that is two to three orders of magnitude larger.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The number that matters is the one Microsoft did not put in the headline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you budget Work IQ at "0.1 credits per call," you will under-forecast by 200x to 1500x. The static tool charge is trivial. The variable grounding-and-reasoning charge is the line item. Model your spend on the scenario ranges, not the per-call rate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the architectural reality the per-call rate hides: an MCP server rarely makes one call. A single agent turn that reads mail, checks a calendar, and reasons over both fans out into multiple Work IQ calls, each carrying its own variable charge. The meter does not tick once per user request. It ticks once per tool invocation, and agents are built to invoke tools liberally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cowork: a different product on the same meter
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/16/copilot-cowork-is-now-generally-available/" rel="noopener noreferrer"&gt;Copilot Cowork&lt;/a&gt; is the other June 16 GA: an agentic system that executes long-running, multi-tool tasks end to end and is positioned to return finished work rather than drafts, though that output still needs human verification. What it brings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Models:&lt;/strong&gt; Anthropic Opus 4.8 and Sonnet 4.6 today, with more coming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plugins:&lt;/strong&gt; partner plugins from firms like Harvey, Moody's, and S&amp;amp;P Global.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For cost purposes, the facts that matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; requires a Microsoft 365 Copilot User Subscription License.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meter:&lt;/strong&gt; billed through Copilot Credits at the same $0.01 per credit pay-as-you-go rate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost drivers:&lt;/strong&gt; model use, context retrieval, tool calls, and runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Default state:&lt;/strong&gt; off by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grace period:&lt;/strong&gt; Frontier-participant organizations are not billed until July 1, 2026.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So Cowork and Work IQ are different products with different jobs, drawing from the same credit pool, gated by the same license, and governed by the same admin dashboard. If you reason about them separately you will miss the combined burn rate on a shared budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  How much does Work IQ actually cost per call?
&lt;/h2&gt;

&lt;p&gt;Microsoft's published scenarios run $0.20 to $1.50 per call, not the $0.001 static rate: a Light task costs $0.20 to $0.40, a Medium task $0.30 to $0.75, and a Heavy task $0.50 to $1.50. The static 0.1-credit charge is a rounding error. The variable grounding-and-reasoning charge is the bill.&lt;/p&gt;

&lt;p&gt;Here is a worked example using only Microsoft's published numbers. Using illustrative volume assumptions - a 200-person team where each person triggers ten Medium-scenario interactions per working day, across 21 working days - at the midpoint of the Medium range ($0.525 per call):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Per person per day: 10 calls at $0.525 = $5.25&lt;/li&gt;
&lt;li&gt;Per person per month (21 working days): $110.25&lt;/li&gt;
&lt;li&gt;Per 200-person team per month: $22,050&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is one team, one moderate workflow, before Cowork runtime, before any Heavy scenarios, before the multi-call fan-out that turns one user request into several billed calls. The pay-as-you-go meter has no ceiling of its own. The only ceiling is the spending limit you set.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why this resembles the Azure Marketplace billing trap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Readers of the &lt;a href="https://az365.ai/blog/claude-on-azure-the-marketplace-billing-trap/" rel="noopener noreferrer"&gt;Claude on Azure marketplace billing trap&lt;/a&gt; will recognize the shape: a metered third-party-style cost that runs against a payment method by default, with the per-unit rate looking harmless until volume and fan-out compound it. The lesson is the same. Read the consumption model before you ship, and set the guardrails before the meter starts, not after the first invoice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The governance surface is the actual product feature
&lt;/h2&gt;

&lt;p&gt;The good news is that Microsoft shipped real controls alongside the meter, and they are where an architect should spend the first hour. Per the &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/use-work-iq" rel="noopener noreferrer"&gt;Work IQ MCP documentation&lt;/a&gt; and the &lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/06/02/announcing-the-new-work-iq-apis/" rel="noopener noreferrer"&gt;Work IQ APIs announcement&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spending limits&lt;/strong&gt; can be set per tenant, per group, and per user across agents and services, from the Microsoft 365 admin center cost-management dashboard. This is the hard ceiling the pay-as-you-go model otherwise lacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-level allow and block&lt;/strong&gt; is tenant-wide. If an admin blocks a Work IQ MCP server, it blocks access for every user and every agent. "Permissions always take precedence over configuration."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay-as-you-go versus prepurchase&lt;/strong&gt; is an admin choice. Prepurchase plans exist for organizations that want a committed, capped pool rather than an open meter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability&lt;/strong&gt; runs through Microsoft Defender Advanced Hunting, where every tool call can be traced: which tool, which parameters, which outcome. That is your audit trail and your cost-attribution data in one place.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Set these before July 1&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Decide pay-as-you-go versus prepurchase before anyone switches a feature on. Prepurchase caps the pool.&lt;/li&gt;
&lt;li&gt;Set tenant, group, and user spending limits now, while spend is zero.&lt;/li&gt;
&lt;li&gt;Block every Work IQ MCP server you have not explicitly approved. Default-deny, then allow.&lt;/li&gt;
&lt;li&gt;Confirm Cowork stays off until you have a budget and an owner for it.&lt;/li&gt;
&lt;li&gt;Wire Defender Advanced Hunting queries for tool-call volume so cost attribution exists from day one.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A meter on plumbing that is still settling
&lt;/h2&gt;

&lt;p&gt;The billing is live and precise. The integrations it bills for are not always. Power Platform MVP Jukka Niiranen, testing Copilot Cowork in the Frontier preview, &lt;a href="https://www.linkedin.com/posts/jukkaniiranen_its-oh-so-fragile-still-makes-me-wonder-share-7472301836373442560-FB_S/" rel="noopener noreferrer"&gt;reported the agent stumbling on real systems&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dataverse MCP server tools that had been deprecated without Cowork being told.&lt;/li&gt;
&lt;li&gt;A Dynamics 365 Sales plugin that appeared in the configuration UI but was not actually available to the system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;His framing is that MCP is sold as the USB for AI but behaves more like USB-C, with so many variations that you cannot be sure a given combination will work until you try it. When it works, he notes, it is genuinely impressive.&lt;/p&gt;

&lt;p&gt;That is the maturity caveat the billing announcement does not carry. As of GA you are metered per tool call on integrations that can silently deprecate or fail to resolve. The cost is deterministic from day one. The reliability is not. Budget for both, and do not assume that paying for a tool call means the tool was actually there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this fits the larger Copilot Credits economy
&lt;/h2&gt;

&lt;p&gt;This week is the opening of a longer arc. Copilot Studio's own agent metering moves onto the same credit currency, which means the questions buyers ask about Studio pricing, capacity packs, and autonomous-agent consumption are now the same questions you ask about Work IQ and Cowork. One budget, one set of guardrails, one cost-attribution model across the Copilot Studio, Work IQ, and Cowork surface.&lt;/p&gt;

&lt;p&gt;The teams that will be calm in three months are the ones that treated June 16 as a governance event, not a feature launch. The meter is on. The license gate is real. The per-call rate is a decoy. Set the spending limits, default-deny the servers, and forecast on the scenario ranges, not the headline.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not mean
&lt;/h2&gt;

&lt;p&gt;Five bounds so the takeaways do not over-reach.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot Credits do not replace the per-seat Microsoft 365 Copilot license. Work IQ MCP requires that license, and consumption bills on top of it.&lt;/li&gt;
&lt;li&gt;This meter is not the whole Microsoft AI stack. Azure AI Foundry agents bill on Azure consumption, and GitHub Copilot is a separate license and meter. The Copilot Credits pool covers Copilot Studio, Work IQ, and Cowork.&lt;/li&gt;
&lt;li&gt;A spending limit caps total spend and hard-stops agents when reached. It does not lower the per-call grounding-and-reasoning charge.&lt;/li&gt;
&lt;li&gt;Default-denying servers controls access and cost. It does not make the agents more reliable.&lt;/li&gt;
&lt;li&gt;Prepurchase caps the pool. It does not remove the variable grounding charge inside each call.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/claude-on-azure-the-marketplace-billing-trap/" rel="noopener noreferrer"&gt;Claude on Azure: The Marketplace Billing Trap&lt;/a&gt; - the same metered-by-default cost pattern, with named founder receipts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/foundry-agents-hosted-vs-in-process-vs-copilot-studio-2026/" rel="noopener noreferrer"&gt;Foundry Hosted vs In-Process vs Copilot Studio Agents&lt;/a&gt; - which build path you are metering in the first place.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/copilot-roi-calculator-microsoft-enterprises/" rel="noopener noreferrer"&gt;Copilot ROI Calculator for Microsoft Enterprises&lt;/a&gt; - put the consumption numbers into a defensible business case.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/copilot-credits-work-iq-cowork-billing-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>copilotcredits</category>
      <category>workiq</category>
      <category>copilotcowork</category>
    </item>
    <item>
      <title>Microsoft's Agents Hub Decoded (2026): The Frameworks and the Gaps</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Fri, 10 Jul 2026 16:18:45 +0000</pubDate>
      <link>https://dev.to/az365ai/microsofts-agents-hub-decoded-2026-the-frameworks-and-the-gaps-3b9p</link>
      <guid>https://dev.to/az365ai/microsofts-agents-hub-decoded-2026-the-frameworks-and-the-gaps-3b9p</guid>
      <description>&lt;p&gt;Microsoft just gave agentic computing a front door. The new &lt;a href="https://learn.microsoft.com/en-us/agents/" rel="noopener noreferrer"&gt;Agents hub on Microsoft Learn&lt;/a&gt; pulls the company's agent guidance into one place: principles for architecting agent solutions, an agent archetype framework, an adoption maturity model, and evaluation guidance. It is Microsoft's official map, and a good one, for building agents on its own stack (Copilot Studio, Foundry, and Azure), not vendor-neutral agent theory.&lt;/p&gt;

&lt;p&gt;For an architect, the interesting question is not what is in it. It is what the map formalizes, and what it quietly leaves to you. Official guidance from a platform vendor is always two things at once: a genuinely useful synthesis of hard-won patterns, and a document that cannot, by its nature, tell you when not to build the thing it is teaching you to build. This is a read of both halves, so you can use the hub for what it is good at and bring your own discipline where it stops.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The maturity model is the most immediately useful piece.&lt;/strong&gt; It is a Capability Maturity Model for agents. Use it to locate yourself honestly: in the engagements I see, most teams sit at Level 100 to 200, not 400.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 3Cs archetype framework is a shared vocabulary&lt;/strong&gt;, not new theory. Its value is killing the "every team reinvents agent design" tax, which is real on large programs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The evaluation guidance is the part to read twice.&lt;/strong&gt; Percentage-based evaluation over pass/fail, baselines before builds, and an explicit warning against averaging scores. That is mature thinking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it leaves to you:&lt;/strong&gt; the cost-runaway failure mode, the call to &lt;em&gt;not&lt;/em&gt; build an agent, and the real failure stories. The hub is maturity-forward and aspirational by design; the operational scar tissue is still your job.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How to use it:&lt;/strong&gt; assess your maturity honestly, scope with the 3Cs, evaluate from day one, and bring your own spend guardrails. The official guidance will not tell you where the meter runs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is in the Microsoft Agents hub?
&lt;/h2&gt;

&lt;p&gt;The hub is a Microsoft Learn front door to the company's agent guidance, and it organizes into four substantive pieces, better than a typical docs landing page.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://learn.microsoft.com/en-us/agents/architecture/" rel="noopener noreferrer"&gt;Architecting agent solutions&lt;/a&gt;&lt;/strong&gt;: principles and patterns, anchored on a "fit for purpose" idea that AI should deliver value at an appropriate level of complexity rather than maximal sophistication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://learn.microsoft.com/en-us/agents/agent-archetypes/" rel="noopener noreferrer"&gt;The agent archetype framework&lt;/a&gt;&lt;/strong&gt;: the "3Cs" model, categories, capabilities, and components, a structured way to design and talk about agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://learn.microsoft.com/en-us/agents/adoption-maturity-model/" rel="noopener noreferrer"&gt;The agentic AI adoption maturity model&lt;/a&gt;&lt;/strong&gt;: a five-level, five-pillar assessment of where an organization sits on the agent journey.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://learn.microsoft.com/en-us/agents/architecture/evaluation-frameworks" rel="noopener noreferrer"&gt;Evaluation frameworks&lt;/a&gt;&lt;/strong&gt;: how to design and operationalize agent evaluation as a continuous practice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three of these are worth an architect's real attention. One is worth reading twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The maturity model: a CMM for agents, and an honesty test
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://learn.microsoft.com/en-us/agents/adoption-maturity-model/" rel="noopener noreferrer"&gt;adoption maturity model&lt;/a&gt; is explicitly based on the Capability Maturity Model, the same lineage as decades of software-process assessment. It runs five levels, from Level 100 (initial, experimental, individual-dependent) to Level 500 (an optimized, agent-first enterprise), across five capability pillars: AI strategy and experience, business strategy, AI governance and security, technology and data, and organization and culture.&lt;/p&gt;

&lt;p&gt;The useful thing here is not the ladder. It is the honesty the ladder forces. Most organizations running agents today are somewhere between Level 100 and Level 200: a few pilots that worked, no repeatable practice, governance that lives in one person's head. The model makes that visible, and it makes visible that maturity is not a technology problem. Four of the five pillars are strategy, process, governance, and culture. Only one is technology and data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use it as a mirror, not a roadmap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The temptation with any maturity model is to read it as a to-do list and declare yourself Level 400 because you bought the tools. The honest use is the opposite. Score each pillar against what is actually repeatable in your organization, not what is possible in the product. The gap between "we can run an agent" and "we can run agents safely at scale" is exactly the four non-technology pillars, and that is where most programs stall.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The 3Cs archetype framework: a vocabulary tax, removed
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://learn.microsoft.com/en-us/agents/agent-archetypes/" rel="noopener noreferrer"&gt;agent archetype framework&lt;/a&gt; is candid about what it is. In Microsoft's own words, it "doesn't introduce new concepts. It names and structures what experienced builders already do." It organizes agent design into three layers, the 3Cs: categories (the why), capabilities (the what), and components (the how). The top layer names seven categories of agent behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connect&lt;/strong&gt; - gather and integrate information across the enterprise&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze&lt;/strong&gt; - turn gathered data into insight&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create&lt;/strong&gt; - produce and transform content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act&lt;/strong&gt; - take action on a user's behalf&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate&lt;/strong&gt; - orchestrate multistep workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Govern&lt;/strong&gt; - embed compliance into agent behavior&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor&lt;/strong&gt; - improve through telemetry and feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not undervalue a shared vocabulary because it is not novel. On any program with more than a couple of teams, the absence of one is a real and compounding cost: teams reinvent the same agent, share inconsistent guidance, and cannot build on each other's work. The 3Cs give a consulting practice or an internal CoE a common way to scope, describe, and reuse agent designs. That is the same reason consistent architecture patterns matter for cloud solutions, and it is worth more on a ten-team program than any single clever pattern.&lt;/p&gt;

&lt;p&gt;The limitation is the flip side of the strength. A vocabulary tells you how to describe an agent. It does not tell you whether the agent should exist. That decision lives outside the framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evaluation guidance: read this part twice
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://learn.microsoft.com/en-us/agents/architecture/evaluation-frameworks" rel="noopener noreferrer"&gt;evaluation guidance&lt;/a&gt; is the most mature thinking in the hub, and the part most teams will skip and most regret skipping. A few points from Microsoft's &lt;a href="https://learn.microsoft.com/en-us/agents/architecture/common-evaluation-approaches" rel="noopener noreferrer"&gt;common evaluation approaches&lt;/a&gt; stand out as genuinely good architecture advice, not marketing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Move from pass/fail to percentages.&lt;/strong&gt; Because language models are nondeterministic, static pass/fail unit-test thinking does not fit. Evaluation has to be percentage-based, measured against a baseline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Establish a baseline first, even a manual one.&lt;/strong&gt; Microsoft's example is honest: existing ticket routing does not have a 100 percent success rate even with humans. You evaluate the agent against the real baseline, not against perfection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resist the averaged score.&lt;/strong&gt; The guidance explicitly warns against collapsing evaluation into a single radar-plot average, and says to select agents for the one or two qualities the use case actually needs. That is a non-obvious, correct point that a lot of teams get wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This section also concedes something important: agents disrupt traditional ROI and feasibility frameworks, because value spreads across multi-agent and tool ecosystems rather than a single process. That is true, and it is the seam where the official guidance stops and your own work begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the hub leaves to you
&lt;/h2&gt;

&lt;p&gt;Here is the architect's other eye. The hub is comprehensive on how to design, assess, and evaluate agents. It is thinner, by design, on three things that decide whether an agent program survives contact with production.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;The hub is strong on&lt;/th&gt;
&lt;th&gt;It leaves to you&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Maturity assessment across strategy, governance, tech, culture&lt;/td&gt;
&lt;td&gt;Where you actually are this quarter, scored honestly against repeatable practice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A shared vocabulary for designing and describing agents&lt;/td&gt;
&lt;td&gt;Whether a given agent should be built at all, or solved without one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evaluation as a continuous, percentage-based practice&lt;/td&gt;
&lt;td&gt;The real cost-runaway failure mode and the real-time guardrails for it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An aspirational path toward an agent-first enterprise&lt;/td&gt;
&lt;td&gt;The failure stories, and the discipline to stop before the failure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Cost governance is the conspicuous gap.&lt;/strong&gt; The maturity model has a governance and security pillar, and that is right. But the failure mode that actually produces a shock invoice, an agent looping overnight with no real-time spend cap, is an operational concern that maturity language does not catch. Now that &lt;a href="https://az365.ai/blog/copilot-credits-work-iq-cowork-billing-2026/" rel="noopener noreferrer"&gt;Copilot Credits and provider meters bill per tool call&lt;/a&gt;, an architecture review that does not include a per-agent spend guard is incomplete. That is the subject of the &lt;a href="https://az365.ai/blog/ai-cost-governance-spend-caps-that-dont-cap-2026/" rel="noopener noreferrer"&gt;spend-caps governance piece&lt;/a&gt;, and the reason I wrote an &lt;a href="https://github.com/az365ai/ai-spend-guard" rel="noopener noreferrer"&gt;open-source guardrail&lt;/a&gt; to sit in the gap the official guidance leaves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "do not build it" decision is yours.&lt;/strong&gt; A framework that teaches you to design agents has a structural bias toward designing agents. The hub's own "fit for purpose" principle gestures at restraint, but the call to solve a problem without an agent, with a flow, a query, or nothing at all, is judgment the document cannot make for you. It is also the single most valuable thing a senior architect contributes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The failure stories are not in the docs, and never will be.&lt;/strong&gt; Official guidance is maturity-forward. It describes the climb to Level 500, not the specific way a Level 200 pilot blows its budget by April or ships a confidently wrong answer to a customer. Those are the receipts that make architecture decisions real, and they live in practice, not in a hub.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use the Microsoft Agents hub this week
&lt;/h2&gt;

&lt;p&gt;A short, honest plan that takes the hub for its strengths and supplies the rest.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Score your maturity against repeatable practice, not product capability.&lt;/strong&gt; Be willing to write Level 100 or 200 where it is true. The gap you find is your roadmap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adopt the 3Cs as your team's shared language&lt;/strong&gt; if you run more than two agent teams. It pays for itself in reduced rework before it pays for itself in anything clever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stand up evaluation before you build, with a real baseline and percentage targets.&lt;/strong&gt; This is the hub's best advice. Do it on the first agent, not the tenth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a per-agent spend guard and a documented kill path&lt;/strong&gt; to every architecture review. The official frameworks will not prompt you to; the meter does not care that you reached Level 400.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the "should this be an agent" question on the table&lt;/strong&gt; through design. The framework will happily help you build something you should not have built.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Microsoft drew a good map. Maps are most useful to people who already know which parts of the terrain are dangerous. Use the hub to standardize the design and the assessment, and bring your own discipline for the cost, the restraint, and the failure modes it cannot encode. That combination, the official frameworks plus the operational scar tissue, is what an architect is actually for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-cost-governance-spend-caps-that-dont-cap-2026/" rel="noopener noreferrer"&gt;AI Cost Governance: The Spend Caps That Don't Actually Cap&lt;/a&gt; - the cost-runaway gap the maturity model does not catch, with the vendor-by-vendor control reality.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/foundry-agents-hosted-vs-in-process-vs-copilot-studio-2026/" rel="noopener noreferrer"&gt;Foundry Hosted vs In-Process vs Copilot Studio Agents&lt;/a&gt; - which build path an agent should run on, decided by who builds and who runs it.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/coding-agents-developer-economics-2026/" rel="noopener noreferrer"&gt;Coding Agents and Developer Economics on the Microsoft Stack&lt;/a&gt; - why the judgment the hub leaves to you is the durable, paid skill.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/microsoft-agents-hub-decoded-2026/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;. I'm Alex Pechenizkiy, an Azure and Power Platform solutions architect writing honest, vendor-neutral analysis of the Microsoft AI stack. More at &lt;a href="https://az365.ai/" rel="noopener noreferrer"&gt;az365.ai&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aiagents</category>
      <category>copilotstudio</category>
    </item>
  </channel>
</rss>
