{"id":1715,"date":"2025-12-02T01:37:40","date_gmt":"2025-12-02T01:37:40","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/all-things-azure\/?p=1715"},"modified":"2025-12-04T00:07:41","modified_gmt":"2025-12-04T00:07:41","slug":"claude-code-microsoft-foundry-enterprise-ai-coding-agent-setup","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/all-things-azure\/claude-code-microsoft-foundry-enterprise-ai-coding-agent-setup\/","title":{"rendered":"Claude Code + Microsoft Foundry: Enterprise AI Coding Agent Setup"},"content":{"rendered":"<p>This guide covers setting up Claude Code CLI and VS Code extension with Microsoft Foundry, configuring CLAUDE.md for project context, integrating Spec Kit for structured development, and running Claude Code in GitHub Actions.<\/p>\n<h2><a href=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/Foundry_cc.webp\"><img decoding=\"async\" class=\"alignnone wp-image-1721\" src=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/Foundry_cc.webp\" alt=\"Foundry cc image\" width=\"296\" height=\"252\" srcset=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/Foundry_cc.webp 1018w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/Foundry_cc-300x255.webp 300w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/Foundry_cc-768x653.webp 768w\" sizes=\"(max-width: 296px) 100vw, 296px\" \/><\/a><\/h2>\n<h2>Prerequisites<\/h2>\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/quickstarts\/get-started-code?view=foundry&amp;preserve-view=true&amp;tabs=python%2Cpython2\">Azure subscription with Foundry access<\/a><\/li>\n<li>Node.js 18+ (for Claude Code CLI)<\/li>\n<li>Optional: <a href=\"https:\/\/learn.microsoft.com\/en-us\/cli\/azure\/install-azure-cli?view=azure-cli-latest\">Azure CLI installed<\/a> (<code>az login<\/code> completed)<\/li>\n<\/ul>\n<h2>Step 1: Deploy Claude Models in Foundry<\/h2>\n<p>In <a href=\"https:\/\/ai.azure.com\">Microsoft Foundry<\/a>:<\/p>\n<ol>\n<li>Go to <strong>Discover<\/strong> \u2192 Models and search &#8220;Claude&#8221;<\/li>\n<li>Select your model (Opus 4.5, Sonnet 4.5, or Haiku 4.5)<\/li>\n<li>Click <strong>Deploy<\/strong> \u2192 choose <strong>Default settings<\/strong><\/li>\n<li>Click on the <strong>Details<\/strong> tab and note your Target URI and Key<a href=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/1-cc-model-details.webp\"><img decoding=\"async\" class=\"alignnone wp-image-1716\" src=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/1-cc-model-details-1024x287.webp\" alt=\"Claude model details in Foundry portal\" width=\"999\" height=\"280\" srcset=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/1-cc-model-details-1024x287.webp 1024w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/1-cc-model-details-300x84.webp 300w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/1-cc-model-details-768x215.webp 768w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/1-cc-model-details.webp 1091w\" sizes=\"(max-width: 999px) 100vw, 999px\" \/><\/a><\/li>\n<\/ol>\n<h3>Alternative: Model Router<\/h3>\n<p><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/how-to\/model-router?view=foundry#select-your-model-subset\" target=\"_blank\" rel=\"noopener\">Model Router<\/a> is a Foundry model that intelligently routes each prompt to the best underlying model based on query complexity, cost, and performance. Version <code>2025-11-18<\/code> supports Claude Haiku 4.5, Sonnet 4.5, and Opus 4.1 alongside GPT, DeepSeek, Llama, and Grok models.<\/p>\n<p>For Claude Code users, this means:<\/p>\n<ul>\n<li><strong>Automatic model selection:<\/strong> Simple prompts route to faster\/cheaper models; complex coding tasks route to more capable models<\/li>\n<li><strong>Cost optimization:<\/strong> Use routing profiles to balance quality vs. cost while maintaining baseline performance<\/li>\n<li><strong>Single endpoint:<\/strong> One deployment handles all routing decisions across your model fleet<\/li>\n<\/ul>\n<p>To use: First deploy the Claude models you want included, then deploy Model Router and enable them via <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/foundry-models\/concepts\/model-router#model-subset-configuration\" target=\"_blank\" rel=\"noopener\">model subset configuration<\/a>.<\/p>\n<h2>Step 2: Install Claude Code CLI<\/h2>\n<pre class=\"prettyprint\">npm install -g @anthropic-ai\/claude-code\r\n<\/pre>\n<p>Verify installation:<\/p>\n<pre class=\"prettyprint\">claude --version\r\n<\/pre>\n<p>For more advanced installation options, visit <a href=\"https:\/\/code.claude.com\/docs\/en\/setup\">Claude Code Docs<\/a>.<\/p>\n<h2>Step 3: Configure for Foundry<\/h2>\n<p>Set these environment variables:<\/p>\n<p><strong>Bash \/ WSL:<\/strong><\/p>\n<pre class=\"prettyprint\"># Required\r\nexport CLAUDE_CODE_USE_FOUNDRY=1\r\n\r\n# Azure resource name (replace {resource} with your resource name)\r\nexport ANTHROPIC_FOUNDRY_RESOURCE={resource}\r\n# Or provide the full base URL:\r\n# export ANTHROPIC_FOUNDRY_BASE_URL=https:\/\/{resource}.services.ai.azure.com\r\n\r\n# Optional: specify model deployment names, matching the deployment names in Foundry\r\nexport ANTHROPIC_DEFAULT_SONNET_MODEL=\"claude-sonnet-4-5\"\r\nexport ANTHROPIC_DEFAULT_HAIKU_MODEL=\"claude-haiku-4-5\"\r\nexport ANTHROPIC_DEFAULT_OPUS_MODEL=\"claude-opus-4-5\"\r\n<\/pre>\n<p><strong>PowerShell:<\/strong><\/p>\n<pre class=\"prettyprint\"># Required\r\n$env:CLAUDE_CODE_USE_FOUNDRY = \"1\"\r\n\r\n# Azure resource name (replace {resource} with your resource name)\r\n$env:ANTHROPIC_FOUNDRY_RESOURCE = \"{resource}\"\r\n# Or provide the full base URL:\r\n# $env:ANTHROPIC_FOUNDRY_BASE_URL = \"https:\/\/{resource}.services.ai.azure.com\"\r\n\r\n# Optional: specify model deployment names, matching the deployment names in Foundry\r\n$env:ANTHROPIC_DEFAULT_SONNET_MODEL = \"claude-sonnet-4-5\"\r\n$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = \"claude-haiku-4-5\"\r\n$env:ANTHROPIC_DEFAULT_OPUS_MODEL = \"claude-opus-4-5\"\r\n<\/pre>\n<h3>Authentication<\/h3>\n<p><strong>Option A: Entra ID (recommended)<\/strong><\/p>\n<pre class=\"prettyprint\">az login\r\n<\/pre>\n<p>Claude Code uses your Azure CLI credentials automatically.<\/p>\n<p><strong>Option B: API Key<\/strong><\/p>\n<p><strong>Bash \/ WSL:<\/strong><\/p>\n<pre class=\"prettyprint\">export ANTHROPIC_FOUNDRY_API_KEY=\"your-foundry-api-key\"\r\n<\/pre>\n<p><strong>PowerShell:<\/strong><\/p>\n<pre class=\"prettyprint\">$env:ANTHROPIC_FOUNDRY_API_KEY = \"your-foundry-api-key\"\r\n<\/pre>\n<h3>VS Code Extension Setup<\/h3>\n<p>The Claude Code VS Code extension provides a native graphical interface for Claude Code directly in your IDE.<\/p>\n<ol>\n<li>Install the extension from the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=anthropic.claude-code\" target=\"_blank\" rel=\"noopener\">VS Code Marketplace<\/a>.<\/li>\n<li>Open VS Code settings (<code>Ctrl+,<\/code> or <code>Cmd+,<\/code>) and search for &#8220;Claude Code: Environment Variables&#8221;.<\/li>\n<li>Click &#8220;Edit in settings.json&#8221; and add the following:\n<pre class=\"prettyprint\">{\r\n  \"Claude Code: Environment Variables\": {\r\n    \"CLAUDE_CODE_USE_FOUNDRY\": \"1\",\r\n    \"ANTHROPIC_FOUNDRY_RESOURCE\": \"{your-resource-name}\",\r\n    \"ANTHROPIC_FOUNDRY_API_KEY\": \"&lt;optional-for-non-entra-auth&gt;\"\r\n  }\r\n}\r\n<\/pre>\n<\/li>\n<li>Click the <strong>Spark icon<\/strong> in the sidebar to open the Claude Code panel.<\/li>\n<li>Claude Code will authenticate using your Azure credentials (run <code>az login<\/code> first if needed).<\/li>\n<\/ol>\n<p>The extension supports auto-accept edits mode, plan mode, extended thinking, and file management with @-mentions\u2014all while routing through your Microsoft Foundry deployment.<\/p>\n<h2>Step 4: Validate Configuration<\/h2>\n<p>Verify that Claude Code is correctly configured to use Microsoft Foundry. Open a terminal, launch Claude Code, and run the <code>\/status<\/code> command:<\/p>\n<pre class=\"prettyprint\">claude\r\n&gt; \/status\r\n<\/pre>\n<p>Confirm that:<\/p>\n<ul>\n<li><strong>API provider<\/strong> shows &#8220;Microsoft Foundry&#8221;<\/li>\n<li><strong>Microsoft Foundry resource<\/strong> points to your Foundry project<\/li>\n<li><strong>Model<\/strong> matches your deployed model (e.g., claude-sonnet-4-5)<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/2-cc-model-validate.webp\"><img decoding=\"async\" class=\"alignnone size-large wp-image-1717\" src=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/2-cc-model-validate-1024x333.webp\" alt=\"Claude Code status showing Microsoft Foundry configuration\" width=\"1024\" height=\"333\" srcset=\"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/2-cc-model-validate-1024x333.webp 1024w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/2-cc-model-validate-300x98.webp 300w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/2-cc-model-validate-768x250.webp 768w, https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-content\/uploads\/sites\/83\/2025\/12\/2-cc-model-validate.webp 1119w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h2>Step 5: CLAUDE.md Project Memory<\/h2>\n<p>Claude Code reads <code>CLAUDE.md<\/code> files for project context. Files are loaded in order (later files override earlier):<\/p>\n<ol>\n<li><code>~\/.claude\/CLAUDE.md<\/code> \u2013 global defaults<\/li>\n<li><code>.\/CLAUDE.md<\/code> \u2013 repo root<\/li>\n<li><code>.\/current-dir\/CLAUDE.md<\/code> \u2013 current directory<\/li>\n<\/ol>\n<p>Example <code>CLAUDE.md<\/code> for a <a href=\"https:\/\/aka.ms\/agent-framework\">Microsoft Agent Framework<\/a> project in Python:<\/p>\n<pre class=\"prettyprint\"># Project: Customer Service Agent\r\n\r\n## Overview\r\nMulti-agent system using Microsoft Agent Framework with Foundry Agent Service.\r\n\r\n## Tech Stack\r\n- Python 3.11+\r\n- agent-framework (Microsoft Agent Framework Python SDK)\r\n- Microsoft Foundry for hosted agents\r\n- MCP tools for enterprise data access\r\n\r\n## Architecture\r\n- `src\/agents\/` - Agent definitions (triage, specialist, escalation)\r\n- `src\/tools\/` - MCP tool implementations\r\n- `src\/workflows\/` - Multi-agent orchestration\r\n- `tests\/` - pytest with async fixtures\r\n\r\n## Commands\r\n```bash\r\n# Run locally\r\npython -m src.main\r\n\r\n# Test\r\npytest tests\/ -v\r\n\r\n# Deploy to Foundry Agent Service\r\naz ai agent deploy --config deploy.yaml\r\n```\r\n\r\n## Code Patterns\r\nUse `AzureAIAgentClient` with `AzureCliCredential`:\r\n```python\r\nasync with AzureAIAgentClient(async_credential=AzureCliCredential()) as client:\r\n    agent = client.create_agent(instructions=\"...\", tools=[...])\r\n```\r\n\r\n## Current Sprint\r\n- Implementing RAG grounding with Foundry IQ\r\n- Adding Fabric connector for sales data\r\n<\/pre>\n<h2>Step 6: Initialize and Explore<\/h2>\n<pre class=\"prettyprint\"># Start Claude Code in your project\r\ncd your-project\r\nclaude\r\n\r\n# Or run a one-off command\r\nclaude \"explain the agent orchestration in src\/workflows\/\"\r\n<\/pre>\n<p>Claude Code will read your <code>CLAUDE.md<\/code> and understand your project context.<\/p>\n<h2>Step 7: Spec Kit Integration<\/h2>\n<p><a href=\"https:\/\/github.com\/github\/spec-kit\" target=\"_blank\" rel=\"noopener\">Spec Kit<\/a> provides structured commands for turning requirements into implementation. Install <a href=\"https:\/\/github.com\/github\/spec-kit?tab=readme-ov-file#1-install-specify-cli\">globally or for one-time use<\/a>.<\/p>\n<h3>Workflow<\/h3>\n<table style=\"width: 30.428%; height: 144px;\">\n<tbody>\n<tr style=\"height: 24px;\">\n<th style=\"height: 24px;\">Command<\/th>\n<th style=\"height: 24px;\">Purpose<\/th>\n<th style=\"height: 24px;\">Output<\/th>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\"><code>\/speckit.constitution<\/code><\/td>\n<td style=\"height: 24px;\">Define project principles<\/td>\n<td style=\"height: 24px;\"><code>.speckit\/constitution.md<\/code><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\"><code>\/speckit.specify<\/code><\/td>\n<td style=\"height: 24px;\">Capture requirements (what\/why)<\/td>\n<td style=\"height: 24px;\"><code>.speckit\/spec.md<\/code><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\"><code>\/speckit.plan<\/code><\/td>\n<td style=\"height: 24px;\">Technical design (how)<\/td>\n<td style=\"height: 24px;\"><code>.speckit\/plan.md<\/code><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\"><code>\/speckit.tasks<\/code><\/td>\n<td style=\"height: 24px;\">Break into actionable tasks<\/td>\n<td style=\"height: 24px;\"><code>.speckit\/tasks.md<\/code><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"height: 24px;\"><code>\/speckit.implement<\/code><\/td>\n<td style=\"height: 24px;\">Execute all tasks<\/td>\n<td style=\"height: 24px;\">Code changes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Example: Building an Agent Framework Tool<\/h3>\n<pre class=\"prettyprint\"># 1. Set project principles\r\nclaude \/speckit.constitution\r\n# Creates .speckit\/constitution.md with coding standards, patterns\r\n\r\n# 2. Define the feature\r\nclaude \/speckit.specify\r\n&gt; \"Add a SharePoint MCP tool that retrieves documents for RAG grounding\"\r\n# Creates .speckit\/spec.md with requirements\r\n\r\n# 3. Plan implementation  \r\nclaude \/speckit.plan\r\n# Creates .speckit\/plan.md with architecture, dependencies\r\n\r\n# 4. Generate tasks\r\nclaude \/speckit.tasks\r\n# Creates .speckit\/tasks.md with ordered task list\r\n\r\n# 5. Implement\r\nclaude \/speckit.implement\r\n# Executes tasks, creates files, runs tests\r\n<\/pre>\n<h2>Step 8: GitHub Actions<\/h2>\n<h3>Unit Test Generation for Agent Framework<\/h3>\n<pre class=\"prettyprint\">name: Generate Agent Tests\r\non:\r\n  pull_request:\r\n    paths:\r\n      - 'src\/agents\/**'\r\n      - 'src\/tools\/**'\r\n\r\njobs:\r\n  generate-tests:\r\n    runs-on: ubuntu-latest\r\n    permissions:\r\n      contents: write\r\n      pull-requests: write\r\n    steps:\r\n      - uses: actions\/checkout@v4\r\n      \r\n      - name: Run Claude Code\r\n        uses: anthropic-ai\/claude-code-action@v1\r\n        with:\r\n          prompt: |\r\n            Review the changed agent files and generate pytest tests.\r\n            Use async fixtures for AzureAIAgentClient mocking.\r\n            Follow patterns in tests\/conftest.py.\r\n          allowed_tools: \"edit,write,bash\"\r\n        env:\r\n          CLAUDE_CODE_USE_FOUNDRY: \"1\"\r\n          ANTHROPIC_FOUNDRY_RESOURCE: ${{ secrets.AZURE_FOUNDRY_RESOURCE }}\r\n          ANTHROPIC_FOUNDRY_API_KEY: ${{ secrets.AZURE_FOUNDRY_API_KEY }}\r\n<\/pre>\n<h3>PR Review with @claude<\/h3>\n<pre class=\"prettyprint\">name: Claude PR Assistant\r\non:\r\n  issue_comment:\r\n    types: [created]\r\n\r\njobs:\r\n  respond:\r\n    if: contains(github.event.comment.body, '@claude')\r\n    runs-on: ubuntu-latest\r\n    permissions:\r\n      contents: read\r\n      pull-requests: write\r\n    steps:\r\n      - uses: actions\/checkout@v4\r\n      \r\n      - name: Claude Review\r\n        uses: anthropic-ai\/claude-code-action@v1\r\n        with:\r\n          prompt: ${{ github.event.comment.body }}\r\n          context: \"PR #${{ github.event.issue.number }}\"\r\n        env:\r\n          CLAUDE_CODE_USE_FOUNDRY: \"1\"\r\n          ANTHROPIC_FOUNDRY_RESOURCE: ${{ secrets.AZURE_FOUNDRY_RESOURCE }}\r\n          ANTHROPIC_FOUNDRY_API_KEY: ${{ secrets.AZURE_FOUNDRY_API_KEY }}\r\n<\/pre>\n<h2>Step 9: Monitor Usage in Foundry Control Center<\/h2>\n<p>In Foundry portal \u2192 <strong>Operate<\/strong>:<\/p>\n<ul>\n<li>Token consumption by model<\/li>\n<li>Request latency<\/li>\n<li>Error rates and rate limit hits<\/li>\n<\/ul>\n<p>Set token limits in Claude Code or from Foundry Control Center:<\/p>\n<p><strong>Bash \/ WSL:<\/strong><\/p>\n<pre class=\"prettyprint\">export ANTHROPIC_MAX_TOKENS=100000  # per request\r\n<\/pre>\n<p><strong>PowerShell:<\/strong><\/p>\n<pre class=\"prettyprint\">$env:ANTHROPIC_MAX_TOKENS = \"100000\"  # per request\r\n<\/pre>\n<h2>Troubleshooting<\/h2>\n<table>\n<tbody>\n<tr>\n<th style=\"width: 30%;\">Issue<\/th>\n<th style=\"width: 70%;\">Solution<\/th>\n<\/tr>\n<tr>\n<td>401\/403 errors<\/td>\n<td>Run <code>az login<\/code>. Verify you have the <strong>Azure AI User<\/strong> role on the Foundry resource.<\/td>\n<\/tr>\n<tr>\n<td>Model not found<\/td>\n<td>Check that the deployment name matches <code>ANTHROPIC_DEFAULT_*_MODEL<\/code> env var.<\/td>\n<\/tr>\n<tr>\n<td>Region errors<\/td>\n<td>Claude models are only available in East US2 and Sweden Central.<\/td>\n<\/tr>\n<tr>\n<td>VS Code not using Foundry<\/td>\n<td>Add environment variables to VS Code settings under &#8220;Claude Code: Environment Variables&#8221;. Restart VS Code after changes.<\/td>\n<\/tr>\n<tr>\n<td>Rate limit (429)<\/td>\n<td>Default: 1K RPM, 1M TPM. Request an increase via Azure support.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Resources<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.anthropic.com\/en\/docs\/claude-code\" target=\"_blank\" rel=\"noopener\">Claude Code Documentation<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/\" target=\"_blank\" rel=\"noopener\">Microsoft Foundry Docs<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/agent-framework\/\" target=\"_blank\" rel=\"noopener\">Microsoft Agent Framework<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/github\/spec-kit\" target=\"_blank\" rel=\"noopener\">Spec Kit on GitHub<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This guide covers setting up Claude Code CLI and VS Code extension with Microsoft Foundry, configuring CLAUDE.md for project context, integrating Spec Kit for structured development, and running Claude Code in GitHub Actions. Prerequisites Azure subscription with Foundry access Node.js 18+ (for Claude Code CLI) Optional: Azure CLI installed (az login completed) Step 1: Deploy [&hellip;]<\/p>\n","protected":false},"author":172657,"featured_media":1721,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,100,19],"tags":[],"class_list":["post-1715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-github","category-github-copilot"],"acf":[],"blog_post_summary":"<p>This guide covers setting up Claude Code CLI and VS Code extension with Microsoft Foundry, configuring CLAUDE.md for project context, integrating Spec Kit for structured development, and running Claude Code in GitHub Actions. Prerequisites Azure subscription with Foundry access Node.js 18+ (for Claude Code CLI) Optional: Azure CLI installed (az login completed) Step 1: Deploy [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts\/1715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/users\/172657"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/comments?post=1715"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/posts\/1715\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/media\/1721"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/media?parent=1715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/categories?post=1715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/all-things-azure\/wp-json\/wp\/v2\/tags?post=1715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}