<?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>Stop Vibe-Coding Power Platform: Turn ADO Work Items Into Specs Any AI Agent Can Build From</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Thu, 02 Jul 2026 00:35:14 +0000</pubDate>
      <link>https://dev.to/az365ai/stop-vibe-coding-power-platform-turn-ado-work-items-into-specs-any-ai-agent-can-build-from-7lh</link>
      <guid>https://dev.to/az365ai/stop-vibe-coding-power-platform-turn-ado-work-items-into-specs-any-ai-agent-can-build-from-7lh</guid>
      <description>&lt;p&gt;The agent brand is irrelevant; the work item is everything.&lt;/p&gt;

&lt;p&gt;I have watched teams argue about Copilot Studio versus Claude Code versus Codex as if the model decides whether their build succeeds. It does not. Your &lt;strong&gt;agentic development power platform&lt;/strong&gt; effort lives or dies on one thing: whether the Azure DevOps work item you hand the agent is a machine-readable spec or a vaguely worded wish. Swap the agent all you want. If the requirement is unstructured, every agent guesses, and every guess is a different guess.&lt;/p&gt;

&lt;p&gt;This article is opinionated on exactly one point and neutral on everything else. Neutral on the tool. Ruthless about the spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "AI-assisted" Power Platform dev stalls on real teams
&lt;/h2&gt;

&lt;p&gt;The agent guesses intent because the acceptance criteria live in a stale wiki, a Teams thread, or someone's head. That is the whole failure. Switching from one agent to another does not close the gap. The missing spec does.&lt;/p&gt;

&lt;p&gt;Prompt-by-prompt building has a second problem that shows up later and hurts more. One maker gets a working flow out of a chat session, but nobody else can reproduce it and no one can audit it. You have a solution that exists and a rationale that evaporated. For teams doing serious &lt;strong&gt;dynamics 365 ai development&lt;/strong&gt;, that is not acceleration. That is a single point of failure wearing a productivity costume.&lt;/p&gt;

&lt;p&gt;Frame the cost honestly. Say a rework cycle caught in UAT runs roughly 5x the cost of the same fix at design time. Illustrative; calibrate against your own data, actuals vary. Under that assumption, the line item bleeding your budget is the improvised requirement, not the agent license. You are paying to rediscover intent three environments too late.&lt;/p&gt;

&lt;p&gt;Takeaway: if your requirement is not structured, your agent is improvising, and the brand of agent does not matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make the ADO work item the single source of truth
&lt;/h2&gt;

&lt;p&gt;An agent reads fields. It does not read the room. So the work item has to carry everything the agent needs in a shape a parser can trust every single time.&lt;/p&gt;

&lt;p&gt;Define the structure once and apply it to every Feature and User Story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance criteria&lt;/strong&gt; as Given/When/Then (Gherkin), one scenario per behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entity and table definitions&lt;/strong&gt; as fenced YAML: logical name, columns, types, relationships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business rules&lt;/strong&gt; stated as conditions and outcomes, not prose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security roles&lt;/strong&gt; the artifact assumes, named explicitly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use a consistent work item template so the same machine-readable blocks appear in the same headings every time. The whole point of &lt;strong&gt;azure devops power platform ai&lt;/strong&gt; work is that the agent finds the schema block under the same H3 in every item, not that it hunts for intent in freeform text.&lt;/p&gt;

&lt;p&gt;Here is the practitioner caveat. The Azure DevOps &lt;a href="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items" rel="noopener noreferrer"&gt;work item field reference&lt;/a&gt; treats Description and acceptance criteria as rich-text fields. That is fine for humans and lousy for parsers. In production you want a fenced, structured block inside those fields (YAML for schema, fixed markdown for behavior) so parsing stays deterministic no matter which model you point at it. Free text drifts. A fenced block does not.&lt;/p&gt;

&lt;p&gt;Takeaway: an agent reads fields, not vibes. Write the work item for the parser, not just the standup.&lt;/p&gt;

&lt;h2&gt;
  
  
  The spec-to-build loop (tool-agnostic)
&lt;/h2&gt;

&lt;p&gt;Pull the work item programmatically. Two paths both work: the &lt;a href="https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items/get-work-item" rel="noopener noreferrer"&gt;Azure DevOps REST API&lt;/a&gt; for a direct fetch, or a &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; server that exposes the same items as a tool the agent calls. Either path feeds &lt;a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/" rel="noopener noreferrer"&gt;Copilot Studio&lt;/a&gt;, &lt;a href="https://docs.anthropic.com/en/docs/claude-code/overview" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, &lt;a href="https://platform.openai.com/docs/codex" rel="noopener noreferrer"&gt;OpenAI Codex&lt;/a&gt;, or a homegrown agent equally. The spec is the input contract. The consumer is swappable.&lt;/p&gt;

&lt;p&gt;Feed the structured spec in and generate the components that map 1:1 to the fields: Dataverse tables from the YAML schema, model-driven components, Power Automate flows from the trigger/action pairs, plugin code where the business rules demand it. One block in, one reviewable artifact out.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;spec driven development ai&lt;/strong&gt; in practice. The spec is portable. The agent is a detail.&lt;/p&gt;

&lt;p&gt;Caveat, and it applies to every vendor equally: agents drift on multi-entity relationships. Generate the schema first, validate it, commit it, then generate logic against the committed schema. Do not ask one prompt to invent five related tables and the plugins that traverse them in a single shot. It will hallucinate a lookup that does not exist. For deeper patterns on wiring the consumer side, see our notes on &lt;a href="https://az365.ai/blog/ai-agents/copilot-studio-agent-patterns" rel="noopener noreferrer"&gt;Copilot Studio agent patterns&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Takeaway: one work item in, one reviewable component out, and you can swap the agent without rewriting the spec.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing the traceability gap
&lt;/h2&gt;

&lt;p&gt;Auto-link every generated artifact back to its work item ID. In Azure DevOps that is the &lt;code&gt;AB#&amp;lt;id&amp;gt;&lt;/code&gt; syntax in commit messages, which creates a real link between the commit and the item. Map each table, flow, and PCF control to the originating requirement so your ALM stops being theater and starts being evidence.&lt;/p&gt;

&lt;p&gt;The mature half of traceability is solid today: &lt;code&gt;AB#&lt;/code&gt; commit linking and a branch policy that requires a linked work item on every PR are native and enforceable. Turn them on.&lt;/p&gt;

&lt;p&gt;Caveat. Solution component descriptions inside Dataverse are not reliably searchable, and they do not survive round-trips cleanly. So anchor traceability in the Git commit and the PR, not inside the solution metadata. The commit is the durable record; the solution description is a nice-to-have.&lt;/p&gt;

&lt;p&gt;Takeaway: if an artifact cannot name its requirement, it does not ship.&lt;/p&gt;

&lt;h2&gt;
  
  
  The no-go list: what the agent must never touch
&lt;/h2&gt;

&lt;p&gt;This is the section with teeth. The cheapest guardrail is an identity that physically cannot reach production.&lt;/p&gt;

&lt;p&gt;Draw the boundary before any agent runs. Agents generate into a &lt;strong&gt;dev environment&lt;/strong&gt; and a &lt;strong&gt;feature branch&lt;/strong&gt;. Full stop. They never publish to production, never touch managed solutions in higher tiers, never edit security roles or field-level security, never read environment variables holding secrets, never rebind connection references to live credentials. And they never edit the spec they were handed. This rule holds for a CLI agent with shell access exactly as much as it holds for Copilot Studio.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Green zone (agent may generate)&lt;/th&gt;
&lt;th&gt;Red zone (off-limits to any agent)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unmanaged solution in a dev environment&lt;/td&gt;
&lt;td&gt;Production environments, any operation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dataverse tables and columns from the YAML schema&lt;/td&gt;
&lt;td&gt;Managed solutions in test/UAT/prod tiers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power Automate flows in a feature branch&lt;/td&gt;
&lt;td&gt;Security roles and field-level security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plugin/PCF source code in Git&lt;/td&gt;
&lt;td&gt;Environment variables holding secrets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Draft commits linked with &lt;code&gt;AB#&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Connection references bound to live credentials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proposed test scenarios from Given/When/Then&lt;/td&gt;
&lt;td&gt;The work item spec itself&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here is the caveat that makes this urgent. The platform will happily let a broadly scoped service principal push straight to production, and a terminal agent runs whatever command you authorize. Prompt wording does not stop this. You stop it by scoping the &lt;a href="https://learn.microsoft.com/en-us/power-platform/admin/manage-application-users" rel="noopener noreferrer"&gt;app registration and application user&lt;/a&gt; to dev only, giving it a custom security role instead of System Administrator, and configuring a &lt;a href="https://learn.microsoft.com/en-us/power-platform/admin/wp-data-loss-prevention" rel="noopener noreferrer"&gt;DLP policy&lt;/a&gt; that blocks production connectors for that identity. Permissions are the guardrail. The prompt is not.&lt;/p&gt;

&lt;p&gt;Governance for &lt;strong&gt;ai governance power platform&lt;/strong&gt; is not a paragraph you add to the system message. It is an identity that cannot do the dangerous thing even when instructed to.&lt;/p&gt;

&lt;p&gt;Takeaway: the cheapest governance control is an identity that physically cannot reach production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The governance checklist you run before the agent does
&lt;/h2&gt;

&lt;p&gt;Tick all seven before authorizing any run. If you cannot, the agent waits.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The work item carries the fenced spec block&lt;/strong&gt; with Given/When/Then behavior and YAML schema under the standard headings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The agent app registration is scoped to the dev environment only&lt;/strong&gt;, with a custom security role, never System Administrator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A DLP policy blocks production connectors&lt;/strong&gt; for that identity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The target is a feature branch, never main.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A CI validation gate is wired to the acceptance criteria.&lt;/strong&gt; Be honest: this is a pattern you assemble, not a Microsoft reference architecture you flip on. More on how to build it below.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A human PR approver is assigned&lt;/strong&gt; and knows they are checking the mapping, not the syntax.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The commit template enforces the &lt;code&gt;AB#&lt;/code&gt; work item ID link.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Caveat: teams treat this as one-time setup, then scope and DLP quietly drift as environments get added and new connectors ship. Re-verify items 2 and 3 every sprint. Environment sprawl is how a dev-only identity ends up with a path to prod nobody remembers granting.&lt;/p&gt;

&lt;p&gt;Takeaway: if you cannot tick all seven, the agent does not run yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guardrails that keep AI honest
&lt;/h2&gt;

&lt;p&gt;Use the acceptance criteria as the test oracle. Given/When/Then is already a behavior specification; validate the generated solution against it before anything touches a pipeline. Run that validation in CI so drift fails the build instead of surfacing in UAT. The gate is agent-neutral by design, because it checks the artifact against the spec, not the prompt against a style guide.&lt;/p&gt;

&lt;p&gt;Be precise about what exists. This oracle is an emerging pattern teams assemble today from the &lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/test-engine/overview" rel="noopener noreferrer"&gt;Power Apps Test Engine&lt;/a&gt; plus custom scripts and the &lt;a href="https://learn.microsoft.com/en-us/power-platform/alm/devops-build-tools" rel="noopener noreferrer"&gt;Power Platform Build Tools&lt;/a&gt; tasks. It is not a packaged spec-to-test framework Microsoft ships. Build it as a gate; do not pretend it comes in the box.&lt;/p&gt;

&lt;p&gt;Add a human approval gate on the PR. The reviewer checks the spec-to-artifact mapping (does this flow implement the scenarios in the item), not every code line. That is the review that catches an agent building the wrong right thing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;CI validation gate (assembled pattern, not a product).&lt;/strong&gt; On PR to a feature branch, run a pipeline that (1) imports the generated unmanaged solution into a throwaway build environment, (2) executes the Given/When/Then scenarios via Test Engine and custom checks, and (3) fails the build if any scenario is unmet or the schema diverges from the committed YAML. Wire it with Power Platform Build Tools tasks. You own the wiring; Microsoft ships the parts, not the assembly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our walkthrough of &lt;a href="https://az365.ai/blog/power-platform-alm-pipelines" rel="noopener noreferrer"&gt;Power Platform ALM pipelines&lt;/a&gt; covers the pipeline plumbing this gate sits inside.&lt;/p&gt;

&lt;p&gt;Takeaway: governance is the spec checked automatically, not a doc nobody reads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Walkthrough: one Feature, end to end
&lt;/h2&gt;

&lt;p&gt;Take a generic case-routing requirement. Illustrative throughout; calibrate against your own data, actuals vary.&lt;/p&gt;

&lt;p&gt;The work item body carries a fenced schema block and behavior block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# mrd_ prefix per our solution naming convention&lt;/span&gt;
&lt;span class="na"&gt;entity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mrd_supportcase&lt;/span&gt;
&lt;span class="na"&gt;columns&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;mrd_priority&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;choice&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Low&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;Medium&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;High&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;mrd_assignedteam&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;lookup&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;target&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;mrd_team&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
&lt;span class="na"&gt;relationships&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;mrd_supportcase&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;mrd_team&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight gherkin"&gt;&lt;code&gt;&lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; High-priority cases route to the escalation team
  &lt;span class="nf"&gt;Given &lt;/span&gt;a support case with mrd_priority = High
  &lt;span class="nf"&gt;When &lt;/span&gt;the case is created
  &lt;span class="nf"&gt;Then &lt;/span&gt;mrd_assignedteam is set to the escalation team
  &lt;span class="nf"&gt;And &lt;/span&gt;an approval flow notifies the team lead
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The prompt is boring on purpose: "Read work item AB#4821. Generate the Dataverse table, the routing flow, and any plugin logic to satisfy every Given/When/Then scenario. Commit to the feature branch with &lt;code&gt;AB#4821&lt;/code&gt; in the message. Do not touch any environment other than dev." The same prompt drives Copilot Studio, Claude Code, or Codex with zero change to the work item. That is the point.&lt;/p&gt;

&lt;p&gt;Out comes a component list: the &lt;code&gt;mrd_supportcase&lt;/code&gt; table, a Power Automate routing flow, an approval flow, and a linked commit. It flows ADO item to generated solution to pipeline, where the CI gate runs the scenarios and the dev-scoped identity makes the red zone physically unreachable.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Prompt-by-prompt&lt;/th&gt;
&lt;th&gt;Spec-driven agentic build&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Source of truth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The chat session&lt;/td&gt;
&lt;td&gt;The ADO work item&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reproducibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One maker, non-repeatable&lt;/td&gt;
&lt;td&gt;Any agent, same output shape&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traceability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None after the session ends&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;AB#&lt;/code&gt; links commit to requirement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Where errors surface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;UAT or production&lt;/td&gt;
&lt;td&gt;CI gate on the PR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Prompt wording, hope&lt;/td&gt;
&lt;td&gt;Scoped identity plus DLP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Takeaway: you leave with a template you can paste into your own ADO project today.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one artifact to build first
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Agentic development power platform&lt;/strong&gt; work only pays off when the Azure DevOps work item is structured enough for any agent to build from and verify against, and when that agent physically cannot reach what it must not touch. The spec is the constant. The identity is the fence. The agent is a swappable detail.&lt;/p&gt;

&lt;p&gt;Before your next sprint, convert a single Feature to the fenced spec template and commit it. One item, with the YAML schema and the Given/When/Then block, under standard headings. Everything else in this piece follows from that one artifact.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published at &lt;a href="https://az365.ai/blog/agentic-development-power-platform/" 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>Microsoft 365 Copilot ROI Calculator: The Honest Math</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sat, 06 Jun 2026 22:55:16 +0000</pubDate>
      <link>https://dev.to/az365ai/microsoft-365-copilot-roi-calculator-the-honest-math-1a2j</link>
      <guid>https://dev.to/az365ai/microsoft-365-copilot-roi-calculator-the-honest-math-1a2j</guid>
      <description>&lt;p&gt;Every Microsoft 365 Copilot ROI calculator on the internet tells the same story. Plug in 1,000 users, accept the default 3-hour weekly time savings, multiply by a generous loaded hourly rate, divide by $30 per seat per month, and out comes a triple-digit ROI percentage. Take it to your CFO. Sign the order. Welcome to the productivity revolution.&lt;/p&gt;

&lt;p&gt;That math is wrong. It misses three inputs that decide whether the program actually returns its investment. Most calculators assume 100% adoption when &lt;a href="https://www.stackmatix.com/blog/microsoft-copilot-enterprise-adoption-2026" rel="noopener noreferrer"&gt;published Microsoft enterprise telemetry&lt;/a&gt; shows 35.8% market average. Most accept Microsoft's self-reported time savings at face value, while &lt;a href="https://arxiv.org/abs/2504.11443" rel="noopener noreferrer"&gt;Microsoft's own randomized control trials&lt;/a&gt; show users overstate savings by three to seven times. Most ignore implementation services and the Purview governance prerequisites that turn a $360K license bill into a $700K Year 1 commitment.&lt;/p&gt;

&lt;p&gt;This calculator is built differently. The defaults come from Microsoft Research randomized control trials, BLS Employment Cost Index data, and current Microsoft 365 Copilot list pricing. Every slider has anchor buttons showing the marketing-optimistic, market-average, and RCT-grounded values. The sensitivity panel makes it impossible to hide the one lever your business case depends on the most.&lt;/p&gt;

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

&lt;p&gt;Microsoft 365 Copilot is $30 per user per month, annual commitment, no seat minimum. Forrester's commissioned TEI studies show 116% to 353% ROI. Microsoft's own RCTs (peer-published, telemetry-measured) show ~0.5 hours per week saved on email plus 12% document speed-up. Stackmatix 2026 data shows 35.8% of paid licenses are active in any month. Implementation services run $100K to $300K for 1,000 seats; Purview governance prerequisites add $50K to $500K depending on tenant maturity. The realistic Year 1 case is closer to break-even than to triple-digit ROI, but it is positive when adoption is managed and time savings are deflated honestly. The calculator below shows exactly which lever moves the answer.&lt;/p&gt;
&lt;/blockquote&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.amazonaws.com%2Fuploads%2Farticles%2Fijtuq36b1mqyxottqz23.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.amazonaws.com%2Fuploads%2Farticles%2Fijtuq36b1mqyxottqz23.png" alt="Microsoft 365 Copilot ROI inputs compared: a commissioned 353 percent figure against a randomized-control-trial measure of about 0.5 hours per week, with adoption rate as the sensitivity lever and hidden implementation and governance costs." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The honest Copilot ROI math: a commissioned 353 percent against RCT-measured savings, with adoption rate the lever the business case actually turns on.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Most Copilot ROI Calculators Are Lies
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;They assume every paid license is active.&lt;/strong&gt; Microsoft's official "active user" definition in the M365 admin center is "submitted at least one prompt in the period," and a single prompt counts. Even by that loose bar, &lt;a href="https://www.stackmatix.com/blog/microsoft-copilot-enterprise-adoption-2026" rel="noopener noreferrer"&gt;Stackmatix's 2026 enterprise telemetry&lt;/a&gt; shows 35.8% of paid seats are active in any given month. North America runs higher (64% peak), best-in-class deployments hit 75%, but the modal enterprise sits between 35% and 55%. A calculator that defaults to 100% adoption is overstating benefit by 1.5x to 3x before any other input is touched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They take Microsoft's self-reported time savings at face value.&lt;/strong&gt; Microsoft's &lt;a href="https://www.microsoft.com/en-us/worklab/work-trend-index/copilots-earliest-users-teach-us-about-generative-ai-at-work" rel="noopener noreferrer"&gt;Work Trend Index&lt;/a&gt; cites "1.2 hours per week" saved from a 297-user early-adopter survey. The &lt;a href="https://www.microsoft.com/en/customers/story/19346-vodafone-microsoft-365-copilot" rel="noopener noreferrer"&gt;Vodafone customer story&lt;/a&gt; cites 4 hours per week in legal. Dentsu cites 7.5 hours per week. All self-reported. When Microsoft Research ran an actual &lt;a href="https://arxiv.org/abs/2504.11443" rel="noopener noreferrer"&gt;randomized control trial across 6,000 workers in 56 firms&lt;/a&gt;, the telemetry-measured result was 30 minutes per week saved on email plus a 12% speed-up on document writing. When Microsoft's &lt;a href="https://www.microsoft.com/content/dam/microsoft/final/en-us/microsoft-product-and-services/microsoft-dynamics-365/pdf/Microsoft-Copilot-for-Security-productivity-findings-Whitepaper-Jan2024.pdf" rel="noopener noreferrer"&gt;Security Copilot RCT&lt;/a&gt; compared self-report to control-group completion times, users said they saved 38 minutes; the control group only finished 5 minutes slower. That is a 7x overstatement, in Microsoft's own data, on Microsoft's own product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They forget implementation cost and governance prerequisites.&lt;/strong&gt; A 1,000-seat enterprise deployment is not just $360K of license. It is &lt;a href="https://www.epcgroup.net/blog/microsoft-copilot-consulting-cost-pricing" rel="noopener noreferrer"&gt;$100K to $300K of partner readiness, pilot, and rollout services&lt;/a&gt;. It is another five to six figures of Purview labels, DLP rules, and SharePoint oversharing remediation work (the exact number varies dramatically with starting tenant maturity), because Copilot grounds on whatever the user has access to and most enterprises discover they have a permissions mess before they have a Copilot deployment. It is often pressure to upgrade from M365 E3 to E5 (or to add Purview / Defender SKUs) to meet Copilot's compliance baseline. None of these costs sit on the Copilot invoice.&lt;/p&gt;

&lt;p&gt;The calculator below builds those three corrections in by default. You can move every slider to the Microsoft-marketing optimistic value if you want. The point is that the defaults are not pulled from a vendor deck.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Calculator
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try the interactive Microsoft 365 Copilot ROI calculator&lt;/strong&gt; (with honest, skeptical defaults) on the original article: &lt;a href="https://az365.ai/blog/copilot-roi-calculator-microsoft-enterprises/" rel="noopener noreferrer"&gt;https://az365.ai/blog/copilot-roi-calculator-microsoft-enterprises/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How to Read the Result
&lt;/h2&gt;

&lt;p&gt;Start with the worked example. The calculator opens with these defaults: 1,000 seats, $30/user/month list price, 55% active rate (the upper end of the 35-55% modal-enterprise range per Stackmatix), 1.0 hour saved per active user per week, 0.5 deflation factor (because Microsoft's Security Copilot RCT showed users overstate savings ~7x). The 1.0 × 0.5 deflation lands the effective benefit at 0.5 hours per week, matching the RCT-measured value the article cites. Plus $75/hour fully-loaded knowledge-worker cost (&lt;a href="https://www.bls.gov/news.release/ecec.htm" rel="noopener noreferrer"&gt;BLS ECEC December 2025&lt;/a&gt;), 40 productive weeks per year, and $175,000 one-time implementation amortized over three years.&lt;/p&gt;

&lt;p&gt;The math: 1,000 × 0.55 × 1.0 × 40 × 0.5 = 11,000 hours saved per year. At $75 per hour that is &lt;strong&gt;$825,000 annual benefit&lt;/strong&gt;. Annual cost is $360,000 license plus $58,333 amortized implementation = &lt;strong&gt;$418,333&lt;/strong&gt;. Net annual value: &lt;strong&gt;+$406,667&lt;/strong&gt;. ROI: &lt;strong&gt;+97%&lt;/strong&gt;. Payback period: &lt;strong&gt;4.5 months&lt;/strong&gt;. Break-even active rate (the rate at which benefit equals cost, holding all else constant): &lt;strong&gt;27.9%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That number lives below Forrester's 116% three-year case, consistent with the article's claim that the realistic ROI sits below vendor-marketing benchmarks. Move the active-rate slider down to 35% (Stackmatix's global market average) and ROI drops to roughly +25%; below the 27.9% break-even rate, the program runs at a loss.&lt;/p&gt;

&lt;p&gt;Three numbers in that output do real work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The headline ROI percentage&lt;/strong&gt; is annual benefit divided by annual cost expressed as a percentage. ROI of 0% means the program pays for itself but produces no surplus. The &lt;a href="https://tei.forrester.com/go/microsoft/M365Copilot/docs/TheTEIOfMicrosoft365Copilot.pdf" rel="noopener noreferrer"&gt;Forrester TEI commissioned for Microsoft&lt;/a&gt; puts enterprise Copilot at 116% over three years; that model uses Microsoft self-reported time savings without deflation and assumes high adoption. Move the deflation factor slider to 1.0 and the active rate slider to 75% to see the Forrester-style number. Move them the other way (35% active, 0.3 deflation) and the realistic case turns negative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The break-even active rate&lt;/strong&gt; is the percentage of licensed users who must be active for the program to pay for itself at the rest of your inputs. This is the most useful number on the page. If your scenario shows a break-even of 65%, and your enterprise is honestly going to land at 45% adoption, the program does not return its investment until you fix adoption. That is a different conversation than "is Copilot worth $30 per user per month."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sensitivity chart on the right&lt;/strong&gt; shows ROI at 25%, 50%, 75%, and 100% active rates, holding everything else constant. If the 25% bar is deeply negative and the 100% bar is strongly positive, your Copilot business case is an adoption problem dressed as a procurement question. The right move is to invest in adoption enablement before you scale the seat count, not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Levers That Actually Move the Answer
&lt;/h2&gt;

&lt;p&gt;In order of impact for typical enterprise inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Active-user rate.&lt;/strong&gt; Going from 35% (market average) to 75% (best-in-class) doubles the benefit at constant inputs. This is the single biggest lever and it is the one finance leaders ignore because it does not feel like their lever. It is. License procurement and adoption enablement cannot be split between two budgets without losing the program in the gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hours saved per active user per week.&lt;/strong&gt; Microsoft self-report sits at 1.2 to 3 hours. Telemetry-measured RCT sits at 0.5 hours. Use 1.5 hours as a midpoint with a 0.5 deflation factor and you land at the same effective benefit (0.75 hours per week). Choosing the optimistic number without deflation is the same mistake as choosing 100% adoption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hourly loaded cost.&lt;/strong&gt; BLS Employment Cost Index for December 2025 shows civilian total compensation at $48.78 per hour. Knowledge worker personas typically run $50 to $150 per hour fully loaded. Use a weighted average of your role mix; do not default to "VP of Sales" rates if 80% of your Copilot users are individual contributors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation and governance cost.&lt;/strong&gt; EPC Group benchmarks for 1,000-seat deployments: $15K readiness assessment, $25-50K pilot, $75-250K full deployment, $50-500K Purview prerequisite work depending on starting maturity. The governance work is the most underestimated line item because most procurement teams treat it as a sunk Microsoft 365 cost rather than a Copilot-driven cost. It is a Copilot-driven cost because nobody was going to remediate SharePoint oversharing without the Copilot business case forcing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License price.&lt;/strong&gt; Mostly fixed at $30 per user per month annual commit. The adjustable case is role-based copilots (Sales, Service, Finance), which run $50 standalone or $20 incremental for licensed M365 Copilot users. If your scenario is M365 Copilot only, leave this slider alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Calculator Does Not Measure
&lt;/h2&gt;

&lt;p&gt;A defensible ROI memo discloses what is not in the model. This calculator does not include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Switching costs.&lt;/strong&gt; Time lost reformatting prompts, fixing hallucinations, re-checking Copilot output against ground truth before pasting it into a customer email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training and onboarding time.&lt;/strong&gt; Four to twenty hours per user lost to enablement workshops, prompt courses, and change management. Real cost on a real calendar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive overhead.&lt;/strong&gt; The "second monitor problem": context-switching between Copilot, the source document, and the validation step often eats the savings the tool produces. RCTs do not measure this directly; field experience says it is real for non-trivial work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration debt.&lt;/strong&gt; SharePoint permissions remediation, Purview labeling backfill, retention policy gaps. These are Copilot-driven costs that do not appear on a Copilot invoice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License waste on inactive users.&lt;/strong&gt; ~64% of paid seats are inactive in a given month at average. The active-rate slider models the ones who use it; the seats that do not are a pure cost line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output-quality regressions.&lt;/strong&gt; Documents drafted by Copilot are written 12% faster but the experiment did not measure quality acceptance rate downstream. Some outputs go through more revision cycles, eating the speed gain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The point is not to skip Copilot but to defend the business case with eyes open. Procurement teams that are surprised by item 4 in month nine often kill a working program for the wrong reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use This With Your CFO
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Present three scenarios, not one.&lt;/strong&gt; Conservative (35% active, 0.5 hours per week, 0.3 deflation), realistic (55% active, 1.5 hours per week, 0.5 deflation), optimistic (75% active, 3 hours per week, 1.0 deflation). Show all three. Recommend the realistic. CFOs trust ranges with a recommendation; they distrust point estimates with marketing copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include the break-even active rate prominently.&lt;/strong&gt; "We need 47% of licensed users active each month for the program to pay back. Current adoption in the pilot is 38%. The first $200K of incremental investment should go to adoption enablement, not seat expansion." That sentence reframes the conversation from "should we buy Copilot" to "what does it take to make the seats we are about to buy actually work."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separate license cost from program cost.&lt;/strong&gt; Procurement will see the $30 per user per month and approve it. Do not let the $200K of partner services and the $300K of Purview governance work hide in operating budgets. Itemize them in the same memo. Cap the program before it caps you.&lt;/p&gt;

&lt;p&gt;The calculator above does not solve the procurement decision. It gives you the math to defend whatever decision you make. Move the sliders, save the scenario, send the memo. The honest version is more persuasive than the optimistic one because the honest version is the one that survives quarterly review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/azure-openai-ptu-vs-payg-real-break-even/" rel="noopener noreferrer"&gt;Azure OpenAI PTU vs PAYG: The Real Break-Even Table&lt;/a&gt; - the same honesty principle applied to Azure AI consumption pricing&lt;/li&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 procurement gotcha that most AI cost calculators miss&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 AI on Azure: Build vs Buy&lt;/a&gt; - the build-vs-buy decision that comes before the ROI calculation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/ai-readiness-assessment-microsoft-enterprises/" rel="noopener noreferrer"&gt;AI Readiness Assessment for Microsoft Enterprises&lt;/a&gt; - the 8-dimension assessment that flags adoption risk before the procurement decision&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;The calculator above uses the same input structure as a real ROI memo. Run it with your own labor costs, license counts, and adoption rates before quoting any number to procurement.&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/copilot-roi-calculator-microsoft-enterprises/" 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>githubcopilot</category>
      <category>copilotroi</category>
      <category>roicalculator</category>
    </item>
    <item>
      <title>Claude on Azure: The Marketplace Billing Trap</title>
      <dc:creator>Alex Pechenizkiy</dc:creator>
      <pubDate>Sat, 06 Jun 2026 00:09:19 +0000</pubDate>
      <link>https://dev.to/az365ai/claude-on-azure-the-marketplace-billing-trap-5c04</link>
      <guid>https://dev.to/az365ai/claude-on-azure-the-marketplace-billing-trap-5c04</guid>
      <description>&lt;p&gt;In March 2026, &lt;a href="https://www.theregister.com/2026/03/13/a_cautionary_tale_azure_startup_credits/" rel="noopener noreferrer"&gt;Tominaga Takuya&lt;/a&gt;, founder and CEO of Tokyo-based startup Leach, published a cautionary tale. He had Microsoft for Startups Founders Hub credits. He deployed Claude Opus on Azure AI Foundry. He shipped a feature. The first invoice was ¥237,081 (about $1,600 USD), charged directly to his credit card. The startup credits had not covered a single Claude token.&lt;/p&gt;

&lt;p&gt;He was not alone. A second Japanese founder racked up over ¥2,000,000 (about $13,000) in Claude charges in one month. German founder Bogdan Sevriukov hit €999.60. &lt;a href="https://www.theregister.com/2026/03/19/microsoft_startup_credits/" rel="noopener noreferrer"&gt;Riyaj Shaikh, a third founder&lt;/a&gt;, reported being billed several thousand dollars in a follow-up case. The Register also reported evidence of an approximately $3,000 charge against another startup whose credits stayed unused. A separate &lt;a href="https://learn.microsoft.com/en-ca/answers/questions/5815522/charge-for-using-claude-models-in-founders-hub-pro" rel="noopener noreferrer"&gt;Microsoft Q&amp;amp;A thread opened by Nitika Garg on March 10, 2026&lt;/a&gt; reports the same pattern on a Microsoft Azure Sponsorship account; in the comments, Spanish founder Iván de Blas (April 9, 2026) describes a €2,419.92 charge that landed on his credit card while the Azure billing portal showed €0.00. The largest case made public so far is a &lt;a href="https://techcommunity.microsoft.com/discussions/startupsatmicrosoft/17493-in-undisclosed-marketplace-charges-with-no-cost-visibility-no-recourse-no-/4510844" rel="noopener noreferrer"&gt;Microsoft Tech Community post by chrisbaker2000 on April 13, 2026&lt;/a&gt;: two consecutive invoices of $1,078.07 and $16,414.94 totalling $17,493.01, with the second invoice accumulating during the half of the month after the founder had already removed all Anthropic deployments.&lt;/p&gt;

&lt;p&gt;Tominaga then &lt;a href="https://www.change.org/p/microsoft-for-startups-fix-the-azure-ai-foundry-billing-trap" rel="noopener noreferrer"&gt;drafted a Change.org petition&lt;/a&gt; demanding clearer warnings, visual differentiation between native and Marketplace models, refunds for affected founders, and a public acknowledgement. It launched March 11, 2026, and as of May 5, 2026 had collected 50 signatures. Within days of launch, &lt;a href="https://www.theregister.com/2026/03/13/a_cautionary_tale_azure_startup_credits/" rel="noopener noreferrer"&gt;The Register&lt;/a&gt; and &lt;a href="https://www.infoworld.com/article/4145751/startups-accuse-microsoft-of-billing-trap-in-azure-ai-foundry-after-unexpected-charges.html" rel="noopener noreferrer"&gt;InfoWorld&lt;/a&gt; covered the story. The petition itself notes a formal complaint was filed with Japan's Fair Trade Commission.&lt;/p&gt;

&lt;p&gt;Sevriukov &lt;a href="https://learn.microsoft.com/en-us/answers/questions/5728641/azure-ai-foundry-presents-third-party-ai-models-as" rel="noopener noreferrer"&gt;opened a Microsoft Q&amp;amp;A thread&lt;/a&gt; on January 20, 2026 reporting his charge. The thread was later locked by Microsoft. The page now displays the literal banner "Locked Question. You can vote on whether it's helpful, but you can't add comments or replies." Microsoft moderator Manas Mohanty did acknowledge the issue there on Feb 27 and Mar 6, 2026 before the thread was locked. A &lt;a href="https://learn.microsoft.com/en-us/answers/questions/5646685/are-anthropic-claude-models-on-azure-ai-foundry-el" rel="noopener noreferrer"&gt;separate Q&amp;amp;A thread asking the eligibility question directly&lt;/a&gt; confirms the answer: Claude on Foundry is not covered by Founders Hub credits.&lt;/p&gt;

&lt;p&gt;Microsoft's &lt;a href="https://www.theregister.com/2026/03/19/microsoft_startup_credits/" rel="noopener noreferrer"&gt;official statement to The Register&lt;/a&gt;: "We listen closely to customer feedback and are continuously working to provide clear guidance in our product documentation, including pricing details and credit eligibility." Anthropic's position, communicated to affected founders: it has no visibility into Azure billing and cannot process refunds independently.&lt;/p&gt;

&lt;p&gt;This is not a UI bug. It is the Marketplace billing model working as designed, and it is the single most important thing to understand before you deploy any third-party model on Azure, including Claude, Llama, Mistral, Cohere, or anything else that did not originate inside Microsoft.&lt;/p&gt;

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

&lt;p&gt;Claude on Azure is sold through Azure Marketplace, not as a first-party Azure service. Founders Hub credits, MSDN credits, sponsored credits, and free-trial credits do NOT cover Claude usage. If a sponsored subscription has a credit card on file, the credit card is charged instead of credits. Only paid Enterprise Agreement (EA) and MCA-E subscriptions can buy Claude on Azure today, with EA accounts in South Korea and CSP subscriptions excluded. Models deploy only in East US 2 and Sweden Central. Default quota is zero RPM and zero TPM, which means a manual support ticket is required to deploy at all. Plan for these realities before you commit a project to Claude on Azure.&lt;/p&gt;

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

&lt;p&gt;This article mixes three categories of claim. Each is labeled inline so readers can apply their own evidence threshold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirmed by Microsoft documentation.&lt;/strong&gt; Marketplace billing bypasses Azure credits; CSP, sponsored, and credit-only subscriptions are excluded from Claude deployment; Claude on Foundry runs only in East US 2 and Sweden Central; default quota is 0 RPM / 0 TPM until a support ticket is filed; the AnthropicOrganizationCreationFailed error is observable in Sweden Central. All of these are linked to learn.microsoft.com pages further down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reported by primary journalism and named founders.&lt;/strong&gt; Specific charges and named individuals are sourced to The Register, InfoWorld, the Microsoft Tech Community, and Microsoft Q&amp;amp;A threads where the founders themselves posted. The locked state of the original Sevriukov Q&amp;amp;A thread is verified at fetch time against Microsoft's own UI text. Citations are inline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analyst commentary (mine).&lt;/strong&gt; The procurement-vs-architecture-gap framing, the multi-provider-by-design takeaway, the build-versus-direct-versus-Bedrock decision, and the pre-flight checklist are my own interpretation. They are reasonable inferences from the documented mechanics and the reported incidents, not Microsoft positions. Read them as such.&lt;/p&gt;
&lt;/blockquote&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.amazonaws.com%2Fuploads%2Farticles%2F2tusquxwhekr3asve8hp.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.amazonaws.com%2Fuploads%2Farticles%2F2tusquxwhekr3asve8hp.png" alt="Azure AI Foundry model catalog showing a native GPT card and a Marketplace Claude card with near-identical UI, where the GPT path draws down Azure credits but the Claude path bills a Marketplace charge to the card on file." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Same catalog UI, different billing reality: native models draw down credits, while Marketplace models (Claude, Llama, Mistral) bill the payment method on file.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What Actually Happened to the Founders
&lt;/h2&gt;

&lt;p&gt;Three founders, three subscription types, three different invoice sizes. Same root cause.&lt;/p&gt;

&lt;p&gt;Tominaga enrolled in Microsoft for Startups Founders Hub and received Azure credits through the program (which offers up to $150,000 in credits at the top tier). He used Foundry to deploy Claude Opus. From the Foundry catalog UI, Claude appeared next to GPT-5 and Phi with the same "Deploy" button, the same &lt;code&gt;Endpoint&lt;/code&gt; and &lt;code&gt;Key&lt;/code&gt; ceremony, the same dashboard. Behind the scenes, two completely different billing pipelines were running: GPT through Azure first-party billing where Founders Hub credits applied, and Claude through Azure Marketplace where they did not. He did not know this until the invoice arrived. His direct quote, &lt;a href="https://www.theregister.com/2026/03/13/a_cautionary_tale_azure_startup_credits/" rel="noopener noreferrer"&gt;captured in The Register's coverage&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The UI makes no distinction between credit-covered and Marketplace-billed models.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This trap is documented openly in Microsoft's own subscription rules but easy to miss. From the &lt;a href="https://learn.microsoft.com/azure/foundry/foundry-models/how-to/use-foundry-models-claude#prerequisites" rel="noopener noreferrer"&gt;official Foundry Claude deployment documentation&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you have an account with a credit card on file, the credit card will be charged instead of Azure Credits.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So even on a sponsored subscription with substantial unspent credits, the credit card on file gets charged the moment a Marketplace product runs. The credits sit untouched.&lt;/p&gt;

&lt;p&gt;Founders report a support loop that became its own story. Across The Register's coverage, the Microsoft Q&amp;amp;A threads, and the Microsoft Tech Community post, the same description recurs: Microsoft support directed them to Anthropic; Anthropic, which says it has no visibility into Azure billing, directed them back to Microsoft. Microsoft's &lt;a href="https://www.theregister.com/2026/03/19/microsoft_startup_credits/" rel="noopener noreferrer"&gt;official statement&lt;/a&gt; is that it is "continuously working to provide clear guidance" on credit eligibility, but the named founders' invoices stood at the time of writing.&lt;/p&gt;

&lt;p&gt;This is not a one-off UX bug. It is the fundamental architecture of how Azure resells third-party AI on its cloud. Microsoft has acknowledged the documentation gap and stated it is improving guidance, but the underlying Marketplace billing model itself is unlikely to change.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Founders Hub Credits Do Not Cover Claude
&lt;/h2&gt;

&lt;p&gt;Microsoft's &lt;a href="https://learn.microsoft.com/azure/cost-management-billing/benefits/credits/mca-check-azure-credits-balance#products-and-services-that-azure-credits-don't-cover" rel="noopener noreferrer"&gt;credit balance documentation&lt;/a&gt; is direct on this point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Azure credits don't apply to certain products and services. Any usage of these offerings is billed separately and charged regardless of your available Azure credit balance. In general, Azure credits don't cover: Partner-provided products or services, along with non-Microsoft products on Microsoft Marketplace.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href="https://learn.microsoft.com/azure/signups/overview#terms-and-conditions" rel="noopener noreferrer"&gt;Azure for Startups credit terms&lt;/a&gt; are even more explicit:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Startup credits cannot be used for Microsoft Azure support plans, third-party branded products, products sold through Microsoft Azure Marketplace, or products otherwise sold separately from Microsoft Azure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And separately, the &lt;a href="https://learn.microsoft.com/azure/foundry/foundry-models/how-to/use-foundry-models-claude#prerequisites" rel="noopener noreferrer"&gt;Foundry Claude deployment requirements&lt;/a&gt; list four unsupported subscription types:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Enterprise Accounts located in South Korea&lt;/li&gt;
&lt;li&gt;Cloud Solution Provider subscriptions&lt;/li&gt;
&lt;li&gt;Azure subscriptions that don't have an active pay-as-you-go billing method (for example, student, free trial, or startup credit-based accounts)&lt;/li&gt;
&lt;li&gt;Sponsored subscriptions that only use Azure credits.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three of those four exclusions hit Claude directly. Claude is third-party branded (it is an Anthropic product). It is sold through Azure Marketplace. Sponsored credit-only subscriptions are explicitly excluded. So Founders Hub credits cannot cover Claude usage by three independent rules at once.&lt;/p&gt;

&lt;p&gt;This is not a Claude-specific issue. The same applies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Llama models from Meta&lt;/li&gt;
&lt;li&gt;Mistral models on the Mistral Marketplace listing&lt;/li&gt;
&lt;li&gt;Cohere models&lt;/li&gt;
&lt;li&gt;Stability AI image models&lt;/li&gt;
&lt;li&gt;Any other Models-as-a-Service offering that ships with a partner brand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are running on credits, the only AI models you can use without surprise charges are first-party Microsoft services: Azure OpenAI (GPT family, o-series), Phi from Microsoft Research, and other Microsoft-published models in Foundry. Everything else is Marketplace, regardless of how seamless the deployment UI feels.&lt;/p&gt;
&lt;h2&gt;
  
  
  The 1P vs 3P Decision Tree on Foundry
&lt;/h2&gt;

&lt;p&gt;Foundry's model catalog mixes first-party (1P) and third-party (3P) models in the same UI without much warning. The architectural decision tree before picking a model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;1P (Azure OpenAI, Phi)&lt;/th&gt;
&lt;th&gt;3P / Marketplace (Claude, Llama, Mistral)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Billing pipeline&lt;/td&gt;
&lt;td&gt;Azure first-party billing&lt;/td&gt;
&lt;td&gt;Azure Marketplace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Founders Hub / startup credits cover it&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sponsored / MSDN / Visual Studio credits cover it&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free trial credits cover it&lt;/td&gt;
&lt;td&gt;Yes (subject to limits)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise Agreement (EA) coverage&lt;/td&gt;
&lt;td&gt;Yes (any geo)&lt;/td&gt;
&lt;td&gt;Yes, EXCEPT EA accounts in South Korea&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCA-E coverage&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSP subscription support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Not supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pay-as-you-go subscription&lt;/td&gt;
&lt;td&gt;Yes, no friction&lt;/td&gt;
&lt;td&gt;Not currently - quota is zero by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default quota for new subscriptions&lt;/td&gt;
&lt;td&gt;Usually allocated for OpenAI&lt;/td&gt;
&lt;td&gt;Zero RPM, zero TPM until ticketed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sponsored sub with credit card on file&lt;/td&gt;
&lt;td&gt;Credits used first&lt;/td&gt;
&lt;td&gt;Credit card charged immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Available regions&lt;/td&gt;
&lt;td&gt;Many, varies by model&lt;/td&gt;
&lt;td&gt;East US 2 and Sweden Central for Claude&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Procurement category&lt;/td&gt;
&lt;td&gt;Azure spend (cloud committed spend)&lt;/td&gt;
&lt;td&gt;Marketplace spend (separate budget line)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last row catches most enterprises. In a large company, "Azure spend" and "Azure Marketplace spend" are tracked separately, may sit in different budgets, are governed by different procurement teams, and have different approval thresholds. A team with full Azure budget authority may have zero authority to approve Marketplace purchases. The UI does not enforce the distinction. Finance does.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where Claude Actually Deploys
&lt;/h2&gt;

&lt;p&gt;As of April 2026, Microsoft Foundry supports a substantial Claude lineup. From Microsoft's own deployment documentation:&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;Status&lt;/th&gt;
&lt;th&gt;Context window&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-7&lt;/td&gt;
&lt;td&gt;Preview (released April 16, 2026)&lt;/td&gt;
&lt;td&gt;1M tokens, 128K max output&lt;/td&gt;
&lt;td&gt;Most capable Opus, adaptive thinking only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-6&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;1M tokens, 128K max output&lt;/td&gt;
&lt;td&gt;Production-stable Opus generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-5&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;200K tokens, 64K max output&lt;/td&gt;
&lt;td&gt;Older Opus, smaller context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-1&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;200K tokens&lt;/td&gt;
&lt;td&gt;Legacy, prefer 4.6 or 4.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-sonnet-4-6&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;1M tokens, 128K max output&lt;/td&gt;
&lt;td&gt;Frontier intelligence at scale, 1M GA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-sonnet-4-5&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;200K standard&lt;/td&gt;
&lt;td&gt;1M context beta retires April 30, 2026, migrate to 4.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-haiku-4-5&lt;/td&gt;
&lt;td&gt;Preview&lt;/td&gt;
&lt;td&gt;200K tokens&lt;/td&gt;
&lt;td&gt;Speed and cost optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-mythos-preview&lt;/td&gt;
&lt;td&gt;Gated research preview&lt;/td&gt;
&lt;td&gt;1M tokens, 128K max output&lt;/td&gt;
&lt;td&gt;Cybersecurity, autonomous coding, long-running agents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All Claude models on Foundry are deployment-type "Global Standard" only. There is no PTU, no provisioned throughput, no DataZone yet (US DataZone is on the roadmap). Two regions support deployment, period:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;East US 2&lt;/strong&gt; (the primary region, most stable)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sweden Central&lt;/strong&gt; (added later, currently flakier in practice)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your data residency requirements pin you to West Europe, UK South, Australia East, Germany West Central, or any other region, Claude on Azure is not an option. You either deploy via the Anthropic API directly (different data flow, different DPA), via AWS Bedrock (broader region coverage), or pick a different model.&lt;/p&gt;

&lt;p&gt;There is one more wrinkle. Anthropic enforces its own "Supported Regions Policy" on top of Azure's regional deployment. Even if your Azure tenant is in a supported deployment region, Anthropic may block the model based on the geography of the user invoking it. Verify both layers.&lt;/p&gt;

&lt;p&gt;The Sweden Central availability also comes with an active failure mode. Multiple practitioners report deployment failing with this error on Claude Sonnet 4.6 and Claude Opus 4.6:&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;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Failed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&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;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ResourceOperationFailure"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The resource operation completed with terminal provisioning state 'Failed'."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"details"&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;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AnthropicOrganizationCreationFailed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Internal Server Error."&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;Microsoft Q&amp;amp;A threads tracking this failure have remained open without a published root cause. The only known workaround is to retry the deployment in East US 2 instead. If you are designing architecture today, treat Sweden Central as best-effort and assume East US 2 is your real production region. Plan data residency and latency math accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Default Quota Is Zero. Yes, Zero.
&lt;/h2&gt;

&lt;p&gt;This is the second pitfall, and it costs more days of engineering time than the billing surprise costs dollars.&lt;/p&gt;

&lt;p&gt;Even on a fully eligible Enterprise Agreement subscription, in East US 2, with the Microsoft.CognitiveServices provider registered and the right RBAC, the default Claude quota is zero. Zero RPM. Zero TPM. From the &lt;a href="https://learn.microsoft.com/azure/foundry/foundry-models/how-to/use-foundry-models-claude#api-quotas-and-limits" rel="noopener noreferrer"&gt;Microsoft Foundry quota table&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;Model&lt;/th&gt;
&lt;th&gt;Default RPM&lt;/th&gt;
&lt;th&gt;Default TPM&lt;/th&gt;
&lt;th&gt;Enterprise + MCA-E RPM&lt;/th&gt;
&lt;th&gt;Enterprise + MCA-E TPM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-7&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;2,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-opus-4-6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;2,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-sonnet-4-6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;2,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude-haiku-4-5&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4,000&lt;/td&gt;
&lt;td&gt;4,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The "Default" column is what you get from Microsoft Foundry the moment the subscription becomes eligible. Nothing. The "Enterprise and MCA-E" column is what you get after a manual quota request through the &lt;a href="https://aka.ms/oai/stuquotarequest" rel="noopener noreferrer"&gt;quota increase request form&lt;/a&gt; is approved. This means every Claude project on Azure starts with a support ticket as a hard prerequisite, not as an escalation step.&lt;/p&gt;

&lt;p&gt;The design intent is confirmed in &lt;a href="https://learn.microsoft.com/en-us/answers/questions/5857733/azure-ai-foundry-anthropic-claude-opus-4-6-quota-r" rel="noopener noreferrer"&gt;Microsoft Q&amp;amp;A responses&lt;/a&gt;: Claude models are Marketplace-based offerings, so quota is not auto-assigned to every subscription. Even on subscriptions with valid billing and accepted Marketplace terms, the quota can show 0/0 until backend enablement is processed by Microsoft engineering.&lt;/p&gt;

&lt;p&gt;The blast radius of this is bigger than it looks. If your dev tenant has Claude working and your prod tenant does not, your CI/CD pipeline will fail silently in production with what looks like a permissions issue. The error message gives no hint that the actual problem is "your prod subscription has not been backend-enabled by a Microsoft engineer yet."&lt;/p&gt;

&lt;p&gt;Plan to file the quota request as the first action, on day one of the project, before any code is written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Cost Math: Claude Opus 4.7 vs GPT on Azure 1P
&lt;/h2&gt;

&lt;p&gt;Claude Opus 4.7 is the current production-aimed Anthropic model on Foundry, released April 16, 2026. Pricing per million tokens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Input:&lt;/strong&gt; $5 per million&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output:&lt;/strong&gt; $25 per million&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache reads:&lt;/strong&gt; roughly 10% of input rate (about 90% savings)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache writes:&lt;/strong&gt; roughly 25% premium over input&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch:&lt;/strong&gt; 50% discount on async workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The headline rates are unchanged from Opus 4.6, but the real cost is not, because Opus 4.7 ships with a new tokenizer that can produce up to 35% more tokens for the same input text. The multiplier is 1.0x to 1.35x in practice, with the higher end most often on code, structured data, and non-English text. So a request that cost $0.10 on Opus 4.6 can cost $0.10 to $0.135 on Opus 4.7 for identical work. A team running ~$10/day on 4.6 should expect ~$10 to $13.50/day on 4.7. Across a year that is up to a $1,200 swing on a small workload, before factoring scale-out.&lt;/p&gt;

&lt;p&gt;Compare to GPT family on Azure 1P (first-party):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use case (rough)&lt;/th&gt;
&lt;th&gt;Claude Opus 4.7 on Azure (Marketplace)&lt;/th&gt;
&lt;th&gt;GPT family on Azure OpenAI (1P)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10K req/day, 8K input, 1K output&lt;/td&gt;
&lt;td&gt;~$190/day on Opus 4.7 (after tokenizer multiplier)&lt;/td&gt;
&lt;td&gt;Substantially cheaper, varies by GPT tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Founders Hub / startup credits cover it&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription required&lt;/td&gt;
&lt;td&gt;EA or MCA-E + non-South-Korea + zero-quota ticket&lt;/td&gt;
&lt;td&gt;Most subs work, no ticket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokenizer surprise&lt;/td&gt;
&lt;td&gt;Up to 35% more tokens vs the same content on 4.6&lt;/td&gt;
&lt;td&gt;Stable across versions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Available regions&lt;/td&gt;
&lt;td&gt;East US 2, Sweden Central&lt;/td&gt;
&lt;td&gt;Many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning quality on hard tasks&lt;/td&gt;
&lt;td&gt;Strongest available 4.x family for long-context coding and agentic work&lt;/td&gt;
&lt;td&gt;Strong; Opus 4.7 typically wins on long-context and multi-hour agent runs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The math says: pick Claude Opus 4.7 when its reasoning ceiling and 1M context actually win for the workload, and you have a paid budget that can absorb both Marketplace billing and the tokenizer multiplier. Pick GPT on Azure 1P when good-enough reasoning meets the bar, you want credits to apply, and you do not need 1M context. There is no neutral default.&lt;/p&gt;

&lt;p&gt;For high-volume classification or routing, Claude Sonnet 4.6 ($3/$15 per million tokens) or Haiku 4.5 is usually the right call. Sonnet 4.6 has 1M context generally available. Sonnet 4.5's 1M-context beta retires April 30, 2026, so any code still using the &lt;code&gt;context-1m-2025-08-07&lt;/code&gt; beta header on Sonnet 4.5 must migrate before then.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pre-Flight Checklist Before You Deploy Claude
&lt;/h2&gt;

&lt;p&gt;Most of this article's pain is avoidable with a 30-minute pre-flight check. Run it before you commit any project to Claude on Azure.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Confirm subscription eligibility.&lt;/strong&gt; Run &lt;code&gt;az account show&lt;/code&gt;. Verify the subscription is EA (and NOT a Korean EA) or MCA-E with a billing method. CSP, sponsored, free-trial, MSDN, and credit-only subscriptions cannot deploy Claude.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirm credit applicability.&lt;/strong&gt; If you are on Founders Hub, MSDN, sponsorship, or any credit pool, assume credits do NOT apply to Claude. If a credit card sits on the same subscription, that card is charged the moment Claude runs. Either commit to paid spend or pick a 1P model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick a region.&lt;/strong&gt; East US 2 if at all possible. Sweden Central only if data residency demands it, with a documented fallback for the AnthropicOrganizationCreationFailed error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File the quota ticket BEFORE writing code.&lt;/strong&gt; Default quota is zero. Request the Enterprise/MCA-E allocation for the specific Anthropic models on the specific subscription. Day one, not when CI/CD is failing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up Azure Monitor budget alerts on Marketplace category specifically.&lt;/strong&gt; Marketplace charges roll up under a separate billing dimension. Filter on &lt;code&gt;MeterCategory&lt;/code&gt; containing the Anthropic publisher, not just total Azure spend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document the procurement category to finance.&lt;/strong&gt; Tell finance that AI workload spend will land partly in Azure billing and partly in Marketplace billing. Confirm the budget structure supports both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide the fallback model.&lt;/strong&gt; If Anthropic gets pulled, your subscription gets reclassified, or pricing shifts, what is your path? GPT-5 on Azure 1P? Claude direct via Anthropic API? AWS Bedrock? Have an answer documented before you start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan for the 35% tokenizer multiplier.&lt;/strong&gt; If you are migrating from Opus 4.6 to 4.7, expect costs up to 35% higher for the same inputs. Decide whether the quality gain justifies it or whether 4.6 is the better cost ceiling for your use case.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Should You Deploy Claude on Azure At All?
&lt;/h2&gt;

&lt;p&gt;This is the architecture question hiding under the cost question. There are three real choices for running Claude in production right now:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: Claude on Azure AI Foundry (Marketplace).&lt;/strong&gt;&lt;br&gt;
Wins when Microsoft is your dominant procurement vehicle, you need Foundry orchestration, you want Claude to sit alongside GPT-5 behind the same APIM gateway, and you have EA or MCA-E billing in a supported geography. Loses on credits, regions, CSP support, and the zero-default quota ceremony.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: Claude direct via Anthropic API.&lt;/strong&gt;&lt;br&gt;
Wins on speed (instant access, no quota tickets), region flexibility (Anthropic has more regions than Azure does for Claude), latest model availability (Anthropic ships new Claude versions to their direct API first by days to weeks), and credits if you negotiate Anthropic startup credits separately. Loses on Microsoft procurement consolidation, Foundry-native tracing, and any compliance posture that requires "everything goes through Azure."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option C: Claude via AWS Bedrock or GCP Vertex.&lt;/strong&gt;&lt;br&gt;
Wins for shops already on AWS or GCP, where Claude integrates with the cloud-native observability stack and Marketplace billing is a single bill from a single vendor. Loses on Microsoft integration entirely, but for organizations where Microsoft is not the primary cloud, this is often the cleanest path.&lt;/p&gt;

&lt;p&gt;The honest answer is that most enterprises end up with Option A for production and Option B for development. Architects who pretend "Azure has Claude now, problem solved" without understanding the Marketplace mechanics will hit the same trap thirty-five founders documented in the petition.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Tells You About Multi-Provider AI Architecture
&lt;/h2&gt;

&lt;p&gt;Take a step back. Why does this billing model exist?&lt;/p&gt;

&lt;p&gt;Because Azure is not a model factory. Azure is a procurement and compute layer that resells AI models from many parties, including Anthropic, Meta, Mistral, Cohere, Stability, and its own OpenAI partnership. The Marketplace billing model exists because each of those vendors has its own DPA, its own pricing, its own region availability, its own quota system, and its own subscription rules. Microsoft cannot absorb all of that into one billing pipeline. They can hide it behind a unified UI, which they do. They cannot make the underlying complexity disappear, no matter how seamless the catalog feels.&lt;/p&gt;

&lt;p&gt;For architects, the practical takeaway is provider-neutral by design. The model layer of your AI architecture will always be heterogeneous. Build for that. Use APIM or your own gateway as a routing layer that can shift workloads between Claude (Azure or direct), GPT-5, Llama, and whatever ships next. Treat the question "where does this model run, on what billing pipeline, in what region, with what subscription" as a first-class architecture concern, not a procurement concern that gets handed off.&lt;/p&gt;

&lt;p&gt;The founders who got burned were not technically wrong. Their architecture worked. Their procurement assumptions did not match procurement reality. That gap, between architecture and procurement, is exactly where senior AI architects earn their seat at the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Reading
&lt;/h2&gt;

&lt;ul&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 as MCP Servers: The Architecture That Actually Works&lt;/a&gt; - how to expose Azure resources to AI agents (any provider)&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 AI on Azure: Build vs Buy&lt;/a&gt; - when first-party Microsoft AI wins vs custom on Foundry&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://az365.ai/blog/building-ai-solutions-azure-architecture/" rel="noopener noreferrer"&gt;Building AI Solutions on Azure: The Architecture That Actually Works&lt;/a&gt; - multi-component AI stack patterns&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If you are architecting Claude or other multi-provider AI for a Microsoft business app stack and want a sanity check on the decision matrix above, &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/claude-on-azure-the-marketplace-billing-trap/" 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>anthropic</category>
      <category>marketplace</category>
    </item>
  </channel>
</rss>
