<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>rss.livelink.threads-in-node</title>
    <link>https://techcommunity.microsoft.com/t5/</link>
    <description>Microsoft Community Hub</description>
    <pubDate>Thu, 04 Jun 2026 21:24:40 GMT</pubDate>
    <dc:creator>Community</dc:creator>
    <dc:date>2026-06-04T21:24:40Z</dc:date>
    <item>
      <title>Intune macOS ADE: support for minimum macOS version enforcement before Platform SSO registration</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-intune/intune-macos-ade-support-for-minimum-macos-version-enforcement/m-p/4525688#M23530</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I would like to ask whether Microsoft Intune has any supported method, roadmap, or recommended workaround for enforcing a minimum or target macOS version during Automated Device Enrollment before Setup Assistant continues.&lt;/P&gt;&lt;P&gt;The scenario is macOS zero-touch deployment with Intune, Automated Device Enrollment, Setup Assistant with modern authentication, Await final configuration, and Platform SSO registration during ADE.&lt;/P&gt;&lt;P&gt;Platform SSO registration during Setup Assistant depends on newer macOS capabilities. In addition, some macOS deployment scenarios, such as Platform SSO password sync and macOS LAPS, may require or strongly benefit from a specific macOS version being installed before the user completes enrollment.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Today, Intune can manage macOS software updates after enrollment using Declarative Device Management software update policies. However, that does not fully solve the issue where the Mac starts ADE on an older macOS version. In that case, the device may begin Setup Assistant and Platform SSO registration before the required macOS version is installed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I am looking for is an Intune-native equivalent of enforcing a minimum or target macOS version during ADE, before Setup Assistant continues.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ideally, the macOS ADE enrollment profile in Intune would support options such as:&lt;/P&gt;&lt;P&gt;- Minimum required macOS version&lt;/P&gt;&lt;P&gt;- Target specific macOS version&lt;/P&gt;&lt;P&gt;- Target specific build, if supported&lt;/P&gt;&lt;P&gt;- Latest eligible macOS version for the device&lt;/P&gt;&lt;P&gt;- Apply the OS update before Platform SSO registration and final configuration&lt;/P&gt;&lt;P&gt;- Reporting in Intune showing whether the ADE OS update was required, started, completed, skipped, or failed&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Without this capability, organizations using Intune-only macOS deployment may still need manual IT staging or macOS restore/update before handing devices to users. This weakens the zero-touch deployment model, especially when adopting Platform SSO registration during Automated Device Enrollment.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1. Is there currently any supported way in Intune to enforce a minimum or target macOS version during ADE before Setup Assistant continues?&lt;/P&gt;&lt;P&gt;2. Is this capability on the Intune roadmap?&lt;/P&gt;&lt;P&gt;3. Are there any recommended workarounds for organizations deploying Platform SSO registration during ADE where a specific macOS version is required?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance for any guidance from the Intune team or the community.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 20:56:14 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-intune/intune-macos-ade-support-for-minimum-macos-version-enforcement/m-p/4525688#M23530</guid>
      <dc:creator>KacperM</dc:creator>
      <dc:date>2026-06-04T20:56:14Z</dc:date>
    </item>
    <item>
      <title>driver version on com port is not same as USB port after update</title>
      <link>https://techcommunity.microsoft.com/t5/windows-10/driver-version-on-com-port-is-not-same-as-usb-port-after-update/m-p/4525664#M24086</link>
      <description>&lt;P&gt;hi everybody,&lt;/P&gt;&lt;P&gt;i am using printer that i have updated its usb to serial driver but recently find out that the version on com port is not equal on usb port on device manager&lt;/P&gt;&lt;P&gt;so how to fix this difference&lt;/P&gt;&lt;img /&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 19:09:40 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-10/driver-version-on-com-port-is-not-same-as-usb-port-after-update/m-p/4525664#M24086</guid>
      <dc:creator>techi_guy</dc:creator>
      <dc:date>2026-06-04T19:09:40Z</dc:date>
    </item>
    <item>
      <title>how to completely change windows 10 language to English</title>
      <link>https://techcommunity.microsoft.com/t5/windows-10/how-to-completely-change-windows-10-language-to-english/m-p/4525662#M24085</link>
      <description>&lt;P&gt;hi every one,&lt;/P&gt;&lt;P&gt;i have changed display language to English but it did not completely change to English ,i still get settings in Arabic&lt;/P&gt;&lt;P&gt;so my default language is English&lt;/P&gt;&lt;P&gt;i am using windows 10 version 1909(OS build 18363.418)&amp;nbsp;&lt;/P&gt;&lt;P&gt;how to completely change windows to English&lt;/P&gt;&lt;P&gt;thanks in advanced&lt;/P&gt;&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 18:58:16 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-10/how-to-completely-change-windows-10-language-to-english/m-p/4525662#M24085</guid>
      <dc:creator>techi_guy</dc:creator>
      <dc:date>2026-06-04T18:58:16Z</dc:date>
    </item>
    <item>
      <title>Microsoft Defender for Cloud Customer Newsletter</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-defender-for-cloud/microsoft-defender-for-cloud-customer-newsletter/ba-p/4525656</link>
      <description>&lt;H1&gt;What's new in Defender for Cloud?&lt;/H1&gt;
&lt;P&gt;Defender for Cloud is now integrated into the Defender portal to bring together cloud security posture management and threat protection in a single experience. Read more about it &lt;A href="https://aka.ms/mdc_DefenderPortal" target="_blank"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Cloud security reporting in the Defender portal is now in public preview&lt;/H2&gt;
&lt;P&gt;Customers can now create, customize, and share security insights across the organization through Defender portal’s integrated cloud security reporting capabilities. With these reporting capabilities, customers can view built-in reports like CNAPP Executive Summary, create custom reports, export to PDF and more. For more details, please refer to this &lt;A href="https://aka.ms/mdc_Defenderportal_reporting" target="_blank"&gt;documentation&lt;/A&gt;.&lt;/P&gt;
&lt;P data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://aka.ms/MDCNewsJust" target="_blank"&gt;Check out other updates from last month here!&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://aka.ms/mdc_mtpblog" target="_blank"&gt;Check out monthly news for the rest of the MTP suite here!&lt;/A&gt; &amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Blog(s) of the month&lt;/H2&gt;
&lt;P&gt;In May, our team published the following blog posts we would like to share:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://aka.ms/MDCNewsBlog1" target="_blank"&gt;Better together with Azure WAF + Defender for Storage + Defender for Azure SQL Databases&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://aka.ms/MDCNewsBlog2" target="_blank"&gt;Public preview: Expanded coverage and unified management for SQL VA Express Configuration | Microsoft Community Hub&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-ogsc="rgb(0, 0, 0)"&gt;Defender for Cloud in the field&lt;/H2&gt;
&lt;P data-ogsc="rgb(0, 0, 0)"&gt;Check out the two short videos on Defender Portal integration and Start Secure Stay Secure with Defender for Cloud&lt;/P&gt;
&lt;UL data-editing-info="{&amp;quot;applyListStyleFromLevel&amp;quot;:true,&amp;quot;orderedStyleType&amp;quot;:1}"&gt;
&lt;LI data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://aka.ms/mdc_youtube_Defenderportal" data-ogsc="rgb(5, 99, 193)" target="_blank"&gt;&lt;U data-ogsc=""&gt;Microsoft Defender for Cloud deeply integrates with Microsoft Defender&lt;/U&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://aka.ms/mdc_youtube_startsecurestaysecure" data-ogsc="rgb(5, 99, 193)" target="_blank"&gt;&lt;U data-ogsc=""&gt;Start secure and stay secure with Microsoft Defender for Cloud&lt;/U&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2FMDCNewsField&amp;amp;data=05%7C02%7CYura.Lee%40microsoft.com%7C3927ff7829b9416ac31c08dd447f9315%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638742036921371778%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=Ni9o%2FuGnNm5keL5pEgpww3s46S3nE6EfDiG3Z28cPhI%3D&amp;amp;reserved=0" data-ogsc="rgb(5, 99, 193)" target="_blank"&gt;&lt;U data-ogsc=""&gt;Visit our YouTube page&lt;/U&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-ogsc="rgb(0, 0, 0)"&gt;GitHub Community&lt;/H2&gt;
&lt;P data-ogsc="rgb(0, 0, 0)"&gt;Check out this PS script and CLI to help you enable Defender for API at scale:&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://aka.ms/mdcgit_apiatscale" target="_blank"&gt;Onboard to Defender for API at scale&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-ogsc="rgb(0, 0, 0)"&gt;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2FMDCNewsGit&amp;amp;data=05%7C02%7CYura.Lee%40microsoft.com%7C3927ff7829b9416ac31c08dd447f9315%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638742036921474195%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=ZBr6NDY28EuqIzivYaky1d%2FBvBAr2oYHDW2vHcYuJKM%3D&amp;amp;reserved=0" target="_blank"&gt;Visit our GitHub page&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-ogsc="rgb(0, 0, 0)"&gt;Customer journey&lt;/H2&gt;
&lt;P&gt;Discover how other organizations successfully use Microsoft Defender for Cloud to protect their cloud workloads. This month we are featuring&amp;nbsp;&lt;A href="https://aka.ms/MDCNewsStory1" target="_blank"&gt;Loyens &amp;amp; Loeff&lt;/A&gt;, a law and tax firm, that operates in a high complex environment, sought to modernize the digital workplace with Microsoft 365 Copilot, Defender for Cloud and Purview.&lt;/P&gt;
&lt;H2&gt;Join our community!&lt;/H2&gt;
&lt;P&gt;We offer several customer connection programs within our private communities. By signing up, you can help us&amp;nbsp;shape our products through activities such as reviewing product roadmaps, participating in co-design, previewing features, and staying up-to-date with announcements. Sign up at&amp;nbsp;&lt;A href="https://www.aka.ms/JoinCCP" target="_blank"&gt;aka.ms/JoinCCP.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;We greatly value your input on the types of content that enhance your understanding of our security products. Your insights are crucial in guiding the development of our future public content. We aim to deliver material that not only educates but also resonates with your daily security challenges. Whether it’s through in-depth live webinars, real-world case studies, comprehensive best practice guides through blogs, or the latest product updates, we want to ensure our content meets your needs. Please submit your feedback on which of these formats do you find most beneficial and are there any specific topics you’re interested in&amp;nbsp;&lt;A href="https://aka.ms/PublicContentFeedback" aria-label="Link https://aka.ms/PublicContentFeedback" target="_blank"&gt;https://aka.ms/PublicContentFeedback.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note: If you want to stay current with Defender for Cloud and receive updates in your inbox, please consider subscribing to our monthly newsletter:&amp;nbsp;&lt;A href="https://aka.ms/MDCNewsSubscribe" target="_blank"&gt;https://aka.ms/MDCNewsSubscribe&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 18:30:12 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-defender-for-cloud/microsoft-defender-for-cloud-customer-newsletter/ba-p/4525656</guid>
      <dc:creator>Yura_Lee</dc:creator>
      <dc:date>2026-06-04T18:30:12Z</dc:date>
    </item>
    <item>
      <title>Run Global Secure Access with confidence: Introducing the GSA Operations Guide</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-entra-blog/run-global-secure-access-with-confidence-introducing-the-gsa/ba-p/4524891</link>
      <description>&lt;P&gt;In working with customers, I’ve seen the same pattern again and again: deployment gets the attention, but day 2 operations are where teams need the most structure. This guide is meant to make that part easier—with practical guidance teams can use right away.&lt;/P&gt;
&lt;H2&gt;TL;DR: Your day 2 playbook is here&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;What’s new?&lt;/STRONG&gt; A prescriptive &lt;STRONG&gt;Microsoft Entra Global Secure Access operations guide&lt;/STRONG&gt; on Microsoft Learn&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Why it matters:&lt;/STRONG&gt; It brings actionable, alert-first procedures for teams running Global Secure Access after deployment&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;What’s inside:&lt;/STRONG&gt; A role matrix, automated health checks, capability-specific guides, templates, and automation scripts&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Start here:&lt;/STRONG&gt; &lt;A href="https://microsoft.sharepoint.com/teams/AzureActiveDirectoryBlogcopy/Shared%20Documents/Entra%20Blog%20Publishing/aka.ms/GSAOpsGuide" target="_blank" rel="noopener"&gt;Microsoft Entra Global Secure Access operations guide&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;The day 2 gap&lt;/H2&gt;
&lt;P&gt;Deploying Global Secure Access (GSA) is only the beginning. Day 2 challenges raise questions like: &lt;BR /&gt;&lt;EM&gt;Who monitors what? When do checks happen? How do we know everything is healthy?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;The deployment guide covers rollout, and the product documentation explains configuration. But until now, there was no single resource that explained&amp;nbsp;&lt;STRONG&gt;how to operate Global Secure Access in production&lt;/STRONG&gt;. Customers, FastTrack, and partners built their own runbooks—and rebuilt them for each deployment.&lt;/P&gt;
&lt;P&gt;That ends today.&lt;/P&gt;
&lt;H2&gt;Announcing the Operations Guide&lt;/H2&gt;
&lt;P&gt;The &lt;A href="https://techcommunity.microsoft.com/t5/aka.ms/GSAOpsGuide" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Microsoft Entra Global Secure Access operations guide&lt;/STRONG&gt;&lt;/A&gt; is now live on Microsoft Learn.&lt;/P&gt;
&lt;P&gt;This post-deployment playbook delivers prescriptive guidance for&amp;nbsp;&lt;STRONG&gt;running Global Secure Access in production at scale&lt;/STRONG&gt;. It was created by the Global Secure Access customer experience engineering team with input from &lt;STRONG&gt;Thomas Detzner, Janice Ricketts, Jeff Bley, Luis Flores, Marilee Turscak, Peter Lenzke, Mohammad Zmaili, and Ken Withe&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Who this guide empowers&lt;/H2&gt;
&lt;P&gt;This guide is for the teams that keep Global Secure Access running every day: IT administrators, network engineers, and platform operations teams that need clear answers to questions like “Who owns what?” and “How do we prevent issues before they happen?”&lt;/P&gt;
&lt;P&gt;It also equips security leaders with structured reporting so they can demonstrate value and service health to executives. If you’re responsible for Global Secure Access performance, alerting, or automation, this is your new reference playbook. &lt;EM&gt;(And if you haven’t deployed yet, start with the &lt;/EM&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/architecture/gsa-deployment-guide-intro" target="_blank" rel="noopener"&gt;&lt;EM&gt;deployment guide&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.)&lt;/EM&gt;&lt;/P&gt;
&lt;H2&gt;What you’ll gain from this guide&lt;/H2&gt;
&lt;H3&gt;Shared practices that work across any environment&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Know your roles early:&lt;/STRONG&gt; A RACI matrix so responsibilities never overlap&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Manage change with confidence:&lt;/STRONG&gt; A GSA-tailored change-control framework for smooth updates&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prove success with clarity:&lt;/STRONG&gt; Reporting templates for operators, managers, and executives&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Adopt continuous improvement:&lt;/STRONG&gt; Built-in processes to spot gaps before they become issues&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Capability-specific playbooks structured for speed&lt;/H3&gt;
&lt;P&gt;Every workload (Private Access, Internet Access, Remote Networks, Microsoft Traffic) follows one clear pattern so teams always know what comes next:&lt;BR /&gt;&amp;nbsp;✔ Begin with &lt;STRONG&gt;alert-first monitoring&lt;/STRONG&gt; steps that catch issues early&lt;BR /&gt;&amp;nbsp;✔ Follow &lt;STRONG&gt;daily, weekly, monthly routines&lt;/STRONG&gt; for health maintenance&lt;BR /&gt;&amp;nbsp;✔ Automate critical workflows with &lt;STRONG&gt;Sentinel, Graph API, and PowerShell scripts&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp;✔ Track and tune KPIs using measured baselines&lt;BR /&gt;&amp;nbsp;✔ Diagnose and resolve quickly with &lt;STRONG&gt;symptom-to-fix troubleshooting&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3&gt;Don’t start from zero—use the templates&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Daily health check across all GSA capabilities&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;Ready-made change request forms and notification playbooks&lt;/LI&gt;
&lt;LI&gt;Modular checklists ready for your ITSM process&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Why this guide is different&lt;/H2&gt;
&lt;P&gt;Unlike generic environment monitoring advice, this guide delivers concrete, tested procedures built from field experience. It applies an alert-first approach so teams can act on signals from Microsoft Sentinel and Azure Monitor before dashboards show trouble.&lt;/P&gt;
&lt;P&gt;Each alert comes with an action—nothing is left unanswered. Automation is embedded throughout, including role-based access control (RBAC) hygiene checks and failover tests. Because operations demand clarity, the guide also provides measurable thresholds, baseline methods, and recovery steps that reduce noise and reinforce uptime.&lt;/P&gt;
&lt;H2&gt;Six moves to launch operational maturity&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Assign roles using the RACI matrix for full coverage&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;Configure critical alerts before adding custom workflows&lt;/LI&gt;
&lt;LI&gt;Collect 30 days of baseline data before adjusting thresholds&lt;/LI&gt;
&lt;LI&gt;Automate backups and priority alert notifications early&lt;/LI&gt;
&lt;LI&gt;Schedule routine checks using provided templates&lt;/LI&gt;
&lt;LI&gt;Begin structured reporting starting with weekly operations and monthly management reviews&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Why it matters for customers and partners&lt;/H2&gt;
&lt;P&gt;This framework reduces time to readiness after deployment, documents a defensible Day 2 plan for audits, cuts escalations by linking every alert to a clear action path, and gives FastTrack and partners a baseline for consistency in engagements.&lt;/P&gt;
&lt;H3&gt;Next up&lt;/H3&gt;
&lt;P&gt;Soon we will publish the GSA Security Operations Guide for Microsoft Entra Global Secure Access, providing a dedicated security monitoring and detection companion to the operational guides for Private Access, Internet Access, Remote Networks, and Microsoft traffic. It brings together the built-in alerts, log sources, Sentinel detections, and cross-signal investigation patterns that security teams need to identify suspicious activity and unauthorized changes across the GSA environment.&lt;/P&gt;
&lt;P&gt;If deployment is still ahead, start with the &lt;A href="https://learn.microsoft.com/en-us/entra/architecture/gsa-deployment-guide-intro" target="_blank" rel="noopener"&gt;GSA Deployment Guide&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Your move&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/t5/aka.ms/GSAOpsGuide" target="_blank" rel="noopener"&gt; Open the full guide&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Download templates and run your first daily health check today&lt;/LI&gt;
&lt;LI&gt;Post feedback and ideas to help shape future updates&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-Thomas Detzner&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.linkedin.com/in/thomasdetzner/" target="_blank" rel="noopener"&gt;Thomas Detzner | LinkedIn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Additional resources&lt;/STRONG&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://microsoft.sharepoint.com/teams/AzureActiveDirectoryBlogcopy/Shared%20Documents/Entra%20Blog%20Publishing/aka.ms/GSAOpsGuide" target="_blank" rel="noopener"&gt;Microsoft Entra Global Secure Access operations guide&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A style="font-style: normal; font-weight: 400; background-color: rgb(255, 255, 255);" href="https://aka.ms/IRPlaybooks" target="_blank" rel="noopener"&gt;Microsoft Incident Response Playbooks: response guidance for containment, eradication, and recovery after a SecOps detection is confirmed&lt;/A&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/global-secure-access/how-to-sentinel-integration" target="_blank" rel="noopener"&gt;Enhance threat detection with Global Secure Access in Microsoft Sentinel: how to stream GSA data into Sentinel, install the solution, enable analytics rules, and use the built-in workbooks.&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/global-secure-access/concept-alerts" target="_blank" rel="noopener"&gt;What are Global Secure Access alerts?: the built-in GSA alert types, what they mean, and where to view them.&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/global-secure-access/concept-global-secure-access-logs-monitoring" target="_blank" rel="noopener"&gt;Global Secure Access logs and monitoring: overview of dashboards, traffic logs, audit logs, enriched Microsoft 365 logs, retention, and monitoring surfaces.&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/global-secure-access/how-to-access-audit-logs" target="_blank" rel="noopener"&gt;How to access the Global Secure Access audit logs: where to find GSA-related audit activity and how to filter it for operational or security investigations&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/identity/monitoring-health/reference-audit-activities" target="_blank" rel="noopener"&gt;Microsoft Entra audit log categories and activities for Global Secure Access: the authoritative list of GSA audit operations and categories for change monitoring&lt;/A&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;&lt;STRONG&gt;Learn more about Microsoft Entra&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Prevent identity attacks, ensure least privilege access, unify access controls, and improve the experience for users with comprehensive identity and network access solutions across on-premises and clouds.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://www.microsoft.com/en-us/security/blog/products/microsoft-entra/" target="_blank" rel="noopener"&gt;Microsoft Entra News and Insights | Microsoft Security Blog&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/category/microsoft-entra/blog/microsoft-entra-blog" target="_blank" rel="noopener"&gt;Microsoft Entra blog | Tech Community&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/entra/" target="_blank" rel="noopener"&gt;Microsoft Entra documentation | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/category/microsoft-entra/discussions/microsoft-entra" target="_blank" rel="noopener"&gt;Microsoft Entra discussions | Microsoft Community&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 18:25:27 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-entra-blog/run-global-secure-access-with-confidence-introducing-the-gsa/ba-p/4524891</guid>
      <dc:creator>tdetzner</dc:creator>
      <dc:date>2026-06-04T18:25:27Z</dc:date>
    </item>
    <item>
      <title>MGCI Training - July Topic: Food! Meals, snacks, and beverages</title>
      <link>https://techcommunity.microsoft.com/t5/mgci-discussions/mgci-training-july-topic-food-meals-snacks-and-beverages/m-p/4525651#M81</link>
      <description>&lt;P&gt;Getting a little ahead of ourselves, but it's a tasty topic, maybe even a little spicy. :) &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Are you serving food at your event? It's one of the bigger costs for many events.&amp;nbsp;&lt;/P&gt;&lt;P&gt;What are your venue rules and requirements? Are you locked into their services?&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do you address folks with dietary restrictions?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What questions do you have about feeding your attendees?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What should you do? How can you get engaged in the conversation?&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Chime in here.&lt;/LI&gt;&lt;LI&gt;Do you have thoughts you'd like to contribute to the conversation? Let us know you'll be on the call!&amp;nbsp;&amp;nbsp;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 18:02:16 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/mgci-discussions/mgci-training-july-topic-food-meals-snacks-and-beverages/m-p/4525651#M81</guid>
      <dc:creator>WesPreston</dc:creator>
      <dc:date>2026-06-04T18:02:16Z</dc:date>
    </item>
    <item>
      <title>Giving Developers Claude Code with Azure API Management and Claude Models in Microsoft Foundry</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-foundry-blog/giving-developers-claude-code-with-azure-api-management-and/ba-p/4525212</link>
      <description>&lt;H1&gt;Summary&lt;/H1&gt;
&lt;P&gt;You want to give your engineering org&amp;nbsp;&lt;A href="https://docs.claude.com/en/docs/claude-code/overview" target="_blank" rel="noopener"&gt;Claude Code&lt;/A&gt;&amp;nbsp;without handing out Anthropic API keys, without per-developer billing sprawl, and without losing visibility into who is spending what. This post shows a battle-tested pattern:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Claude models run in Microsoft Foundry&lt;/STRONG&gt;, billed through your Azure subscription — no Anthropic contract or keys required.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Azure API Management (APIM)&lt;/STRONG&gt;&amp;nbsp;sits in front as an&amp;nbsp;&lt;STRONG&gt;LLM gateway&lt;/STRONG&gt;: it authenticates each developer with&amp;nbsp;&lt;STRONG&gt;Entra ID&lt;/STRONG&gt;, enforces&amp;nbsp;&lt;STRONG&gt;per-user rate limits and token quotas&lt;/STRONG&gt;, and emits&amp;nbsp;&lt;STRONG&gt;per-user usage metrics&lt;/STRONG&gt;&amp;nbsp;for chargeback.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Foundry lives in its own Azure subscription&lt;/STRONG&gt;, and APIM authenticates to it with a&amp;nbsp;&lt;STRONG&gt;Foundry API key&lt;/STRONG&gt;&amp;nbsp;— so there's&amp;nbsp;&lt;STRONG&gt;no cross-subscription RBAC&lt;/STRONG&gt;&amp;nbsp;to untangle.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Developers hold only short-lived Entra tokens.&lt;/STRONG&gt;&amp;nbsp;The Foundry key never leaves APIM.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Everything below is grounded in the&amp;nbsp;&lt;A href="https://docs.claude.com/en/docs/claude-code/llm-gateway" target="_blank" rel="noopener"&gt;Claude Code LLM gateway requirements&lt;/A&gt;&amp;nbsp;and Azure API Management's GenAI gateway policies. All command-line steps are shown in&amp;nbsp;&lt;STRONG&gt;PowerShell&lt;/STRONG&gt; for Windows developers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;The problem&lt;/H2&gt;
&lt;P&gt;Claude Code is a terminal- and IDE-native coding agent that talks to Claude over the&amp;nbsp;&lt;STRONG&gt;Anthropic Messages API&lt;/STRONG&gt;. Pointing it directly at Anthropic (or even directly at Foundry) creates three headaches for any organization beyond a handful of users:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Key sprawl and billing.&lt;/STRONG&gt;&amp;nbsp;Direct API keys mean either a shared key (no per-user attribution, a rotation nightmare) or many keys (procurement and offboarding overhead).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No throttle.&lt;/STRONG&gt;&amp;nbsp;Claude Code is&amp;nbsp;&lt;EM&gt;token-heavy&lt;/EM&gt;&amp;nbsp;— it reads files, plans, and edits in long loops. One runaway session or an over-enthusiastic team can produce a surprising bill with nothing standing between the developer and the model.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No visibility.&lt;/STRONG&gt;&amp;nbsp;Finance wants to know cost per team. Security wants to know who is calling what. A raw key gives you neither.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The fix is a&amp;nbsp;&lt;STRONG&gt;gateway&lt;/STRONG&gt;&amp;nbsp;that every request flows through — one that knows&amp;nbsp;&lt;EM&gt;who&lt;/EM&gt;&amp;nbsp;the developer is (Entra ID), enforces&amp;nbsp;&lt;EM&gt;how much&lt;/EM&gt;&amp;nbsp;they can use (APIM GenAI policies), and records&amp;nbsp;&lt;EM&gt;what&lt;/EM&gt; they used (Azure Monitor). Claude Code supports exactly this through its gateway configuration.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Architecture&lt;/H2&gt;
&lt;P&gt;Claude Code on a developer laptop authenticates to Azure API Management with an Entra ID bearer token; APIM validates the token, applies per-user token and request limits, swaps in the Foundry API key, and forwards the Anthropic Messages request to Claude in Microsoft Foundry in a separate subscription; per-user token usage is emitted to Application Insights.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The request path:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Developer laptop  (Claude Code CLI / VS Code)
   |   Authorization: Bearer &amp;lt;Entra access token for the APIM app&amp;gt;
   v
Azure API Management   (the LLM gateway)              [Subscription A]
   |  1. validate-jwt            confirm Entra identity, audience, app role
   |  2. extract oid             per-user counter key
   |  3. llm-token-limit         per-user tokens/min + monthly token quota
   |  4. rate-limit-by-key       per-user requests/min
   |  5. strip Authorization; set api-key from secret named value
   |  6. llm-emit-token-metric   per-user usage to App Insights
   v   (forwards Anthropic Messages format; anthropic-* headers preserved)
Microsoft Foundry  https://{resource}.services.ai.azure.com/anthropic/v1/messages
   v                                                    [Subscription B]
Claude deployments   (Sonnet 4.6 / Haiku 4.5 / Opus 4.6)&lt;/LI-CODE&gt;
&lt;P&gt;The key idea:&amp;nbsp;&lt;STRONG&gt;developer-facing auth and backend auth are independent.&lt;/STRONG&gt; Developers always authenticate as themselves with Entra ID at the gateway. How the gateway authenticates to Foundry is a separate decision — and you have two good options.&lt;/P&gt;
&lt;H3&gt;Choosing how the gateway authenticates to Foundry&lt;/H3&gt;
&lt;P&gt;Both options below are independent of the developer-facing Entra ID auth, and both work whether Foundry is in the&amp;nbsp;&lt;STRONG&gt;same&lt;/STRONG&gt;&amp;nbsp;subscription as APIM or a&amp;nbsp;&lt;STRONG&gt;different&lt;/STRONG&gt;&amp;nbsp;one. The only hard constraint for managed identity is that both resources live in the&amp;nbsp;&lt;STRONG&gt;same Entra tenant&lt;/STRONG&gt;.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Option A — Foundry API key&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Option B — Managed identity&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;How APIM authenticates&lt;/td&gt;&lt;td&gt;api-key&amp;nbsp;header from a secret named value&lt;/td&gt;&lt;td&gt;Entra token from APIM's managed identity, in the&amp;nbsp;Authorization&amp;nbsp;header&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Setup&lt;/td&gt;&lt;td&gt;Read the key once, store it in APIM&lt;/td&gt;&lt;td&gt;Enable APIM's identity, assign&amp;nbsp;&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt;&amp;nbsp;on Foundry&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Same subscription&lt;/td&gt;&lt;td&gt;Works&lt;/td&gt;&lt;td&gt;Works&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cross-subscription&lt;/td&gt;&lt;td&gt;Works — no RBAC crosses the boundary&lt;/td&gt;&lt;td&gt;Works — role assignment spans subscriptions in the same tenant&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cross-tenant&lt;/td&gt;&lt;td&gt;Works&lt;/td&gt;&lt;td&gt;Not supported — use a key&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Shared secret to rotate&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;None&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Best for&lt;/td&gt;&lt;td&gt;Fastest start; cross-tenant; key-only environments&lt;/td&gt;&lt;td&gt;Production; eliminates the shared secret&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 24.9228%" /&gt;&lt;col style="width: 34.4702%" /&gt;&lt;col style="width: 40.5761%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;This guide builds the&amp;nbsp;&lt;STRONG&gt;key-based path&lt;/STRONG&gt;&amp;nbsp;end to end, then shows the&amp;nbsp;&lt;STRONG&gt;managed-identity swap inline&lt;/STRONG&gt; at each step (Parts 3 and 4). Pick one — you don't need both.&lt;/P&gt;
&lt;H3&gt;What this design achieves&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Goal&lt;/th&gt;&lt;th&gt;How it's met&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Developers use Claude Code with no Anthropic billing or keys&lt;/td&gt;&lt;td&gt;Claude runs in Microsoft Foundry, billed through your Azure subscription&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Foundry can live in a different subscription&lt;/td&gt;&lt;td&gt;APIM reaches Foundry by URL + API key only — no cross-subscription RBAC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Every developer authenticates as themselves&lt;/td&gt;&lt;td&gt;Entra ID tokens validated at the APIM gateway&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Per-developer rate limits and quotas&lt;/td&gt;&lt;td&gt;rate-limit-by-key&amp;nbsp;+&amp;nbsp;llm-token-limit&amp;nbsp;keyed on the Entra&amp;nbsp;oid&amp;nbsp;claim&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Per-developer usage and cost tracking&lt;/td&gt;&lt;td&gt;llm-emit-token-metric&amp;nbsp;→ Application Insights / Log Analytics&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;No Foundry keys on developer laptops&lt;/td&gt;&lt;td&gt;The Foundry key lives only inside APIM; developers hold short-lived Entra tokens&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2&gt;Prerequisites&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Two Azure subscriptions&lt;/STRONG&gt;, both pay-as-you-go.&amp;nbsp;&lt;STRONG&gt;Subscription A&lt;/STRONG&gt;&amp;nbsp;holds APIM;&amp;nbsp;&lt;STRONG&gt;Subscription B&lt;/STRONG&gt;&amp;nbsp;holds Foundry. (Foundry Claude does not run on free, trial, sponsored, or CSP subscriptions.)&lt;/LI&gt;
&lt;LI&gt;A&amp;nbsp;&lt;STRONG&gt;Microsoft Foundry&lt;/STRONG&gt;&amp;nbsp;resource (Subscription B) in a region where Claude is available — currently&amp;nbsp;&lt;STRONG&gt;East US 2&lt;/STRONG&gt;&amp;nbsp;or&amp;nbsp;&lt;STRONG&gt;Sweden Central&lt;/STRONG&gt;&amp;nbsp;— with Claude deployments created and&amp;nbsp;&lt;STRONG&gt;at least one API key&lt;/STRONG&gt;&amp;nbsp;under&amp;nbsp;&lt;EM&gt;Keys and Endpoint&lt;/EM&gt;.&lt;/LI&gt;
&lt;LI&gt;An&amp;nbsp;&lt;STRONG&gt;API Management&lt;/STRONG&gt;&amp;nbsp;instance (Subscription A).&amp;nbsp;&lt;STRONG&gt;Developer&lt;/STRONG&gt;&amp;nbsp;SKU is fine for a pilot;&amp;nbsp;&lt;STRONG&gt;Standard v2&lt;/STRONG&gt;&amp;nbsp;or&amp;nbsp;&lt;STRONG&gt;Premium&lt;/STRONG&gt;&amp;nbsp;for production and VNet integration.&lt;/LI&gt;
&lt;LI&gt;Permission to read the Foundry key in Subscription B, contributor on the APIM instance, and the ability to register Entra apps.&lt;/LI&gt;
&lt;LI&gt;Developers on&amp;nbsp;&lt;STRONG&gt;Windows 10/11&lt;/STRONG&gt;&amp;nbsp;with&amp;nbsp;&lt;STRONG&gt;PowerShell&lt;/STRONG&gt;&amp;nbsp;(5.1 built-in, or 7), the&amp;nbsp;&lt;STRONG&gt;Azure CLI&lt;/STRONG&gt;&amp;nbsp;(winget install Microsoft.AzureCLI), and the&amp;nbsp;&lt;STRONG&gt;Claude Code CLI&lt;/STRONG&gt;&amp;nbsp;installed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Option A (key):&lt;/STRONG&gt;&amp;nbsp;no cross-subscription role assignment — the only cross-subscription action is reading the Foundry key once (Part 3), which you can also do from the Foundry portal.&amp;nbsp;&lt;STRONG&gt;Option B (managed identity):&lt;/STRONG&gt;&amp;nbsp;one cross-subscription role assignment (&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt;), supported as long as APIM and Foundry share an Entra tenant.&lt;/P&gt;
&lt;H2&gt;Part 1 — Deploy Claude in Foundry (Subscription B)&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;In the Foundry portal, open&amp;nbsp;&lt;STRONG&gt;Model catalog&lt;/STRONG&gt;, search&amp;nbsp;&lt;STRONG&gt;Claude&lt;/STRONG&gt;, and deploy the models Claude Code uses. Name each deployment to match its model ID so the gateway can pass the&amp;nbsp;model&amp;nbsp;field through unchanged:
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Deployment name (recommended)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Primary (general coding)&lt;/td&gt;&lt;td&gt;claude-sonnet-4-6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fast (file reads, small edits, background tasks)&lt;/td&gt;&lt;td&gt;claude-haiku-4-5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Extended thinking (optional)&lt;/td&gt;&lt;td&gt;claude-opus-4-6&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Pin versions&lt;/STRONG&gt;&amp;nbsp;— select a specific version, not&amp;nbsp;&lt;EM&gt;auto-update to latest&lt;/EM&gt;. Without pinning, a new model release can break every developer at once.&lt;/LI&gt;
&lt;LI&gt;On the resource's&amp;nbsp;&lt;STRONG&gt;Keys and Endpoint&lt;/STRONG&gt; blade, copy the endpoint and one of the two API keys. The Anthropic endpoint base is:&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="markup"&gt;https://{resource}.services.ai.azure.com/anthropic&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Critical:&lt;/STRONG&gt;&amp;nbsp;Foundry's Claude endpoint is the&amp;nbsp;&lt;STRONG&gt;Anthropic surface&lt;/STRONG&gt;&amp;nbsp;(/anthropic/v1/messages),&amp;nbsp;&lt;EM&gt;not&lt;/EM&gt;&amp;nbsp;the OpenAI surface (/openai/deployments/.../chat/completions?api-version=...). When you build the APIM API, do&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;apply the OpenAI policy template, do&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;add an&amp;nbsp;api-version&amp;nbsp;query parameter, and do&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt; rewrite to an&amp;nbsp;/openai/...&amp;nbsp;path. Any of these produces the "not supported" or "resource not found" errors people commonly hit.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;✅&amp;nbsp;&lt;STRONG&gt;Checkpoint:&lt;/STRONG&gt;&amp;nbsp;You now have Claude deployed in Foundry.&amp;nbsp;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fai.azure.com%2F&amp;amp;data=05%7C02%7Cmurkum%40microsoft.com%7C71ba4dccfe1449b82d0108dec1ef439b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161430541567930%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=EeBk%2BQ5y81EI6jHR4kMo5egCD0QgnHJw0pD7bWkF1gw%3D&amp;amp;reserved=0" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="9" data-ogsc=""&gt;Verify your deployment&lt;/A&gt; before continuing to Part 2.&lt;/P&gt;
&lt;H2&gt;Part 2 — Entra ID app registration (developer-facing)&lt;/H2&gt;
&lt;P&gt;This registration lives in Subscription A's tenant. It defines the&amp;nbsp;&lt;STRONG&gt;audience&lt;/STRONG&gt;&amp;nbsp;developers' tokens are issued for, and what APIM validates. It's unaffected by where Foundry lives.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;App registrations → New registration&lt;/STRONG&gt;&amp;nbsp;→ name it e.g.&amp;nbsp;Claude Code Gateway.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Expose an API&lt;/STRONG&gt;&amp;nbsp;→ set the Application ID URI, e.g.&amp;nbsp;api://claude-code-gateway. Add a scope&amp;nbsp;access_as_user&amp;nbsp;(admin + user consent).&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;(Optional, for tiering)&lt;/EM&gt;&amp;nbsp;&lt;STRONG&gt;App roles&lt;/STRONG&gt;&amp;nbsp;→ add roles such as&amp;nbsp;Claude.Standard&amp;nbsp;and&amp;nbsp;Claude.Premium. Assign developers or groups under&amp;nbsp;&lt;STRONG&gt;Enterprise applications → this app → Users and groups&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Note the&amp;nbsp;&lt;STRONG&gt;Application (client) ID&lt;/STRONG&gt;, the&amp;nbsp;&lt;STRONG&gt;Application ID URI&lt;/STRONG&gt;, and your&amp;nbsp;&lt;STRONG&gt;Tenant ID&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Developers request tokens for this app's audience; APIM validates aud = api://claude-code-gateway.&lt;/P&gt;
&lt;H2&gt;Part 3 — Provision the APIM API and Foundry backend (Subscription A)&lt;/H2&gt;
&lt;H3&gt;3.1 Option A — Store the Foundry API key in APIM&lt;/H3&gt;
&lt;P&gt;First read the key from Foundry in Subscription B (use --subscription so you don't have to switch your active context):&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Read a Foundry key from Subscription B
$FOUNDRY_KEY = az cognitiveservices account keys list `
  --name &amp;lt;foundry-resource&amp;gt; `
  --resource-group &amp;lt;foundry-rg&amp;gt; `
  --subscription &amp;lt;SUBSCRIPTION_B_ID&amp;gt; `
  --query key1 -o tsv&lt;/LI-CODE&gt;
&lt;P&gt;Then store it as a&amp;nbsp;&lt;STRONG&gt;secret named value&lt;/STRONG&gt; in APIM (Subscription A). The policy references it as&amp;nbsp;{{foundry-api-key}}:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Create a secret named value in APIM holding the Foundry key
az apim nv create -g &amp;lt;apim-rg&amp;gt; --service-name &amp;lt;apim-name&amp;gt; `
  --named-value-id foundry-api-key `
  --display-name foundry-api-key `
  --value "$FOUNDRY_KEY" `
  --secret true&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Hardening:&lt;/STRONG&gt;&amp;nbsp;instead of the raw key in APIM, put it in&amp;nbsp;&lt;STRONG&gt;Key Vault&lt;/STRONG&gt;&amp;nbsp;and create a&amp;nbsp;&lt;STRONG&gt;Key Vault-backed&lt;/STRONG&gt;&amp;nbsp;named value, so rotation lives in one place. APIM needs a managed identity with&amp;nbsp;&lt;EM&gt;Get/List&lt;/EM&gt; secret access on that vault — but the vault is in Subscription A alongside APIM, so this is still not a cross-subscription role assignment.&lt;/P&gt;
&lt;H3&gt;3.2 Option B — Give APIM a managed identity instead&lt;/H3&gt;
&lt;P&gt;If you'd rather not manage a shared key,&amp;nbsp;&lt;STRONG&gt;skip 3.1&lt;/STRONG&gt;&amp;nbsp;and give APIM an identity that Foundry trusts. This works in the&amp;nbsp;&lt;STRONG&gt;same subscription&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;across subscriptions&lt;/STRONG&gt; alike, as long as both resources are in the same Entra tenant.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Enable a system-assigned managed identity on APIM (Subscription A)
az apim update -g &amp;lt;apim-rg&amp;gt; --name &amp;lt;apim-name&amp;gt; `
  --set identity.type=SystemAssigned

# Get the identity's principal (object) ID
$APIM_MI = az apim show -g &amp;lt;apim-rg&amp;gt; --name &amp;lt;apim-name&amp;gt; `
  --query identity.principalId -o tsv

# Get the Foundry resource ID (Subscription B)
$FOUNDRY_ID = az cognitiveservices account show `
  --name &amp;lt;foundry-resource&amp;gt; --resource-group &amp;lt;foundry-rg&amp;gt; `
  --subscription &amp;lt;SUBSCRIPTION_B_ID&amp;gt; `
  --query id -o tsv

# Grant Cognitive Services User on the Foundry resource (works cross-subscription)
az role assignment create `
  --assignee-object-id $APIM_MI `
  --assignee-principal-type ServicePrincipal `
  --role "Cognitive Services User" `
  --scope $FOUNDRY_ID&lt;/LI-CODE&gt;
&lt;P&gt;The&amp;nbsp;&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt;&amp;nbsp;role (a97b65f3-24c7-4388-baec-2e87135dc908) grants data-plane access to call the model without key-management rights. Role assignments can take a few minutes to propagate. A&amp;nbsp;&lt;STRONG&gt;user-assigned&lt;/STRONG&gt;&amp;nbsp;identity works too — assign it to APIM and reference its client ID in the policy (Part 4, Option B). On this path there is&amp;nbsp;&lt;STRONG&gt;no&amp;nbsp;foundry-api-key&amp;nbsp;named value&lt;/STRONG&gt; to create or rotate.&lt;/P&gt;
&lt;H3&gt;3.3 Create the backend and API&lt;/H3&gt;
&lt;LI-CODE lang=""&gt;# Named backend pointing at the Foundry Anthropic endpoint (Subscription B URL)
az apim backend create -g &amp;lt;apim-rg&amp;gt; --service-name &amp;lt;apim-name&amp;gt; `
  --backend-id foundry-claude `
  --url "https://&amp;lt;foundry-resource&amp;gt;.services.ai.azure.com/anthropic" `
  --protocol http

# API with NO path suffix so callers hit /v1/messages at the gateway root
az apim api create -g &amp;lt;apim-rg&amp;gt; --service-name &amp;lt;apim-name&amp;gt; `
  --api-id claude-anthropic --display-name "Claude (Foundry)" `
  --path="" --protocols https `
  --service-url "https://&amp;lt;foundry-resource&amp;gt;.services.ai.azure.com/anthropic"&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;PowerShell + empty strings:&lt;/STRONG&gt;&amp;nbsp;write&amp;nbsp;--path=""&amp;nbsp;(joined with&amp;nbsp;=),&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt; --path ""&amp;nbsp;as two tokens. PowerShell strips a bare&amp;nbsp;""&amp;nbsp;before the&amp;nbsp;az&amp;nbsp;wrapper sees it, so the CLI reports&amp;nbsp;argument --path: expected one argument. The&amp;nbsp;=&amp;nbsp;form keeps it a single token (--path=) that&amp;nbsp;az&amp;nbsp;reads as an empty string. The same trick applies to any empty-string value you pass to&amp;nbsp;az&amp;nbsp;from PowerShell.&lt;/P&gt;
&lt;P&gt;Add the operations Claude Code calls (a wildcard covers them all):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;POST /v1/messages&lt;/LI&gt;
&lt;LI&gt;POST /v1/messages/count_tokens&lt;/LI&gt;
&lt;LI&gt;GET /v1/models&amp;nbsp;&lt;EM&gt;(only if you enable gateway model discovery — see Part 5.3)&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;az apim&amp;nbsp;can't apply XML policies. Apply the Part 4 policy via the portal (&lt;STRONG&gt;APIs → Claude (Foundry) → Inbound processing → policy editor&lt;/STRONG&gt;) or via Bicep/ARM.&lt;/EM&gt;&lt;/P&gt;
&lt;H2&gt;Part 4 — The APIM policy (auth + rate limiting + metering)&lt;/H2&gt;
&lt;P&gt;Apply this at the API level. Replace the tenant ID and audience. The policy below is the&amp;nbsp;&lt;STRONG&gt;key-based (Option A)&lt;/STRONG&gt;&amp;nbsp;version — its step 6&amp;nbsp;&lt;STRONG&gt;removes the developer's Authorization header&lt;/STRONG&gt;&amp;nbsp;and sets the&amp;nbsp;&lt;STRONG&gt;api-key&lt;/STRONG&gt;&amp;nbsp;header from the secret named value. For&amp;nbsp;&lt;STRONG&gt;managed identity (Option B)&lt;/STRONG&gt;, swap step 6 as shown immediately after the policy; every other step is identical.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;&amp;lt;policies&amp;gt;
  &amp;lt;inbound&amp;gt;
    &amp;lt;base /&amp;gt;
     &amp;lt;!-- On the client, Bearer token is generated and passed as x-api-key --&amp;gt;
    &amp;lt;set-header name="Authorization" exists-action="skip"&amp;gt;
            &amp;lt;value&amp;gt;@("Bearer " + context.Request.Headers.GetValueOrDefault("x-api-key",""))&amp;lt;/value&amp;gt;
    &amp;lt;/set-header&amp;gt;
    &amp;lt;!-- 1. Validate the developer's Entra ID token --&amp;gt;
    &amp;lt;validate-jwt header-name="Authorization"
                  failed-validation-httpcode="401"
                  failed-validation-error-message="Unauthorized: invalid or missing Entra token."&amp;gt;
      &amp;lt;openid-config url="https://login.microsoftonline.com/{{tenant-id}}/v2.0/.well-known/openid-configuration" /&amp;gt;
      &amp;lt;audiences&amp;gt;
        &amp;lt;audience&amp;gt;{{gateway-audience}}&amp;lt;/audience&amp;gt;
      &amp;lt;/audiences&amp;gt;
      &amp;lt;issuers&amp;gt;
        &amp;lt;issuer&amp;gt;https://login.microsoftonline.com/{{tenant-id}}/v2.0&amp;lt;/issuer&amp;gt;
        &amp;lt;!-- This is needed as  Claude Code's Foundry Mode is looking for scope as https://cognitiveservices.azure.com/.default and audience cannot be changed to APIM Audience (api://...) --&amp;gt;
        &amp;lt;issuer&amp;gt;https://sts.windows.net/{{tenant-id}}/&amp;lt;/issuer&amp;gt;
      &amp;lt;/issuers&amp;gt;
      &amp;lt;required-claims&amp;gt;
        &amp;lt;claim name="roles" match="any"&amp;gt;
          &amp;lt;value&amp;gt;Claude.Standard&amp;lt;/value&amp;gt;
          &amp;lt;value&amp;gt;Claude.Premium&amp;lt;/value&amp;gt;
        &amp;lt;/claim&amp;gt;
      &amp;lt;/required-claims&amp;gt;
    &amp;lt;/validate-jwt&amp;gt;

        &amp;lt;!-- 2. Per-developer key from the stable object id --&amp;gt;
        &amp;lt;set-variable name="callerId" value="@{
        var jwt = context.Request.Headers
            .GetValueOrDefault("Authorization","").Split(' ').Last().AsJwt();
        return jwt.Claims.GetValueOrDefault("oid", "unknown");
    }" /&amp;gt;
        &amp;lt;!-- 3. Tier from app role --&amp;gt;
        &amp;lt;set-variable name="tier" value="@{
        var jwt = context.Request.Headers
            .GetValueOrDefault("Authorization","").Split(' ').Last().AsJwt();
        return jwt.Claims.GetValueOrDefault("roles","").Contains("Claude.Premium") ? "premium" : "standard";
    }" /&amp;gt;
        &amp;lt;set-variable name="modelName" value="@{
      var body = context.Request.Body.As&amp;lt;JObject&amp;gt;(preserveContent: true);
      return body?["model"]?.ToString() ?? "unknown";
    }" /&amp;gt;
        &amp;lt;!-- 4. Token-based throttle per developer (controls LLM cost) --&amp;gt;
        &amp;lt;choose&amp;gt;
            &amp;lt;when condition="@(((string)context.Variables["tier"]) == "premium")"&amp;gt;
                &amp;lt;llm-token-limit counter-key="@((string)context.Variables["callerId"])" tokens-per-minute="200000" estimate-prompt-tokens="true" remaining-tokens-header-name="x-tokens-remaining" token-quota="20000000" token-quota-period="Monthly" /&amp;gt;
                &amp;lt;rate-limit-by-key calls="300" renewal-period="60" counter-key="@((string)context.Variables["callerId"])" retry-after-header-name="retry-after" remaining-calls-header-name="x-ratelimit-remaining" /&amp;gt;
            &amp;lt;/when&amp;gt;
            &amp;lt;otherwise&amp;gt;
                &amp;lt;llm-token-limit counter-key="@((string)context.Variables["callerId"])" tokens-per-minute="50000" estimate-prompt-tokens="true" remaining-tokens-header-name="x-tokens-remaining" token-quota="5000000" token-quota-period="Monthly" /&amp;gt;
                &amp;lt;rate-limit-by-key calls="100" renewal-period="60" counter-key="@((string)context.Variables["callerId"])" retry-after-header-name="retry-after" remaining-calls-header-name="x-ratelimit-remaining" /&amp;gt;
            &amp;lt;/otherwise&amp;gt;
        &amp;lt;/choose&amp;gt;
        &amp;lt;!-- 7. Emit per-developer token usage for tracking / chargeback --&amp;gt;
        &amp;lt;llm-emit-token-metric namespace="claudecode"&amp;gt;
            &amp;lt;dimension name="UserId" value="@((string)context.Variables["callerId"])" /&amp;gt;
            &amp;lt;dimension name="Tier" value="@((string)context.Variables["tier"])" /&amp;gt;
            &amp;lt;dimension name="Model" value="@(context.Request.Body?.As&amp;lt;JObject&amp;gt;(true)?["model"]?.ToString() ?? "unknown")" /&amp;gt;
        &amp;lt;/llm-emit-token-metric&amp;gt;
        &amp;lt;!-- 5. Request-rate throttle per developer --&amp;gt;
        &amp;lt;llm-emit-token-metric namespace="claudecode"&amp;gt;
            &amp;lt;dimension name="UserId" value="@((string)context.Variables["callerId"])" /&amp;gt;
            &amp;lt;dimension name="Tier" value="@((string)context.Variables["tier"])" /&amp;gt;
            &amp;lt;dimension name="Model" value="@((string)context.Variables["modelName"])" /&amp;gt;
        &amp;lt;/llm-emit-token-metric&amp;gt;
        &amp;lt;!-- 6. Authenticate to Foundry with its API key (secret named value) --&amp;gt;
        &amp;lt;!-- Strip the developer's Entra token so Foundry never sees it --&amp;gt;
        &amp;lt;set-header name="Authorization" exists-action="delete" /&amp;gt;
        &amp;lt;set-header name="x-api-key" exists-action="override"&amp;gt;
            &amp;lt;value&amp;gt;{{foundry-api-key}}&amp;lt;/value&amp;gt;
        &amp;lt;/set-header&amp;gt;
        &amp;lt;set-backend-service backend-id="foundry-claude" /&amp;gt;
    &amp;lt;/inbound&amp;gt;
    &amp;lt;backend&amp;gt;
        &amp;lt;base /&amp;gt;
    &amp;lt;/backend&amp;gt;
    &amp;lt;outbound&amp;gt;
        &amp;lt;base /&amp;gt;
    &amp;lt;/outbound&amp;gt;
    &amp;lt;on-error&amp;gt;
        &amp;lt;base /&amp;gt;
    &amp;lt;/on-error&amp;gt;
&amp;lt;/policies&amp;gt;&lt;/LI-CODE&gt;
&lt;H3&gt;Option B — authenticate to Foundry with managed identity&lt;/H3&gt;
&lt;P&gt;If you chose the managed-identity path (3.2), replace&amp;nbsp;&lt;STRONG&gt;step 6&lt;/STRONG&gt; above with the block below. Instead of injecting an&amp;nbsp;api-key, APIM acquires an Entra token for its own identity and forwards it as the&amp;nbsp;Authorization&amp;nbsp;bearer token. Token validation, rate limits, and metering are unchanged.&lt;/P&gt;
&lt;LI-CODE lang=""&gt;   &amp;lt;!-- 6 (Option B). Authenticate to Foundry with APIM's managed identity --&amp;gt;
    &amp;lt;!-- Replace the developer's token with an MI token scoped to AI Services --&amp;gt;
    &amp;lt;authentication-managed-identity
        resource="https://cognitiveservices.azure.com"
        output-token-variable-name="msi-token" /&amp;gt;
    &amp;lt;set-header name="Authorization" exists-action="override"&amp;gt;
      &amp;lt;value&amp;gt;@("Bearer " + (string)context.Variables["msi-token"])&amp;lt;/value&amp;gt;
    &amp;lt;/set-header&amp;gt;

    &amp;lt;set-backend-service backend-id="foundry-claude" /&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;The token audience for Azure AI Services / Foundry is&amp;nbsp;https://cognitiveservices.azure.com. For a&amp;nbsp;&lt;STRONG&gt;user-assigned&lt;/STRONG&gt; identity, add&amp;nbsp;client-id="&amp;lt;uami-client-id&amp;gt;"&amp;nbsp;to the&amp;nbsp;authentication-managed-identity&amp;nbsp;element. There's no&amp;nbsp;api-key&amp;nbsp;named value and no secret to rotate on this path — which is exactly why it's the preferred production posture.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Policy notes&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Stripping the developer's&amp;nbsp;Authorization&amp;nbsp;header&lt;/STRONG&gt;&amp;nbsp;before forwarding (step 6) matters: that Entra token is for APIM only. Foundry must receive&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;the&amp;nbsp;api-key&amp;nbsp;header.&lt;/LI&gt;
&lt;LI&gt;{{tenant-id}},&amp;nbsp;{{gateway-audience}}, and&amp;nbsp;{{foundry-api-key}}&amp;nbsp;are APIM named values. Mark&amp;nbsp;foundry-api-key&amp;nbsp;as&amp;nbsp;&lt;STRONG&gt;secret&lt;/STRONG&gt;; the first two can be plain named values.&lt;/LI&gt;
&lt;LI&gt;llm-token-limit&amp;nbsp;and&amp;nbsp;llm-emit-token-metric&amp;nbsp;are APIM's&amp;nbsp;&lt;STRONG&gt;GenAI gateway&lt;/STRONG&gt;&amp;nbsp;policies — they understand the Anthropic/OpenAI message formats and parse token usage, so you meter&amp;nbsp;&lt;EM&gt;tokens&lt;/EM&gt;, not just requests. That's the right cost lever for token-heavy Claude Code.&lt;/LI&gt;
&lt;LI&gt;These counters are&amp;nbsp;&lt;STRONG&gt;per-region per-gateway&lt;/STRONG&gt;. With multi-region APIM, limits are enforced per region.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Part 5 — Configure Claude Code on developer machines&lt;/H2&gt;
&lt;P&gt;Developers point Claude Code at APIM (Anthropic Messages gateway mode) and authenticate with their own Entra token. The backend-auth swap is invisible to clients.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;5.1 Entra token helper (per-developer, auto-refreshing)&lt;/H3&gt;
&lt;P&gt;Create %USERPROFILE%\.claude\get-claude-gateway-token.ps1:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;# Returns a short-lived Entra access token for the APIM gateway audience.
az account get-access-token `
  --resource "api://claude-code-gateway" `
  --query accessToken -o tsv&lt;/LI-CODE&gt;
&lt;P&gt;PowerShell scripts need no chmod. If execution policy blocks the helper, allow local scripts for your user once:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned&lt;/LI-CODE&gt;
&lt;H3&gt;5.2 Claude Code settings (%USERPROFILE%\.claude\settings.json)&lt;/H3&gt;
&lt;P&gt;In enabling configuration of below environment variables in settings.json under .claude folder allows its usage for all Claude Code sessions (VS Code, terminal CLI, JetBrains, etc.)&lt;/P&gt;
&lt;LI-CODE lang=""&gt;{
  "env": {
       "ANTHROPIC_BASE_URL": "https://&amp;lt;apim-name&amp;gt;azure-api.net",
       "ANTHROPIC_MODEL": "claude-opus-4-8",
       "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-8",
       "CLAUDE_CODE_API_KEY_HELPER_TTL_MS": "600000"
 },
  "apiKeyHelper": "powershell -NoProfile -ExecutionPolicy Bypass -File C:\\Users\\&amp;lt;you&amp;gt;\\.claude\\get-claude-gateway-token.ps1"
}&lt;/LI-CODE&gt;
&lt;P&gt;In JSON, backslashes must be doubled — hence&amp;nbsp;C:\\Users\\.... Use&amp;nbsp;pwsh&amp;nbsp;in place of&amp;nbsp;powershell&amp;nbsp;if you run PowerShell 7.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;apiKeyHelper&amp;nbsp;output is sent as the&amp;nbsp;Authorization&amp;nbsp;(and&amp;nbsp;X-Api-Key) header, validated by APIM's&amp;nbsp;validate-jwt. The developer never holds the Foundry key.&lt;/LI&gt;
&lt;LI&gt;CLAUDE_CODE_API_KEY_HELPER_TTL_MS=3600000&amp;nbsp;refreshes the token hourly (Entra access tokens last ~60–90 minutes).&lt;/LI&gt;
&lt;LI&gt;Pinning the three&amp;nbsp;ANTHROPIC_DEFAULT_*_MODEL&amp;nbsp;IDs ensures Claude Code sends model names that match your Foundry deployment names, so the gateway passes&amp;nbsp;model&amp;nbsp;through untouched.&lt;/LI&gt;
&lt;LI&gt;Other Anthropic models like Sonnet and Haiku can be provided. Default model to be used is provided with ANTHROPIC_MODEL.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Then developers run claude from their project folder.&lt;/P&gt;
&lt;H3&gt;5.3 Optional — model discovery&lt;/H3&gt;
&lt;P&gt;To list gateway models in the /model picker, expose GET /v1/models on the API and set CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 (Claude Code v2.1.129+). Only IDs starting with claude or anthropic appear.&lt;/P&gt;
&lt;H3&gt;5.4 VS Code extension&lt;/H3&gt;
&lt;P&gt;Settings.json in .claude folder will control both VS Code Extension and Claude Code CLI.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;🚀 &lt;STRONG&gt;Ready to test?&lt;/STRONG&gt; Jump to Part 7 to validate your setup, or run&amp;nbsp;claude&amp;nbsp;from your project folder to try it live.&lt;/P&gt;
&lt;H2&gt;Part 6 — Rate-limiting and usage-tracking design&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Per-developer keying.&lt;/STRONG&gt;&amp;nbsp;Everything is keyed on the Entra&amp;nbsp;oid&amp;nbsp;claim — stable and unique per user, unlike email or&amp;nbsp;upn&amp;nbsp;which can change. For service accounts or CI, key on&amp;nbsp;appid&amp;nbsp;instead.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Two enforcement layers:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;llm-token-limit&amp;nbsp;— tokens/min plus a monthly token quota. The real cost control.&lt;/LI&gt;
&lt;LI&gt;rate-limit-by-key&amp;nbsp;— requests/min. Guards against runaway loops.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Tiering&lt;/STRONG&gt;&amp;nbsp;is driven by Entra app roles (Claude.Standard&amp;nbsp;/&amp;nbsp;Claude.Premium) read from the JWT — no separate APIM subscription management needed.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Usage tracking&lt;/STRONG&gt; flows from&amp;nbsp;llm-emit-token-metric&amp;nbsp;into Application Insights with&amp;nbsp;UserId,&amp;nbsp;Tier, and&amp;nbsp;Model&amp;nbsp;dimensions. Example Log Analytics query for per-user monthly token spend:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang=""&gt;customMetrics
| where name == "Total Tokens" and customDimensions.namespace == "claudecode"
| extend UserId = tostring(customDimensions.UserId), Model = tostring(customDimensions.Model)
| summarize Tokens = sum(valueSum) by UserId, Model, bin(timestamp, 1d)
| order by Tokens desc&lt;/LI-CODE&gt;
&lt;P&gt;Foundry doesn't return Anthropic's standard rate-limit headers, so manage and observe limits through APIM (the headers above) and Azure Monitor rather than relying on upstream headers.&lt;/P&gt;
&lt;H2&gt;Part 7 — Test and validate&lt;/H2&gt;
&lt;LI-CODE lang=""&gt;# 1. Get a token as a developer
$TOKEN = az account get-access-token --resource "api://claude-code-gateway" --query accessToken -o tsv

# 2. Call the gateway directly in Anthropic Messages format
$body = @{
  model      = "claude-sonnet-4-6"
  max_tokens = 64
  messages   = @(@{ role = "user"; content = "Say hello in one word." })
} | ConvertTo-Json

Invoke-RestMethod -Method Post `
  -Uri "https://&amp;lt;apim-name&amp;gt;.azure-api.net/v1/messages" `
  -Headers @{
    "Authorization"     = "Bearer $TOKEN"
    "anthropic-version" = "2023-06-01"
    "content-type"      = "application/json"
  } `
  -Body $body&lt;/LI-CODE&gt;
&lt;P&gt;Invoke-RestMethod returns the parsed body but hides response headers. To see x-tokens-remaining / x-ratelimit-remaining, use Invoke-WebRequest with -ResponseHeadersVariable resp (then read $resp), or call curl.exe -i (the real curl, not PowerShell's curl alias).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Validation checklist&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;No token / expired token →&amp;nbsp;&lt;STRONG&gt;401&lt;/STRONG&gt;&amp;nbsp;from&amp;nbsp;validate-jwt&amp;nbsp;(confirm before trusting rate limits).&lt;/LI&gt;
&lt;LI&gt;Valid token →&amp;nbsp;&lt;STRONG&gt;200&lt;/STRONG&gt;&amp;nbsp;with a Claude completion; response carries&amp;nbsp;x-tokens-remaining&amp;nbsp;/&amp;nbsp;x-ratelimit-remaining.&lt;/LI&gt;
&lt;LI&gt;401 from Foundry on a valid developer token → the&amp;nbsp;api-key&amp;nbsp;named value is wrong or not injected (see&amp;nbsp;&lt;EM&gt;Troubleshooting&lt;/EM&gt;).&lt;/LI&gt;
&lt;LI&gt;Exceed the limit →&amp;nbsp;&lt;STRONG&gt;429&lt;/STRONG&gt;&amp;nbsp;with&amp;nbsp;retry-after.&lt;/LI&gt;
&lt;LI&gt;App Insights →&amp;nbsp;customMetrics&amp;nbsp;shows token counts dimensioned by&amp;nbsp;UserId.&lt;/LI&gt;
&lt;LI&gt;Then run claude end to end from a project folder.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Part 8 — Operations and hardening&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Key rotation (Option A).&lt;/STRONG&gt;&amp;nbsp;Foundry gives you two keys. Rotate by updating the&amp;nbsp;foundry-api-key&amp;nbsp;named value to&amp;nbsp;key2, then regenerating&amp;nbsp;key1&amp;nbsp;— zero downtime. A Key Vault-backed named value makes this a one-place change.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prefer managed identity in production (Option B).&lt;/STRONG&gt;&amp;nbsp;If you started on the key path, switch to managed identity (Parts 3.2 and 4, Option B) to remove the shared secret entirely. Because the&amp;nbsp;&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt;&amp;nbsp;role assignment works across subscriptions in the same tenant, the cross-subscription topology doesn't block this upgrade — and developers see no change, since their side of the contract is always&amp;nbsp;&lt;EM&gt;authenticate to the gateway as yourself&lt;/EM&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Private networking.&lt;/STRONG&gt;&amp;nbsp;Put APIM in internal VNet mode and reach Foundry over a&amp;nbsp;&lt;STRONG&gt;Private Endpoint&lt;/STRONG&gt;; disable Foundry public network access so the gateway is the only path in. Cross-subscription private endpoints are supported.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resilience.&lt;/STRONG&gt;&amp;nbsp;Deploy Claude in two regions and use APIM's load-balanced backend pool with retry on 429 and 5xx.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost guardrails.&lt;/STRONG&gt;&amp;nbsp;Pair per-user&amp;nbsp;llm-token-limit&amp;nbsp;quotas with an&amp;nbsp;&lt;STRONG&gt;Azure Budget&lt;/STRONG&gt; and alert on the Foundry resource in Subscription B.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Troubleshooting&lt;/H2&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Symptom&lt;/th&gt;&lt;th&gt;Cause / fix&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;404 resource not found&lt;/STRONG&gt;&amp;nbsp;from Foundry&lt;/td&gt;&lt;td&gt;Backend URL or path wrong, or an OpenAI-style rewrite applied. Backend must end in&amp;nbsp;/anthropic; callers hit&amp;nbsp;/v1/messages. Remove any&amp;nbsp;/openai/...&amp;nbsp;rewrite and&amp;nbsp;api-version&amp;nbsp;query param.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;401 from Foundry&lt;/STRONG&gt;&amp;nbsp;(developer token is valid) —&amp;nbsp;&lt;EM&gt;Option A&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;The&amp;nbsp;api-key&amp;nbsp;header is missing/wrong, or the&amp;nbsp;foundry-api-key&amp;nbsp;named value wasn't saved as expected. Confirm the named value, and that the policy deletes the developer&amp;nbsp;Authorization&amp;nbsp;header and sets&amp;nbsp;api-key.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;401 / 403 from Foundry&lt;/STRONG&gt;&amp;nbsp;—&amp;nbsp;&lt;EM&gt;Option B (managed identity)&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;The role assignment is missing or hasn't propagated yet, or the token audience is wrong. Confirm APIM's identity has&amp;nbsp;&lt;STRONG&gt;Cognitive Services User&lt;/STRONG&gt;&amp;nbsp;on the Foundry resource, wait a few minutes, and ensure the policy requests&amp;nbsp;resource="https://cognitiveservices.azure.com". For a user-assigned identity, confirm the&amp;nbsp;client-id&amp;nbsp;is set.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Managed identity works same-sub but not cross-sub&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The two resources are in different Entra&amp;nbsp;&lt;STRONG&gt;tenants&lt;/STRONG&gt;. Cross-tenant managed identity isn't supported — use the API key (Option A) instead.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;401 at the gateway&lt;/STRONG&gt;&amp;nbsp;even with a token&lt;/td&gt;&lt;td&gt;aud&amp;nbsp;or issuer mismatch. Confirm the token's&amp;nbsp;aud = api://claude-code-gateway&amp;nbsp;and you used the v2.0 OIDC config and issuer.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;403 from Foundry&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;The key belongs to a different Foundry resource, or the resource disabled key auth. Re-copy a key from&amp;nbsp;&lt;EM&gt;Keys and Endpoint&lt;/EM&gt;, or re-enable local/key auth.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Reduced Claude Code functionality&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Gateway stripped&amp;nbsp;anthropic-beta&amp;nbsp;/&amp;nbsp;anthropic-version. Ensure both headers pass through.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Model not available&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Claude Code's model ID doesn't match the Foundry deployment name. Align names, or rewrite the body&amp;nbsp;model&amp;nbsp;field in policy.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;ChainedTokenCredential authentication failed&lt;/STRONG&gt;&amp;nbsp;(client side)&lt;/td&gt;&lt;td&gt;Developer not logged in. Run az login so the helper has a usable Azure credential.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Wrapping up&lt;/H2&gt;
&lt;P&gt;With about an afternoon of setup you get a gateway that every Claude Code request flows through:&amp;nbsp;&lt;STRONG&gt;Entra ID&lt;/STRONG&gt;&amp;nbsp;proves who the developer is,&amp;nbsp;&lt;STRONG&gt;APIM GenAI policies&lt;/STRONG&gt;&amp;nbsp;cap how much each person can spend, and&amp;nbsp;&lt;STRONG&gt;Application Insights&lt;/STRONG&gt;&amp;nbsp;tells you exactly where the tokens went. For the APIM → Foundry hop you pick what fits: a&amp;nbsp;&lt;STRONG&gt;Foundry API key&lt;/STRONG&gt;&amp;nbsp;held only inside APIM (fastest start, works cross-tenant) or a&amp;nbsp;&lt;STRONG&gt;managed identity&lt;/STRONG&gt;&amp;nbsp;with no shared secret at all (the production posture). Either way Claude can live in its own subscription, and developers hold nothing more sensitive than a short-lived Entra token.&lt;/P&gt;
&lt;P&gt;When you're ready to tighten the screws, the upgrade path is clean: if you started on the key, move it into Key Vault, then graduate to&amp;nbsp;&lt;STRONG&gt;managed identity&lt;/STRONG&gt; to eliminate the secret entirely, and put the whole path on a private network.&amp;nbsp;&lt;/P&gt;
&lt;P data-olk-copy-source="MessageBody"&gt;'None of those steps disrupt developers, because their side of the contract — authenticate to the gateway as yourself — never changes.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Start your pilot today:&lt;/STRONG&gt;&amp;nbsp;Deploy a Developer-tier APIM instance, connect it to Foundry, and have your first developer running Claude Code through the gateway by end of day. The&amp;nbsp;&lt;A href="https://outlook.office.com/mail/inbox/id/AAkALgAAAAAAHYQDEapmEc2byACqAC%2FEWg0AP3d1VUAgUUuVO2mJolMPogALOul9OgAA?nativeVersion=1.2026.601.200#x_prerequisites" target="_blank" rel="noopener" data-linkindex="10" data-ogsc=""&gt;Prerequisites&lt;/A&gt; section has everything you need to begin.'&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;All command-line steps target Windows with PowerShell 5.1 or 7. Model IDs and Foundry regions reflect availability at time of writing; check the Foundry model catalog for current options.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2 data-olk-copy-source="MessageBody"&gt;Next Steps&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Get started now:&lt;/STRONG&gt;&amp;nbsp;-&amp;nbsp;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fai.azure.com%2Fexplore%2Fmodels&amp;amp;data=05%7C02%7Cmurkum%40microsoft.com%7C71ba4dccfe1449b82d0108dec1ef439b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161430541464956%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=%2BDZH3sBLUuwuNBuhyKLvD0pQDG4xwqoCNvAXhKIJr6Q%3D&amp;amp;reserved=0" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="3" data-ogsc=""&gt;Deploy Claude models in Microsoft Foundry&lt;/A&gt;&amp;nbsp;— browse the model catalog and create your first deployment -&amp;nbsp;&lt;A href="https://portal.azure.com/#create/Microsoft.ApiManagement" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="4" data-ogsc=""&gt;Create an API Management instance&lt;/A&gt;&amp;nbsp;— spin up a Developer SKU for your pilot&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Go deeper:&lt;/STRONG&gt;&amp;nbsp;-&amp;nbsp;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.claude.com%2Fen%2Fdocs%2Fclaude-code%2Fllm-gateway&amp;amp;data=05%7C02%7Cmurkum%40microsoft.com%7C71ba4dccfe1449b82d0108dec1ef439b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161430541485470%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=NfUyUYoiG9Bcb7PhOTYzED9dy3f2WPYkOBlvvveLFVk%3D&amp;amp;reserved=0" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="5" data-ogsc=""&gt;Claude Code LLM gateway requirements&lt;/A&gt;&amp;nbsp;— full specification for gateway compatibility -&amp;nbsp;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flearn.microsoft.com%2Fazure%2Fapi-management%2Fllm-token-limit-policy&amp;amp;data=05%7C02%7Cmurkum%40microsoft.com%7C71ba4dccfe1449b82d0108dec1ef439b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161430541505712%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=VnU%2Bhh%2FjvrST5t9ow0XtrFJi1NyIe%2FhE4zsO5TIg4gg%3D&amp;amp;reserved=0" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="6" data-ogsc=""&gt;APIM GenAI gateway policies reference&lt;/A&gt;&amp;nbsp;— all available token and rate limiting options&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Get help:&lt;/STRONG&gt;&amp;nbsp;- Questions? Post in the&amp;nbsp;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fazure-ai%2Fbd-p%2FAzureAI&amp;amp;data=05%7C02%7Cmurkum%40microsoft.com%7C71ba4dccfe1449b82d0108dec1ef439b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161430541526232%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=bx8tOScQMgxsFgDe2AxCt13KIE7cpbxXDbKYS1ENeZs%3D&amp;amp;reserved=0" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="7" data-ogsc=""&gt;Azure AI Community&lt;/A&gt;&amp;nbsp;with tag #ClaudeCode - Found an issue with this guide?&amp;nbsp;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzure%2Fazure-api-management-samples&amp;amp;data=05%7C02%7Cmurkum%40microsoft.com%7C71ba4dccfe1449b82d0108dec1ef439b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161430541547310%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=36Z6Q%2FaB29EY6Ix8NXoG5rElf9YQDnMW1aeNDDUpdYw%3D&amp;amp;reserved=0" target="_blank" rel="noopener" data-auth="NotApplicable" data-linkindex="8" data-ogsc=""&gt;Open a GitHub issue&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 17:41:20 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-foundry-blog/giving-developers-claude-code-with-azure-api-management-and/ba-p/4525212</guid>
      <dc:creator>MuraliKumanduri</dc:creator>
      <dc:date>2026-06-04T17:41:20Z</dc:date>
    </item>
    <item>
      <title>No way to automate restoring user‑reported emails after “no threats found”</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-defender-for-office/no-way-to-automate-restoring-user-reported-emails-after-no/m-p/4525644#M1152</link>
      <description>&lt;P&gt;When a user reports an email as phishing in Defender, the message gets moved to Deleted Items. After we triage it, if we mark it as “no threats found,” there’s no way to push it back to the user’s inbox as part of that workflow.&lt;/P&gt;&lt;P&gt;That creates a bit of a broken experience:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;User is told the email is safe with our customized email response, but has to go find it themselves&lt;/LI&gt;&lt;LI&gt;In a lot of cases they don’t (Outlook search won’t find it)&lt;/LI&gt;&lt;LI&gt;We end up with follow‑ups like “where did it go?”&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Technically we could restore the email as part of our triage process, but that just shifts the effort onto the SOC. It doesn’t scale, and it’s not really the right place for that work.&amp;nbsp; We have tried to create an automation to do this, but we have not been able to create an advanced hunting query based on our triage result that can then trigger an action to restore it to the mailbox.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So we end up choosing between:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Users having a bad experience, or&lt;/LI&gt;&lt;LI&gt;Analysts doing manual mailbox work&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Neither is ideal.&lt;/P&gt;&lt;P&gt;Other platforms (like Proofpoint) handle this end‑to‑end — once something is confirmed clean, it can be returned to the user automatically.&lt;/P&gt;&lt;P&gt;Right now Defender stops at classification instead of completing the workflow.&lt;/P&gt;&lt;P&gt;Is there a reason this isn’t wired in, or anything on the roadmap to address it?&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 17:30:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-defender-for-office/no-way-to-automate-restoring-user-reported-emails-after-no/m-p/4525644#M1152</guid>
      <dc:creator>GT_deb</dc:creator>
      <dc:date>2026-06-04T17:30:51Z</dc:date>
    </item>
    <item>
      <title>Partner Blog | Streamline your campaign execution with Partner Marketing Center Pro</title>
      <link>https://techcommunity.microsoft.com/t5/partner-news/partner-blog-streamline-your-campaign-execution-with-partner/ba-p/4525559</link>
      <description>&lt;P&gt;Your customers are moving quickly, and their expectations for relevance,&amp;nbsp;speed, and clear business value&amp;nbsp;are rising.&amp;nbsp;For partners, that means marketing execution needs to move faster too, from campaign&amp;nbsp;discovery,&amp;nbsp;to&amp;nbsp;planning,&amp;nbsp;and localization,&amp;nbsp;lead generation, performance tracking, and optimization.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since we&amp;nbsp;introduced Partner Marketing Center Pro, the focus has stayed the same: reduce friction so you can find the right campaign, tailor it to your business,&amp;nbsp;launch with confidence,&amp;nbsp;and understand what to improve next.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;A href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpmc.partner.microsoft.com%2F&amp;amp;data=05%7C02%7Cv-armourjill%40microsoft.com%7Cc92feae67b8e482a673e08dec1baf41f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C639161205916444954%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&amp;amp;sdata=NoyvffPr46E5PSidiylJtOFDo3Tz37P6F0Ch1lRa6os%3D&amp;amp;reserved=0" target="_blank" rel="noopener"&gt;Partner Marketing Center Pro&lt;/A&gt;&lt;/U&gt;&amp;nbsp;brings&amp;nbsp;the campaign lifecycle into one AI-powered marketing hub so you can save time, reduce manual effort,&amp;nbsp;lower localization costs, and get to market faster without stitching together multiple tools.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you are already running campaigns,&amp;nbsp;PMC Pro is built to shorten the path from idea to&amp;nbsp;execution and&amp;nbsp;give marketing leaders&amp;nbsp;better visibility into what is working.&amp;nbsp;If you are building your marketing muscle, it gives you a clear starting point with proven campaign structures,&amp;nbsp;Microsoft-aligned messaging, and&amp;nbsp;the tools to customize, launch, measure,&amp;nbsp;and improve over time.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Partner Marketing Center Pro simplifies campaign execution&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Partner Marketing Center Pro&amp;nbsp;Is the unified, AI-powered marketing hub&amp;nbsp;designed to streamline end-to-end planning, activation, execution, and performance&amp;nbsp;tracking.&amp;nbsp;It enables partners to reduce manual production work, scale demand generation more consistently, and move from campaign idea to customer engagement faster.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this&amp;nbsp;video walkthrough, Maddie&amp;nbsp;Cupchak&amp;nbsp;from Pax8&amp;nbsp;shows how PMC Pro brings campaign discovery, AI-assisted customization, translation, publishing workflows,&amp;nbsp;lead engagement visibility,&amp;nbsp;and reporting into one unified experience.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://aka.ms/partnerblog-marketingcentersupport-June2026" target="_blank" rel="noopener"&gt;Continue reading blog here&amp;nbsp;&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 17:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/partner-news/partner-blog-streamline-your-campaign-execution-with-partner/ba-p/4525559</guid>
      <dc:creator>JillArmourMicrosoft</dc:creator>
      <dc:date>2026-06-04T17:00:00Z</dc:date>
    </item>
    <item>
      <title>Teams Remote App/ Cloud App optimization for Windows 365 and Azure Virtual Desktop now GA</title>
      <link>https://techcommunity.microsoft.com/t5/windows-it-pro-blog/teams-remote-app-cloud-app-optimization-for-windows-365-and/ba-p/4515930</link>
      <description>&lt;P&gt;Today, we are announcing the general availability of Microsoft Teams for Remote App scenarios, expanding support for optimized Microsoft Teams experiences when connecting to Azure Virtual Desktop. Additionally, Cloud Apps for Windows 365 will also be supported. This update introduces a new media engine that replaces the legacy WebRTC-based optimization.&lt;/P&gt;
&lt;H4&gt;Optimized Teams experience for Remote App&lt;/H4&gt;
&lt;P&gt;The new optimization improves audio and video performance, reliability, and security, and simplifies ongoing support by enabling media engine updates without frequent upgrades to the infrastructure or client.&lt;/P&gt;
&lt;P&gt;This feature will be available to anyone using Microsoft Teams as a Remote App on Azure Virtual Desktop or Cloud Apps on Windows 365 from Windows endpoints.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Teams users running in Remote App will automatically transition to the new optimization: &lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;UL&gt;
&lt;LI&gt;Audio and video performance and reliability are improved compared to the legacy WebRTC optimization.&lt;/LI&gt;
&lt;LI&gt;Media engine updates no longer require frequent upgrades to the VDI infrastructure or client.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Note: Give and Take control is not supported at this time.&lt;/P&gt;
&lt;H4&gt;Try the optimized Teams experience for Remote App and Cloud Apps today&lt;/H4&gt;
&lt;P&gt;If you are using Windows App on Windows, you can try it today by meeting the following requirements:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;On the user device, use Windows App for Windows version 2.0.964.0 or later&lt;/LI&gt;
&lt;LI&gt;On the remote VM, install Microsoft Teams version 26043.2016.4478.2773 or later&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Learn more: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/microsoftteams/vdi-2#remoteapp" target="_blank" rel="noopener"&gt;New VDI solution for Teams | Microsoft Teams | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;HR /&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN data-contrast="auto"&gt;Continue the conversation. Find best practices. Bookmark the &lt;/SPAN&gt;&lt;A href="https://aka.ms/community/Windows" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Windows Tech Community&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, then follow us on &lt;/SPAN&gt;&amp;nbsp;&lt;A href="https://www.linkedin.com/company/windows-it-pro" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;LinkedIn&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;or&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://twitter.com/mswindowsitpro" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;@MSWindowsITPro&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; for updates. Looking for support? Visit &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/answers/products/windows#windows-client-for-it-pros" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Windows on Microsoft Q&amp;amp;A&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 18:45:09 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-it-pro-blog/teams-remote-app-cloud-app-optimization-for-windows-365-and/ba-p/4515930</guid>
      <dc:creator>PavithraT</dc:creator>
      <dc:date>2026-06-04T18:45:09Z</dc:date>
    </item>
    <item>
      <title>From campus to career: 3 practical steps for students</title>
      <link>https://techcommunity.microsoft.com/t5/the-skills-hub-blog/from-campus-to-career-3-practical-steps-for-students/ba-p/4519835</link>
      <description>&lt;H4&gt;&lt;EM&gt;This graduation season, build the skills employers are looking for, create proof-of-work to get you noticed, grow as a global student community leader. And explore free tools &amp;amp; offers to help you build what's next!&lt;/EM&gt;&lt;/H4&gt;
&lt;P&gt;For many students around the world, graduation season is here – bringing both excitement and uncertainty about what’s next. According to&amp;nbsp;&lt;A href="https://news.linkedin.com/2026/Grads-Guide-2026" target="_blank" rel="noopener"&gt;LinkedIn’s 2026 Grad’s guide&lt;/A&gt;, students are entering one of the toughest job markets in years and many are reconsidering traditional career paths. Yet alongside these challenges comes real opportunity to create and shape the future with access to powerful new tools in ways earlier generations never could. This is a moment of real uncertainty, but it is also one of unprecedented opportunities.&lt;/P&gt;
&lt;P&gt;Whether you're graduating, beginning an internship, starting a first job, exploring entrepreneurship, or returning to campus, here are &lt;STRONG&gt;three practical steps and free tools to &lt;/STRONG&gt;&lt;STRONG&gt;help you move forward.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H4&gt;1. Develop the skills employers are increasingly looking for&lt;/H4&gt;
&lt;P&gt;According to the &lt;A href="https://aka.ms/Frontier26" target="_blank" rel="noopener"&gt;2026 Work Trend Index Annual Report&lt;/A&gt; employers are increasingly interested in AI‑related skills, particularly for early-career roles. Students who start building skills early may be better prepared to seize their next opportunity.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/aiskillsfest_EDUblog" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Microsoft AI Skills Fest&lt;/STRONG&gt;&lt;/A&gt; (June 8–12, 2026) is a large, no-cost online AI skilling event (registration required). This year features two playlists for students entering the workforce: &lt;STRONG&gt;Get the Job&lt;/STRONG&gt; (resume to job offer) and &lt;STRONG&gt;Succeed at the Job&lt;/STRONG&gt; (your first 90 days).&lt;/P&gt;
&lt;P&gt;Two LinkedIn Live sessions anchor the week: &lt;STRONG&gt;Ask a Recruiter&lt;/STRONG&gt;, an open Q&amp;amp;A with Microsoft early-career recruiters on interviews and resumes, and &lt;STRONG&gt;Build your Brand: From Zero to Resume&lt;/STRONG&gt;, a session on using Microsoft Copilot to build a "walking deck" that articulates your experience before your first professional role.&lt;/P&gt;
&lt;P&gt;In addition, &lt;A href="https://aka.ms/aiskillsfest_EDUblog_ASN" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;AI Skills Navigator&lt;/STRONG&gt;&lt;/A&gt; gives you a personalized starting point with a newly launched student path filled with learning options. Pair it with LinkedIn's 2026 Grad Guide for a better understanding about which roles are growing and how to stand out.&lt;/P&gt;
&lt;H4&gt;2. Build proof-of-work that can get you noticed&lt;/H4&gt;
&lt;P&gt;Hiring managers aren't just scanning resumes. They're looking for evidence. The candidates who stand out arrive with something to show: a project, a prototype, a piece of published work that shows what they can do. Building an app, a website, or an AI tool that brings your ideas to life is easier than ever. To start, join&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://github.com/education/students" target="_blank" rel="noopener"&gt;GitHub Education &lt;/A&gt;&lt;/STRONG&gt;and get access to free and discounted products and tutorials including GitHub Copilot, Codespaces, and other tools that are part of the Student Developer Pack.&lt;/P&gt;
&lt;P&gt;Find inspiration for your entrepreneurial dreams by exploring student stories from programs like &lt;A href="https://news.microsoft.com/signal/articles/imagine-cup-2026-student-ai-competition/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Imagine Cup and Red Bull Basement&lt;/STRONG&gt;&lt;/A&gt; that show how Microsoft can help bring your ideas to life.&lt;/P&gt;
&lt;H4&gt;3. Grow into a global student community leader&amp;nbsp;&lt;/H4&gt;
&lt;P&gt;Heading back to campus in a few months? The&amp;nbsp;&lt;STRONG&gt;Microsoft Student Ambassadors program&lt;/STRONG&gt; is now open to all higher education students, not just developers. Fill in a simple form and complete a few activities and you’re in! As an ambassador, you connect with peers, mentors, and Microsoft employees, build verifiable credentials, and develop leadership experience that shows up on a resume.&lt;/P&gt;
&lt;P&gt;The program is for currently enrolled college students. &lt;A href="https://techcommunity.microsoft.com/blog/skills-hub-blog/a-new-chapter-for-the-microsoft-student-ambassadors-program-built-for-you/4508104" target="_blank" rel="noopener"&gt;Learn more and register today&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;Tools and offers to help you learn and build what's next&lt;/H4&gt;
&lt;P&gt;Between classes, finals, internships, and figuring out what’s next, student life can feel like a lot! Many colleges provide students with access to AI tools like Microsoft Copilot. Learning-science-based tools like the&amp;nbsp;&lt;A href="https://www.microsoft.com/education/blog/2026/05/study-and-learn-ai-built-for-your-student/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Study and Learn Agent&lt;/STRONG&gt;&lt;/A&gt; found in Copilot can help you break down complex materials across a range of subjects, turn notes into flashcards and quizzes, and help build your confidence for interviews or exams. &lt;STRONG&gt;Copilot in Word&lt;/STRONG&gt; can help you &lt;A href="https://www.youtube.com/watch?v=9mNCkTm-ywc&amp;amp;t=2s" target="_blank" rel="noopener"&gt;refine your resume&lt;/A&gt; to present your experiences more clearly.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The &lt;A href="https://www.microsoft.com/education/students" target="_blank" rel="noopener"&gt;Microsoft student page&lt;/A&gt; lists our best offers and deals for college students right now. If you’re graduating, the &lt;A href="https://www.microsoft.com/microsoft-365/college-student-pricing" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Microsoft 365 Premium graduation offer&lt;/STRONG&gt;&lt;/A&gt; gives you 12 months of access, at no cost to eligible students and recent graduates, to some of the most powerful AI tools Microsoft offers. Microsoft 365 Premium unlocks Copilot in familiar apps like Word, Excel, and PowerPoint, along with extensive AI usage tokens, exclusive Copilot features and agents, and up to 6 TB of secure cloud storage that you can share with five others (1 TB per person).&lt;SUP&gt;1&lt;/SUP&gt;&lt;/P&gt;
&lt;P&gt;Start building apps, explore AI, and build your developer skills with free access to professional tools with a &lt;STRONG&gt;$100 Azure credit &lt;/STRONG&gt;or access to the &lt;STRONG&gt;GitHub student developer pack.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With the &lt;STRONG&gt;Ultimate college bundle, &lt;/STRONG&gt;eligible U.S. students who buy a select Windows 11 PC can get 1 year of Microsoft 365 Premium, Xbox Game Pass Ultimate, and a design-your-own Xbox Wireless Controller—over $500 in estimated value based on included products.&lt;SUP&gt;2&lt;/SUP&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;&lt;EM&gt;Study and Learn: step-by-step coaching with images&lt;/EM&gt;&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Your next steps&lt;/H4&gt;
&lt;P&gt;Students like you are already shaping the future with Microsoft tools and skilling programs available today.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Register for &lt;STRONG&gt;&lt;A href="https://aka.ms/aiskillsfest_EDUblog" target="_blank" rel="noopener"&gt;Microsoft AI Skills Fest&lt;/A&gt; &lt;/STRONG&gt;(June 8–12, 2026) and explore the content curated for students, including featured playlists and live sessions.&lt;/LI&gt;
&lt;LI&gt;Claim the &lt;STRONG&gt;&lt;A href="https://www.microsoft.com/windows/back-to-school-offer" target="_blank" rel="noopener"&gt;Windows 11 College Student Bundle&lt;/A&gt; &lt;/STRONG&gt;(US only), &lt;STRONG&gt;&lt;A href="https://www.microsoft.com/microsoft-365/college-student-pricing" target="_blank" rel="noopener"&gt;Microsoft 365 Premium student offer&lt;/A&gt;&lt;/STRONG&gt; or &lt;STRONG&gt;&lt;A href="https://github.com/education/students" target="_blank" rel="noopener"&gt;GitHub student developer pack&lt;/A&gt;&lt;/STRONG&gt;. Explore other free tools and offers for students at the &lt;STRONG&gt;&lt;A href="https://www.microsoft.com/education/students" target="_blank" rel="noopener"&gt;Microsoft Education student page&lt;/A&gt;&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;If you’re headed back to campus, register for &lt;A href="https://mvp.microsoft.com/studentambassadors" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Microsoft Student Ambassadors&lt;/STRONG&gt;&lt;/A&gt; and follow &lt;A href="https://www.instagram.com/microsoftstudentskills/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;@MicrosoftStudentSkills&lt;/STRONG&gt;&lt;/A&gt; on Instagram where we share real-world skills for college and beyond.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Wherever you are right now, explore these ideas, and take a step forward today towards your future.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;______________________________________________________________________________________________________________________&lt;/P&gt;
&lt;P&gt;1. Offers vary by market and end June 30, 2026. Eligibility requirements apply. Students will need to verify their academic status using their college email address. See details &lt;A href="https://www.microsoft.com/microsoft-365/college-student-pricing" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;2. Offer is valid only for verified college students physically located in the United States at time of qualifying PC purchase, while supplies last. Redemption requires a Microsoft account and following the provided steps after purchase of a qualifying PC. Eligibility and terms apply. Offers vary by market. See details &lt;A href="https://www.microsoft.com/windows/back-to-school-offer" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="#community--1-_ednref2" target="_blank" rel="noopener" name="_edn2"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 16:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/the-skills-hub-blog/from-campus-to-career-3-practical-steps-for-students/ba-p/4519835</guid>
      <dc:creator>Matt_Jubelirer</dc:creator>
      <dc:date>2026-06-04T16:00:00Z</dc:date>
    </item>
    <item>
      <title>From insight to action: how Adobe and Microsoft are helping marketers move faster with AI</title>
      <link>https://techcommunity.microsoft.com/t5/partner-news/from-insight-to-action-how-adobe-and-microsoft-are-helping/ba-p/4521129</link>
      <description>&lt;P&gt;Today’s marketing leaders are under pressure to do more than ever—deliver meaningful personalization, accelerate execution, and prove measurable business impact. At the same time, teams are navigating increasing complexity: fragmented data, disconnected tools, and insights that arrive too late to act on.&lt;/P&gt;
&lt;P&gt;AI can change this—but only when it’s embedded directly into how people already work.&lt;/P&gt;
&lt;P&gt;That’s why Microsoft and Adobe are deepening our partnership: bringing customer experience intelligence, AI-powered workflows, and enterprise-grade AI directly into Microsoft 365 Copilot—so teams can move from insight to alignment to execution in one continuous workflow. The result is faster decisions, more coordinated execution, and clearer business outcomes—without breaking flow or context.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Bringing customer experience intelligence into the flow of work&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Marketing teams don’t struggle because they lack data. They struggle because insights live in one place, collaboration in another, and execution somewhere else entirely. That disconnect slows teams down and creates unnecessary friction between analysis and action.&lt;/P&gt;
&lt;P&gt;Together, Adobe and Microsoft are changing that dynamic by connecting Adobe’s customer experience capabilities with Microsoft 365 Copilot and Copilot Cowork—so insight, collaboration, and next-best action can happen where work already happens: in Copilot Chat and in everyday apps like Teams, Word, and PowerPoint. Marketers can ask questions, explore insights, align with teammates, and take action without jumping between tools—turning intelligence into impact at the moment it matters.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Adobe Marketing Agent for Microsoft 365 Copilot: now generally available&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A major milestone in this journey is the &lt;STRONG&gt;general availability of the Adobe Marketing Agent for Microsoft 365 Copilot&lt;/STRONG&gt;, now available via &lt;STRONG&gt;Microsoft Commercial Marketplace&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The Adobe Marketing Agent brings Adobe customer experience intelligence directly into Copilot, enabling marketing teams to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Accelerate time from insight to decision&lt;/LI&gt;
&lt;LI&gt;Move seamlessly from analysis to execution&lt;/LI&gt;
&lt;LI&gt;Keep humans firmly in control, with AI supporting—not replacing—decision‑making&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Importantly, the agent is enterprise-ready by design. IT administrators can deploy and manage the experience through the Microsoft 365 admin center, ensuring security, governance, and compliance at scale.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Expanding executive experiences with Copilot Cowork &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Looking ahead, Adobe skills designed for customer experience orchestration will be accessible in &lt;STRONG&gt;Copilot Cowork&lt;/STRONG&gt;—in a future release. This upcoming experience will enable customer experience leaders to engage with customer experience insights in a more direct, conversational way, bringing strategic visibility into the same Copilot environments where decisions are made and actions are coordinated.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Built on Azure to scale securely and responsibly&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The technology foundation of this innovation is Azure. Adobe Experience Platform, Adobe Experience Platform Agent Orchestrator, and Adobe AI Agents are built on Azure and leverage Azure AI models, providing the scalability, security, and reliability enterprises require. By running on Azure, these agentic experiences benefit from Microsoft’s global infrastructure, enterprise‑grade security, and responsible AI commitments—supporting customer trust as organizations scale AI across their business.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Designed for interoperability across agent ecosystems&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Modern enterprises don’t operate in a single ecosystem—and their agents shouldn’t either.&lt;/P&gt;
&lt;P&gt;Adobe agents are built to interoperate with agents created using &lt;STRONG&gt;Microsoft Azure AI Foundry&lt;/STRONG&gt; or &lt;STRONG&gt;Copilot Studio&lt;/STRONG&gt;, enabling customers to orchestrate richer, cross‑functional workflows across marketing, sales, service, and operations.&lt;/P&gt;
&lt;P&gt;This architecture is designed to enable organizations to compose agentic solutions that reflect how work actually happens—across systems, teams, and business processes.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Moving from experimentation to execution&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This partnership reflects a broader shift in how organizations adopt AI—moving from experimentation to embedded, enterprise‑ready execution.&lt;/P&gt;
&lt;P&gt;By bringing the full power of Adobe Experience Platform together with Microsoft’s AI platform, cloud infrastructure, and Copilot experiences, we’re helping teams move faster with clarity, confidence, and control. This is how AI becomes not just powerful—but practical.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Learn more&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-teams="true"&gt;&lt;A class="lia-external-url" href="https://business.adobe.com/support/partners/microsoft.html" target="_blank" rel="noopener"&gt;Adobe + Microsoft partnership page&lt;/A&gt;&lt;BR /&gt;&lt;A class="lia-external-url" href="https://business.adobe.com/products/experience-platform/agent-orchestrator/agent-composer.html?agen…" target="_blank" rel="noopener"&gt;Adobe Marketing Agent for Microsoft Copilot page&lt;/A&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 16:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/partner-news/from-insight-to-action-how-adobe-and-microsoft-are-helping/ba-p/4521129</guid>
      <dc:creator>kakennedy</dc:creator>
      <dc:date>2026-06-04T16:00:00Z</dc:date>
    </item>
    <item>
      <title>Driving AI-Powered Healthcare: Advanced Analytics, AI, and Real-World Impact Workshop</title>
      <link>https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/driving-ai-powered-healthcare-advanced-analytics-ai-and-real/ba-p/4525549</link>
      <description>&lt;H4&gt;What We Covered&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;The evolving role of data in becoming a frontier AI organization&lt;/LI&gt;
&lt;LI&gt;The modern data estate and how Microsoft Fabric unifies analytics&lt;/LI&gt;
&lt;LI&gt;Architecture patterns for healthcare data platforms&lt;/LI&gt;
&lt;LI&gt;Real-world healthcare and life sciences use cases driving impact&lt;/LI&gt;
&lt;LI&gt;Building unified data foundations in Microsoft Fabric&lt;/LI&gt;
&lt;LI&gt;Applying governance and security best practices&lt;/LI&gt;
&lt;LI&gt;Activating data with AI and agent-based solutions&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Key Takeaways&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Unified data is foundational to scaling AI effectively&lt;/LI&gt;
&lt;LI&gt;Microsoft Fabric simplifies the analytics stack and accelerates time to value&lt;/LI&gt;
&lt;LI&gt;Governance and security must be built-in, not added later&lt;/LI&gt;
&lt;LI&gt;AI-powered agents unlock new ways to operationalize data across clinical and business workflows&lt;/LI&gt;
&lt;LI&gt;Hands-on experience is critical to moving from concept to deployment&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Session Content and Resources&lt;/H4&gt;
&lt;P&gt;Workshop materials &lt;SPAN class="lia-text-color-11"&gt;&lt;STRONG&gt;linked at the bottom of this post&lt;/STRONG&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Becoming a Frontier Firm The State of Data &amp;amp; AI&lt;/LI&gt;
&lt;LI&gt;The Modern Data Estate Inside Microsoft Fabric&lt;/LI&gt;
&lt;LI&gt;Unified Data Foundation for Analytics Fabric as the Unifying Layer&lt;/LI&gt;
&lt;LI&gt;Unlocking AI Securely Data Protection &amp;amp; Governance&lt;/LI&gt;
&lt;LI&gt;Unified Data Foundation for AI Activating Data with Agents&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4&gt;What’s Next&lt;/H4&gt;
&lt;P&gt;If you’re looking to continue the momentum:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;View our upcoming &lt;A class="lia-external-url" href="https://aka.ms/dataaihealthcare" target="_blank" rel="noopener"&gt;healthcare focused Data &amp;amp; AI workshops &amp;amp; webinars&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Set up your&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/try-fabric" target="_blank" rel="noopener"&gt;free Microsoft Fabric trial:&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Get started with &lt;A class="lia-external-url" href="https://aka.ms/sqldbfabric" target="_blank" rel="noopener"&gt;SQL Fabric&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Create a &lt;A class="lia-external-url" href="https://aka.ms/Fabric/create-data-agent" target="_blank" rel="noopener"&gt;Data Agent&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Discuss with your &lt;A class="lia-external-url" href="https://partner.microsoft.com/en-us/partnership/" target="_blank" rel="noopener"&gt;Microsoft partner&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Join our upcoming virtual &lt;A class="lia-external-url" href="https://aka.ms/RTILab" target="_blank" rel="noopener"&gt;RTI Hands-on Lab June 11&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 04 Jun 2026 14:57:17 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/healthcare-and-life-sciences/driving-ai-powered-healthcare-advanced-analytics-ai-and-real/ba-p/4525549</guid>
      <dc:creator>CamilleWhicker</dc:creator>
      <dc:date>2026-06-04T14:57:17Z</dc:date>
    </item>
    <item>
      <title>Harness-Driven Agents: Secure Podcast Pipeline in Hyperlight MicroVM Sandbox</title>
      <link>https://techcommunity.microsoft.com/t5/microsoft-developer-community/harness-driven-agents-secure-podcast-pipeline-in-hyperlight/ba-p/4525512</link>
      <description>&lt;H2 data-line="10"&gt;The moment the agent reached for rm -rf&lt;/H2&gt;
&lt;P data-line="12"&gt;For most of 2024 and 2025, "agents" were a demo word. By 2026 they are something you run — autonomously, in a loop, executing code they wrote themselves a second ago.&lt;/P&gt;
&lt;P data-line="14"&gt;I was watching one work late one night. I had given it a goal, a handful of tools, and the freedom to write and run its own Python. For twenty minutes it was magic: read a file, reason about it, write a script, run it, inspect the output, correct itself, try again. Then it produced this:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import shutil
shutil.rmtree("/")   # "cleaning up temporary files"&lt;/LI-CODE&gt;
&lt;P data-line="21"&gt;It was trying to be helpful — it had decided the workspace was cluttered and wanted a clean start. The "workspace," as far as that process was concerned, was my entire machine.&lt;/P&gt;
&lt;P data-line="23"&gt;I killed it in time. But the lesson is the one every agent builder eventually arrives at:&amp;nbsp;&lt;STRONG&gt;the model is not the dangerous part — the execution is.&lt;/STRONG&gt;&amp;nbsp;A chatbot that answers wrong is annoying. An agent that fetches a web page, runs code, and writes files has a&amp;nbsp;&lt;EM&gt;blast radius&lt;/EM&gt;. The bounding box has to come from infrastructure, not from a system prompt.&lt;/P&gt;
&lt;P data-line="25"&gt;harnessagent_sandbox_demo&amp;nbsp;is a concrete build that puts that bounding box in exactly the right place — and it does it in service of a real, charming little product:&amp;nbsp;&lt;STRONG&gt;a daily five-minute Mandarin podcast about the FIFA World Cup 2026.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 data-line="29"&gt;The scenario: a daily World Cup podcast, written by agents&lt;/H2&gt;
&lt;P data-line="31"&gt;Strip away the infrastructure for a second and look at what this thing actually&amp;nbsp;&lt;EM&gt;does&lt;/EM&gt;.&lt;/P&gt;
&lt;P data-line="33"&gt;Every day it produces a fresh Mandarin podcast script about the FIFA World Cup 2026. Three LLM agents run in sequence:&lt;/P&gt;
&lt;OL data-line="35"&gt;
&lt;LI data-line="35"&gt;&lt;STRONG&gt;SearchAgent&lt;/STRONG&gt;&amp;nbsp;— goes out and gathers the day's World Cup news.&lt;/LI&gt;
&lt;LI data-line="36"&gt;&lt;STRONG&gt;ContentAgent&lt;/STRONG&gt;&amp;nbsp;— turns that raw material into structured podcast content.&lt;/LI&gt;
&lt;LI data-line="37"&gt;&lt;STRONG&gt;GenScriptAgent&lt;/STRONG&gt;&amp;nbsp;— writes the final, readable five-minute script.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="39"&gt;The output is two text files — one in&amp;nbsp;&lt;STRONG&gt;Simplified Chinese&lt;/STRONG&gt;, one in&amp;nbsp;&lt;STRONG&gt;Traditional Chinese&lt;/STRONG&gt;:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.simple.zh.txt
./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.tranditional.zh.txt&lt;/LI-CODE&gt;
&lt;P data-line="46"&gt;That's the whole product. It sounds simple — and the point of the project is that making it&amp;nbsp;&lt;EM&gt;safe&lt;/EM&gt;&amp;nbsp;is the hard part. SearchAgent has to reach the open internet. All three agents write and run code. If you wire that naively, you have just built the exact machine that types&amp;nbsp;shutil.rmtree("/")&amp;nbsp;for you. So the entire architecture is organized around one principle:&amp;nbsp;&lt;STRONG&gt;the agents get to do real work, but every dangerous capability is fenced behind a hardware boundary.&lt;/STRONG&gt;&lt;/P&gt;
&lt;H2 data-line="50"&gt;Why the obvious sandboxes fall short for agents&lt;/H2&gt;
&lt;P data-line="52"&gt;An agent is&amp;nbsp;&lt;EM&gt;defined&lt;/EM&gt;&amp;nbsp;by an act-observe-correct loop running untrusted, model-generated code over and over. That single property breaks most conventional isolation choices.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Option&lt;/th&gt;&lt;th&gt;Why it falls short for agents&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;No sandbox&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;One&amp;nbsp;rm -rf, one leaked&amp;nbsp;.env, one rogue network call — the blast radius is the whole machine.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Container&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Great for shipping apps, but a coding agent wants to&amp;nbsp;&lt;EM&gt;build and run its own container&lt;/EM&gt;, which means Docker-in-Docker and elevated privileges that quietly undo the isolation.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;WASM / V8 isolate&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Fast to start, but you isolate a&amp;nbsp;&lt;EM&gt;language runtime&lt;/EM&gt;, not an&amp;nbsp;&lt;EM&gt;OS&lt;/EM&gt;&amp;nbsp;— no system packages, no arbitrary shell, and hardening the engine is a moving target.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Full VM&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Rock-solid isolation, but cold starts in seconds and heavy memory — exactly the friction that pushes developers to skip isolation entirely.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="61"&gt;Each option trades away safety, speed, or compatibility. A podcast pipeline that runs every day, spinning agents up and down, needs all three at once:&lt;/P&gt;
&lt;UL data-line="63"&gt;
&lt;LI data-line="63"&gt;&lt;STRONG&gt;A real environment&lt;/STRONG&gt;&amp;nbsp;— to fetch URLs, run shells, call tools.&lt;/LI&gt;
&lt;LI data-line="64"&gt;&lt;STRONG&gt;A hard boundary&lt;/STRONG&gt;&amp;nbsp;— so a bad step can't reach the host.&lt;/LI&gt;
&lt;LI data-line="65"&gt;&lt;STRONG&gt;Near-instant lifecycle&lt;/STRONG&gt;&amp;nbsp;— because a slow sandbox is a sandbox developers skip, and an unused safety feature protects nobody.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="69"&gt;The MicroVM answer, embedded as a library: Hyperlight&lt;/H2&gt;
&lt;P data-line="71"&gt;A&amp;nbsp;&lt;STRONG&gt;MicroVM&lt;/STRONG&gt;&amp;nbsp;gives each workload its own kernel and a hardware-enforced boundary — the isolation strength of a full VM — stripped down to start in&amp;nbsp;&lt;EM&gt;milliseconds&lt;/EM&gt;&amp;nbsp;and tear down just as fast. Misbehave inside, and you hit a wall; there is no path back to the host. And it is disposable by design: when an agent goes off the rails, you delete the sandbox and reopen in milliseconds, with nothing to clean up.&lt;/P&gt;
&lt;P data-line="73"&gt;Most MicroVM runtimes (Firecracker and friends) are cloud infrastructure — server-side.&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://github.com/hyperlight-dev/hyperlight" target="_blank" rel="noopener" data-href="https://github.com/hyperlight-dev/hyperlight"&gt;Hyperlight&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;is different: a lightweight Virtual Machine Manager (a CNCF sandbox project) designed to be&amp;nbsp;&lt;EM&gt;embedded inside your application&lt;/EM&gt;, like a library.&lt;/P&gt;
&lt;UL data-line="75"&gt;
&lt;LI data-line="75"&gt;&lt;STRONG&gt;MicroVMs that boot in milliseconds&lt;/STRONG&gt;, with guest function calls completing in&amp;nbsp;&lt;STRONG&gt;microseconds&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI data-line="76"&gt;&lt;STRONG&gt;No guest kernel, no OS&lt;/STRONG&gt;&amp;nbsp;— the guest is a purpose-built&amp;nbsp;no_std&amp;nbsp;Rust/C binary. Nothing in there to attack.&lt;/LI&gt;
&lt;LI data-line="77"&gt;&lt;STRONG&gt;Sandboxed by default&lt;/STRONG&gt;&amp;nbsp;— no filesystem, no network, nothing, unless explicitly granted.&lt;/LI&gt;
&lt;LI data-line="78"&gt;&lt;STRONG&gt;Typed function calls across the VM boundary&lt;/STRONG&gt;, and&amp;nbsp;&lt;STRONG&gt;snapshot/restore&lt;/STRONG&gt;&amp;nbsp;to rewind to a clean state between calls.&lt;/LI&gt;
&lt;LI data-line="79"&gt;&lt;STRONG&gt;Runs on KVM, MSHV (Microsoft Hypervisor), and Windows Hypervisor Platform.&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="81"&gt;This project uses the&amp;nbsp;&lt;STRONG&gt;Wasm backend&lt;/STRONG&gt;: the three agents share a single&amp;nbsp;HyperlightRuntime, and the guest is reset to a clean snapshot&amp;nbsp;&lt;EM&gt;before every code execution&lt;/EM&gt;. That detail is what makes a daily, many-step pipeline cheap — you capture the sandbox state once and rewind to it, instead of rebuilding a VM hundreds of times.&lt;/P&gt;
&lt;H2 data-line="85"&gt;Agent = Model + Harness&lt;/H2&gt;
&lt;P data-line="87"&gt;The community has converged on a simple equation:&amp;nbsp;&lt;STRONG&gt;Agent = Model + Harness.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="89"&gt;The&amp;nbsp;&lt;STRONG&gt;model&lt;/STRONG&gt;&amp;nbsp;is a brain in a jar — text in, text out, no memory between calls, no loop, no hands. It can&amp;nbsp;&lt;EM&gt;express the intent&lt;/EM&gt;&amp;nbsp;to call a tool; it cannot actually call it.&lt;/P&gt;
&lt;P data-line="91"&gt;The&amp;nbsp;&lt;STRONG&gt;harness&lt;/STRONG&gt;&amp;nbsp;is the execution layer: it calls the model, handles its tool calls, and decides when to stop. As the Hugging Face glossary puts it,&amp;nbsp;&lt;EM&gt;"if you're not the model, you're the harness."&lt;/EM&gt;&lt;/P&gt;
&lt;P data-line="93"&gt;That reframes the safety problem precisely. When my agent emitted&amp;nbsp;shutil.rmtree("/"), the model deleted nothing — it merely&amp;nbsp;&lt;EM&gt;suggested&lt;/EM&gt;.&amp;nbsp;&lt;STRONG&gt;The harness would have run it.&lt;/STRONG&gt;&amp;nbsp;The harness is where reasoning meets reality, so it is exactly where safety must live. The question stops being "how do I make the model safer?" and becomes:&amp;nbsp;&lt;STRONG&gt;how do I build a harness that executes the model's intent inside a boundary it cannot escape?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="95"&gt;The&amp;nbsp;&lt;A href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/" target="_blank" rel="noopener" data-href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/"&gt;Microsoft Agent Framework&lt;/A&gt;&amp;nbsp;answers that with first-class&amp;nbsp;&lt;STRONG&gt;agent harness&lt;/STRONG&gt;&amp;nbsp;capabilities in Python and .NET, and it ships with one security note stated plainly:&lt;/P&gt;
&lt;P data-line="97"&gt;&lt;EM&gt;For local shell execution, we recommend running this logic in an isolated environment and keeping explicit approval in place before commands are allowed to run.&lt;/EM&gt;&lt;/P&gt;
&lt;P data-line="99"&gt;The harness is the steering wheel — it does not pretend to be the seatbelt and the crumple zone. For that, it points you outward:&amp;nbsp;&lt;EM&gt;run this somewhere isolated.&lt;/EM&gt;&amp;nbsp;Hyperlight is that isolated somewhere. This project snaps the two pieces together.&lt;/P&gt;
&lt;H2 data-line="103"&gt;The architecture: two planes, one bridge&lt;/H2&gt;
&lt;P data-line="105"&gt;Here is the heart of the design. Two planes run together every episode:&lt;/P&gt;
&lt;UL data-line="107"&gt;
&lt;LI data-line="107"&gt;An&amp;nbsp;&lt;STRONG&gt;orchestration plane on the host&lt;/STRONG&gt;&amp;nbsp;— the&amp;nbsp;WorkflowBuilder&amp;nbsp;graph, the LLM clients, and the deterministic save step.&lt;/LI&gt;
&lt;LI data-line="108"&gt;An&amp;nbsp;&lt;STRONG&gt;execution plane inside one Hyperlight Wasm sandbox&lt;/STRONG&gt;&amp;nbsp;— the&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;place LLM-generated code is allowed to run.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="110"&gt;The single bridge between them is one call: call_tool("fetch_url", ...).&lt;/P&gt;
&lt;img /&gt;
&lt;P data-line="145"&gt;The mapping to layers:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Layer&lt;/th&gt;&lt;th&gt;Component&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Model&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Azure AI Foundry via&amp;nbsp;FoundryChatClient&amp;nbsp;(AzureCliCredential)&lt;/td&gt;&lt;td&gt;The reasoning brain behind each harness agent&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Agent runtime&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Microsoft Agent Framework&amp;nbsp;create_harness_agent&lt;/td&gt;&lt;td&gt;Drives the model, advertises skills, handles tool calls, decides when to stop&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Orchestration&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;WorkflowBuilder&amp;nbsp;graph&lt;/td&gt;&lt;td&gt;prepare → SearchAgent → adapt → ContentAgent → adapt → GenScriptAgent → save_scripts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Code execution&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;CodeAct provider&lt;/td&gt;&lt;td&gt;Runs model-written code via the one&amp;nbsp;execute_code&amp;nbsp;tool — inside the MicroVM, never on the host&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Isolation&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;Hyperlight Wasm MicroVM&lt;/td&gt;&lt;td&gt;One shared&amp;nbsp;HyperlightRuntime; clean snapshot restored before every&amp;nbsp;execute_code&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Host tool&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;fetch_url&amp;nbsp;(sandbox/podcast_tools.py)&lt;/td&gt;&lt;td&gt;The&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;network path; urllib + a&amp;nbsp;&lt;STRONG&gt;BBC-only&lt;/STRONG&gt;&amp;nbsp;allow-list&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Persistence&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;save_scripts&amp;nbsp;Executor&lt;/td&gt;&lt;td&gt;Deterministic, no LLM — parses two fenced blocks and writes the two output files&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2 data-line="159"&gt;The four invariants that make it safe&lt;/H2&gt;
&lt;P data-line="161"&gt;The README is explicit about what the diagram guarantees. These four invariants are the whole security argument.&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-line="163"&gt;&lt;STRONG&gt; The model never sees the network.&lt;/STRONG&gt;Its only tool isexecute_code. Network access happens&amp;nbsp;&lt;EM&gt;only&lt;/EM&gt;&amp;nbsp;when the guest itself runs&amp;nbsp;call_tool("fetch_url", ...)&amp;nbsp;from inside the sandbox. The model cannot reach the internet directly — it can only ask the guest to, and the guest can only reach BBC.&lt;/LI&gt;
&lt;LI data-line="165"&gt;&lt;STRONG&gt; One sandbox per run, snapshot per call.&lt;/STRONG&gt;All three agents share the sameHyperlightRuntime. Before every&amp;nbsp;execute_code, the guest is reset to a clean snapshot — so nothing one step does can leak into the next, and there is no VM to rebuild.&lt;/LI&gt;
&lt;LI data-line="167"&gt;&lt;STRONG&gt; Two counter paths — and why there are two.&lt;/STRONG&gt;Thefunction_middleware&amp;nbsp;(make_tool_call_recorder) sees the model-direct&amp;nbsp;execute_code&amp;nbsp;calls. But the&amp;nbsp;&lt;EM&gt;inner&lt;/EM&gt;, guest-initiated&amp;nbsp;fetch_url&amp;nbsp;is dispatched by Hyperlight straight to the&amp;nbsp;FunctionTool, bypassing the middleware entirely. So a second counter —&amp;nbsp;make_call_tool_counter(on_call=)&amp;nbsp;— bumps&amp;nbsp;state["tool_call_counts"][&amp;lt;agent&amp;gt;]["fetch_url"]&amp;nbsp;on every guest invocation. Two observation points, because the architecture has two genuinely different call surfaces.&lt;/LI&gt;
&lt;LI data-line="169"&gt;&lt;STRONG&gt; Deterministic save — no LLM in the persistence step.&lt;/STRONG&gt;GenScriptAgentonly emits text. The&amp;nbsp;save_scripts&amp;nbsp;Executor parses the two fenced code blocks out of that text and writes the simplified and traditional files itself. There is no model in the loop when bytes hit disk, so the output path is fully predictable.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2 data-line="173"&gt;Now let's look at the real code surface&lt;/H2&gt;
&lt;P data-line="175"&gt;The README documents the API the demo is built on. The snippets below reflect that surface.&lt;/P&gt;
&lt;H3 data-line="177"&gt;1. Install and environment&lt;/H3&gt;
&lt;LI-CODE lang="bash"&gt;pip install agent-framework-hyperlight --pre&lt;/LI-CODE&gt;&lt;LI-CODE lang=""&gt;# Hyperlight needs a hypervisor: KVM on Linux, WHP on Windows. macOS is not yet supported.
# The model runs on Azure AI Foundry; FoundryChatClient authenticates via AzureCliCredential.
az login
export HYPERLIGHT_PYTHON_GUEST_PATH="/path/to/python_guest"&lt;/LI-CODE&gt;
&lt;H3 data-line="190"&gt;2. A harness agent that carries only a stub — skills do the rest&lt;/H3&gt;
&lt;P&gt;Each of the three agents is built with&amp;nbsp;create_harness_agent&amp;nbsp;+&amp;nbsp;FoundryChatClient. The agents themselves carry only a&amp;nbsp;&lt;EM&gt;tiny stub instruction&lt;/EM&gt;; their real role prompts and the shared sandbox/CodeAct guardrails live as file-based&amp;nbsp;&lt;STRONG&gt;Agent Skills&lt;/STRONG&gt; under&amp;nbsp;skills/. The harness's built-in&amp;nbsp;SkillsProvider&amp;nbsp;advertises those&amp;nbsp;SKILL.md&amp;nbsp;packages, and the model loads them at runtime via&amp;nbsp;load_skill.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;from agent_framework import create_harness_agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential

# Model on Azure AI Foundry — not Azure OpenAI directly.
client = FoundryChatClient(credential=AzureCliCredential())

# The agent carries a tiny stub. Its real persona — "you gather World Cup
# news", "you write the script" — lives in a SKILL.md package under skills/,
# advertised by the harness SkillsProvider and pulled in via load_skill.
search_agent = create_harness_agent(
    chat_client=client,
    name="SearchAgent",
    instructions="You are a harness agent. Load your skill, then begin.",
)&lt;/LI-CODE&gt;
&lt;H3 data-line="212"&gt;3 The CodeAct surface: one tool the model can see&lt;/H3&gt;
&lt;P data-line="214"&gt;This is the CodeAct pattern from&amp;nbsp;02-agents/context_providers/code_act/code_act.py. The model sees exactly one tool —&amp;nbsp;execute_code. Any extra capability (here, only&amp;nbsp;fetch_url) is reachable&amp;nbsp;&lt;EM&gt;from inside the guest&lt;/EM&gt; via&amp;nbsp;call_tool(...).&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;# What the MODEL sees and writes — one script, not ten tool round-trips:
#
#   # inside execute_code, running in the Hyperlight Wasm guest:
page = call_tool("fetch_url", url="https://www.bbc.com/sport/football/world-cup")
#   # ... parse page["BODY"], pull out today's stories ...
print(top_stories)
#
# execute_code is the ONLY tool on the model's surface.
call_tool("fetch_url", ...) is reachable only from inside the sandbox.&lt;/LI-CODE&gt;
&lt;H3 data-line="228"&gt;4. The one host tool, with a BBC-only allow-list&lt;/H3&gt;
&lt;P data-line="230"&gt;fetch_url lives on the host (sandbox/podcast_tools.py). It is the single bridge across the boundary, and it is deliberately narrow.&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;import urllib.request
from urllib.parse import urlparse

ALLOWED_DOMAINS = {"bbc.com", "www.bbc.com"}   # allow-list: BBC only

def fetch_url(url: str) -&amp;gt; dict:
    """The ONLY network path out of the sandbox. Host-side, allow-listed."""
    host = urlparse(url).netloc
    if host not in ALLOWED_DOMAINS:
        return {"STATUS": "blocked", "URL": url}

    with urllib.request.urlopen(url, timeout=20) as resp:
        body = resp.read(8192).decode("utf-8", "ignore")   # BODY capped at ~8 KB

    return {
        "STATUS": "ok",
        "URL": url,
        "TITLE": _extract_title(body),
        "DESCRIPTION": _extract_description(body),
        "LINKS": _extract_links(body),
        "BODY": body,
    }&lt;/LI-CODE&gt;
&lt;P data-line="257"&gt;Notice what this buys you: even if&amp;nbsp;SearchAgent&amp;nbsp;writes hostile code, the worst it can do over the network is read BBC, 8 KB at a time. The allow-list is host-side and the model never sees it — it cannot be prompt-injected away.&lt;/P&gt;
&lt;H3 data-line="259"&gt;5. Wiring the graph and the deterministic save&lt;/H3&gt;
&lt;LI-CODE lang="python"&gt;from agent_framework import WorkflowBuilder

workflow = (
    WorkflowBuilder()
    .add_node("prepare", prepare)
    .add_node("SearchAgent", search_agent)
    .add_node("adapt_1", adapt)
    .add_node("ContentAgent", content_agent)
    .add_node("adapt_2", adapt)
    .add_node("GenScriptAgent", genscript_agent)
    .add_node("save_scripts", save_scripts)   # deterministic Executor, NO LLM
    .build()
)

# GenScriptAgent emits text containing two fenced blocks (simplified +
# traditional). save_scripts parses them and writes the files itself —
# there is no model in the persistence step.
await workflow.run()
# -&amp;gt; ./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.simple.zh.txt
# -&amp;gt; ./outputs/&amp;lt;YYMMDD&amp;gt;/&amp;lt;YYMMDD&amp;gt;.tranditional.zh.txt&lt;/LI-CODE&gt;
&lt;H3 data-line="284"&gt;6. The payoff&lt;/H3&gt;
&lt;P data-line="286"&gt;Run that&amp;nbsp;shutil.rmtree("/")&amp;nbsp;inside this pipeline now and the result is delightfully boring: the agent deletes its own throwaway sandbox, the host never notices, and the next&amp;nbsp;execute_code&amp;nbsp;starts from a clean snapshot. Two things to call out:&lt;/P&gt;
&lt;UL data-line="288"&gt;
&lt;LI data-line="288"&gt;&lt;STRONG&gt;Snapshot/restore&lt;/STRONG&gt;&amp;nbsp;means every code execution starts from a clean, reusable baseline — capture state once, rewind between calls, instead of rebuilding the whole VM. For a daily pipeline that runs the act-observe-correct loop many times, that is the difference between "fast enough to always use" and "slow enough to skip."&lt;/LI&gt;
&lt;LI data-line="289"&gt;Because each agent writes&amp;nbsp;&lt;STRONG&gt;one script&lt;/STRONG&gt;&amp;nbsp;instead of ten round-tripped tool calls, the CodeAct approach keeps both latency and token usage down — the model reasons once and lets the guest do the busywork behind the boundary.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="293"&gt;Where it fits, and the one idea to keep&lt;/H2&gt;
&lt;img /&gt;
&lt;P data-line="295"&gt;harnessagent_sandbox_demo&amp;nbsp;lives inside&amp;nbsp;&lt;STRONG&gt;&lt;A href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native" target="_blank" rel="noopener" data-href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native"&gt;Multi-AI-Agents-Cloud-Native&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;— a gallery of patterns for running agent systems safely on Azure: A2A multi-agent orchestration, the Kubernetes sidecar pattern, hardened pipelines, and a sibling sample that runs Copilot agents on AKS inside&amp;nbsp;&lt;STRONG&gt;Kata Containers&lt;/STRONG&gt;&amp;nbsp;MicroVMs at the&amp;nbsp;&lt;EM&gt;pod&lt;/EM&gt;&amp;nbsp;level.&lt;/P&gt;
&lt;P data-line="297"&gt;And the README is explicit that this design is cloud-native: running it in-cluster on&amp;nbsp;&lt;STRONG&gt;AKS&lt;/STRONG&gt;&amp;nbsp;changes nothing about the architecture — the same&amp;nbsp;WorkflowBuilder&amp;nbsp;graph, the same Hyperlight sandbox, the same deterministic&amp;nbsp;save_scripts&amp;nbsp;executor. The local build and the in-cluster build are the same shape.&lt;/P&gt;
&lt;P data-line="299"&gt;The two MicroVM samples are two ends of one spectrum. The Kata sample puts the boundary around the whole&amp;nbsp;&lt;STRONG&gt;pod&lt;/STRONG&gt;&amp;nbsp;— a deployment topology. This Hyperlight demo pulls the boundary all the way into the&amp;nbsp;&lt;STRONG&gt;agent process itself&lt;/STRONG&gt;&amp;nbsp;— the sandbox becomes a library call. Same question —&amp;nbsp;&lt;EM&gt;where do you place the hardware boundary in an agent stack?&lt;/EM&gt;&amp;nbsp;— answered at two different altitudes.&lt;/P&gt;
&lt;P data-line="301"&gt;The old pitch for sandboxing always carried an asterisk:&amp;nbsp;&lt;EM&gt;yes, it's safer, but you'll pay in speed, compatibility, or friction.&lt;/EM&gt;&amp;nbsp;MicroVMs erase the asterisk — VM-grade isolation, cold starts fast enough that there's no reason to skip it, and a real environment your agents can actually work in. Enough of a real environment, in fact, to write you a World Cup podcast every morning.&lt;/P&gt;
&lt;P data-line="303"&gt;The one idea to internalize:&amp;nbsp;&lt;STRONG&gt;the harness decides, the MicroVM contains.&lt;/STRONG&gt;&amp;nbsp;Give your agent a room where it is allowed to fail — then let it be brilliant.&lt;/P&gt;
&lt;H3 data-line="307"&gt;References&lt;/H3&gt;
&lt;UL data-line="309"&gt;
&lt;LI data-line="309"&gt;&lt;STRONG&gt;Project:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/tree/main/code/harnessagent_sandbox_demo" target="_blank" rel="noopener" data-href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native/tree/main/code/harnessagent_sandbox_demo"&gt;harnessagent_sandbox_demo&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native" target="_blank" rel="noopener" data-href="https://github.com/kinfey/Multi-AI-Agents-Cloud-Native"&gt;Multi-AI-Agents-Cloud-Native&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="310"&gt;&lt;STRONG&gt;Hyperlight:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://github.com/hyperlight-dev/hyperlight" target="_blank" rel="noopener" data-href="https://github.com/hyperlight-dev/hyperlight"&gt;hyperlight-dev/hyperlight&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://github.com/hyperlight-dev/hyperlight-sandbox" target="_blank" rel="noopener" data-href="https://github.com/hyperlight-dev/hyperlight-sandbox"&gt;hyperlight-dev/hyperlight-sandbox&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="311"&gt;&lt;STRONG&gt;Agent Framework:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/" target="_blank" rel="noopener" data-href="https://devblogs.microsoft.com/agent-framework/agent-harness-in-agent-framework/"&gt;Agent Harness in Microsoft Agent Framework&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="312"&gt;&lt;STRONG&gt;Background:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/" target="_blank" rel="noopener" data-href="https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/"&gt;Why MicroVMs (Docker)&lt;/A&gt;&amp;nbsp;·&amp;nbsp;&lt;A href="https://huggingface.co/blog/agent-glossary" target="_blank" rel="noopener" data-href="https://huggingface.co/blog/agent-glossary"&gt;Harness vs. Scaffold glossary (Hugging Face)&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-line="313"&gt;&lt;STRONG&gt;Install:&lt;/STRONG&gt;&amp;nbsp;pip install agent-framework-hyperlight --pre&amp;nbsp;· .NET:&amp;nbsp;dotnet add package Microsoft.Agents.AI.Hyperlight --prerelease&lt;/LI&gt;
&lt;LI data-line="314"&gt;&lt;STRONG&gt;Requirements:&lt;/STRONG&gt; KVM (Linux) or WHP (Windows); macOS not yet supported.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Thu, 04 Jun 2026 14:12:41 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/microsoft-developer-community/harness-driven-agents-secure-podcast-pipeline-in-hyperlight/ba-p/4525512</guid>
      <dc:creator>kinfey</dc:creator>
      <dc:date>2026-06-04T14:12:41Z</dc:date>
    </item>
    <item>
      <title>Bluetooth mouse fails to reconnect automatically after waking from sleep in Windows 11</title>
      <link>https://techcommunity.microsoft.com/t5/windows-11/bluetooth-mouse-fails-to-reconnect-automatically-after-waking/m-p/4525563#M41986</link>
      <description>&lt;P&gt;After the computer wakes up from sleep mode, the paired Bluetooth mouse often fails to connect automatically; I have to manually remove the device and pair it again before it works.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 14:05:10 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-11/bluetooth-mouse-fails-to-reconnect-automatically-after-waking/m-p/4525563#M41986</guid>
      <dc:creator>Thatcherw</dc:creator>
      <dc:date>2026-06-04T14:05:10Z</dc:date>
    </item>
    <item>
      <title>Why does my refresh rate show as 60.01 Hz instead of 60 Hz?</title>
      <link>https://techcommunity.microsoft.com/t5/windows-11/why-does-my-refresh-rate-show-as-60-01-hz-instead-of-60-hz/m-p/4525562#M41985</link>
      <description>&lt;P&gt;In Windows 11, my monitor displays 60.01 Hz instead of exactly 60 Hz. Is this normal? What causes this?&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 14:02:27 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-11/why-does-my-refresh-rate-show-as-60-01-hz-instead-of-60-hz/m-p/4525562#M41985</guid>
      <dc:creator>Kodyon</dc:creator>
      <dc:date>2026-06-04T14:02:27Z</dc:date>
    </item>
    <item>
      <title>Windows 11's dark mode isn't fully implemented yet; the interface in older versions is white.</title>
      <link>https://techcommunity.microsoft.com/t5/windows-11/windows-11-s-dark-mode-isn-t-fully-implemented-yet-the-interface/m-p/4525552#M41980</link>
      <description>&lt;P&gt;Although system-wide dark mode is enabled, legacy windows such as file properties, the Control Panel, and progress dialog boxes remain bright white.&lt;/P&gt;&lt;img /&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 13:43:34 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-11/windows-11-s-dark-mode-isn-t-fully-implemented-yet-the-interface/m-p/4525552#M41980</guid>
      <dc:creator>DaxxonSawyer</dc:creator>
      <dc:date>2026-06-04T13:43:34Z</dc:date>
    </item>
    <item>
      <title>Windows 11 File Explorer frequently freezes</title>
      <link>https://techcommunity.microsoft.com/t5/windows-11/windows-11-file-explorer-frequently-freezes/m-p/4525547#M41979</link>
      <description>&lt;P&gt;When opening folders containing a large number of media files, the address bar and taskbar often become unresponsive, causing File Explorer to restart automatically.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 13:23:18 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-11/windows-11-file-explorer-frequently-freezes/m-p/4525547#M41979</guid>
      <dc:creator>Lucienw</dc:creator>
      <dc:date>2026-06-04T13:23:18Z</dc:date>
    </item>
    <item>
      <title>A Helpful AI-Powered Learning Experience I Found While Preparing for PL-400 within Microsoft Learn</title>
      <link>https://techcommunity.microsoft.com/t5/skills-hub-discussions/a-helpful-ai-powered-learning-experience-i-found-while-preparing/m-p/4525546#M7207</link>
      <description>&lt;P&gt;While preparing for the PL-400 (Microsoft Power Platform Developer) exam, I discovered a very useful learning feature in some Microsoft Learn modules.&lt;/P&gt;&lt;P&gt;In a few modules, the &lt;STRONG&gt;Module Assessment&lt;/STRONG&gt; appears to include AI-generated questions. What I found particularly helpful is that when I answered a question incorrectly and retook the assessment, Microsoft Learn didn't just generate completely new questions. Instead, it often brought back the concepts I had previously answered incorrectly while also introducing new questions.&lt;/P&gt;&lt;P&gt;This approach helped me reinforce weak areas and better understand the module content rather than simply memorizing answers. It felt more like adaptive learning, where the assessment focuses on concepts that need more attention.&lt;/P&gt;&lt;P&gt;Also, if you find this AI-generated learning experience helpful, consider using the &lt;STRONG&gt;"Provide feedback about AI-generated content"&lt;/STRONG&gt; option available in Microsoft Learn. Sharing feedback can help Microsoft continue improving these learning experiences for certification candidates.&lt;/P&gt;&lt;P&gt;Has anyone else noticed this behavior in Microsoft Learn assessments? I'd be interested to hear whether you've had a similar experience while preparing for Microsoft certifications.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 13:23:01 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/skills-hub-discussions/a-helpful-ai-powered-learning-experience-i-found-while-preparing/m-p/4525546#M7207</guid>
      <dc:creator>SajedaSultana</dc:creator>
      <dc:date>2026-06-04T13:23:01Z</dc:date>
    </item>
    <item>
      <title>We hope the Windows 11 Start menu will allow for manual pinning</title>
      <link>https://techcommunity.microsoft.com/t5/windows-11/we-hope-the-windows-11-start-menu-will-allow-for-manual-pinning/m-p/4525535#M41972</link>
      <description>&lt;P&gt;I like the categorized view in the Start menu, but since I can’t manually assign or change categories, it’s pretty much useless. I hope you can add the ability to manually assign and customize categories.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Jun 2026 13:05:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/windows-11/we-hope-the-windows-11-start-menu-will-allow-for-manual-pinning/m-p/4525535#M41972</guid>
      <dc:creator>PhoenixAdler</dc:creator>
      <dc:date>2026-06-04T13:05:51Z</dc:date>
    </item>
  </channel>
</rss>

