{"id":4085,"date":"2026-11-05T11:39:43","date_gmt":"2026-11-05T19:39:43","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sdk\/?p=4085"},"modified":"2026-11-05T16:19:41","modified_gmt":"2026-11-06T00:19:41","slug":"microsoft-foundry-azure-developer-cli-ga","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sdk\/microsoft-foundry-azure-developer-cli-ga\/","title":{"rendered":"Microsoft Foundry extension for Azure Developer CLI is generally available"},"content":{"rendered":"<p>Today, the Microsoft Foundry extension bundle (<code>microsoft.foundry<\/code>) for Azure Developer CLI (<code>azd<\/code>) reaches version 1.0 and is generally available. <code>azd<\/code> provisions Azure resources and deploys application code; the Foundry extension adds agent setup and local testing. Agent and deployment configuration stays alongside your code in <code>azure.yaml<\/code>.<\/p>\n<h2>What this adds to your development workflow<\/h2>\n<ul>\n<li>Review agent and deployment changes together.<\/li>\n<li>Inspect local requests and responses in Agent Inspector while changing prompts, tools, or code.<\/li>\n<li>Use the same deployment configuration locally and in CI\/CD.<\/li>\n<\/ul>\n<h2>Create and run a hosted agent<\/h2>\n<p>In Foundry, a <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/agents\/concepts\/hosted-agents\">hosted agent<\/a> runs your own agent code on managed compute. You choose the framework and orchestration logic; Foundry manages the runtime.<\/p>\n<p>Install <a href=\"https:\/\/aka.ms\/azd\">Azure Developer CLI<\/a> 1.37.0 or later, or upgrade an existing installation with <code>azd update<\/code>. Install a current <a href=\"https:\/\/docs.astral.sh\/uv\/getting-started\/installation\/\">uv<\/a> release (<code>uv self update<\/code> for standalone installations). The sample uses Python 3.13 or later.<\/p>\n<p>You&#8217;ll need an Azure subscription, <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/agents\/concepts\/hosted-agent-permissions\">Foundry permissions<\/a>, and model quota in your selected region. Provisioned resources and model usage incur Azure charges.<\/p>\n<p>Sign in and install the Foundry bundle:<\/p>\n<pre><code class=\"language-bash\">azd auth login\r\nazd ext install microsoft.foundry<\/code><\/pre>\n<p>If Azure CLI (<code>az<\/code>) is already signed in, use the same account and tenant as <code>azd<\/code>. The sample&#8217;s <a href=\"https:\/\/learn.microsoft.com\/azure\/developer\/python\/sdk\/authentication\/credential-chains#defaultazurecredential-overview\">DefaultAzureCredential<\/a> can use that login for local model calls.<\/p>\n<h3>1. Initialize the project<\/h3>\n<p>Initialize the <a href=\"https:\/\/github.com\/microsoft-foundry\/foundry-samples\/tree\/main\/samples\/python\/hosted-agents\/agent-framework\/responses\/01-basic\">basic Python Agent Framework sample<\/a> in an empty directory. Choose a new or existing Foundry project during setup. To reuse an existing model deployment, add <code>--model-deployment &lt;existing-deployment-name&gt;<\/code> to the command:<\/p>\n<pre><code class=\"language-bash\">azd ai agent init \\\r\n  --template https:\/\/github.com\/microsoft-foundry\/foundry-samples\/blob\/main\/samples\/python\/hosted-agents\/agent-framework\/responses\/01-basic\/azure.yaml \\\r\n  --deploy-mode code \\\r\n  --src .<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-content\/uploads\/sites\/58\/2026\/10\/11-05-foundry-project-selection.webp\" alt=\"Screenshot of azd initialization offering an existing Foundry project or creating a new one.\" \/><\/p>\n<p><code>--src .<\/code> initializes the project in the current directory.<\/p>\n<h3>2. Review <code>azure.yaml<\/code><\/h3>\n<p><code>azure.yaml<\/code> describes the agent and the Azure resources it needs. Keep it with your code so deployment changes are reviewed in the same pull request. Teammates and CI\/CD reuse that definition, with each <code>azd<\/code> environment supplying its target subscription, region, and resource settings.<\/p>\n<p>This excerpt from the <a href=\"https:\/\/github.com\/microsoft-foundry\/foundry-samples\/blob\/main\/samples\/python\/hosted-agents\/agent-framework\/responses\/01-basic\/azure.yaml\">sample configuration<\/a> shows the model deployment, agent source and runtime, compute allocation, and dependency on the Foundry project:<\/p>\n<pre><code class=\"language-yaml\">services:\r\n  ai-project:\r\n    host: azure.ai.project\r\n    deployments:\r\n      - name: gpt-5.4-mini\r\n        model:\r\n          format: OpenAI\r\n          name: gpt-5.4-mini\r\n          version: '2026-03-17'\r\n        sku:\r\n          name: GlobalStandard\r\n          capacity: 10\r\n  agent-framework-agent-basic-responses:\r\n    host: azure.ai.agent\r\n    project: src\/agent-framework-agent-basic-responses\r\n    codeConfiguration:\r\n      runtime: python_3_13\r\n      entryPoint: main.py\r\n    uses:\r\n      - ai-project\r\n    container:\r\n      resources:\r\n        cpu: '0.5'\r\n        memory: 1Gi<\/code><\/pre>\n<p>Start without writing infrastructure files. To customize provisioning, <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/agents\/concepts\/cli-infrastructure\">eject editable Bicep or Terraform files<\/a>, commit them with your code, and keep using <code>azd provision<\/code>.<\/p>\n<h3>3. Provision Azure resources<\/h3>\n<p><code>azd provision<\/code> creates the declared resources, including missing model deployments in a reused project. Follow the model-configuration prompts and choose an available online deployment type, such as Global Standard or Data Zone Standard. Options and quota vary by subscription and region; <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/foundry-models\/concepts\/deployment-types\">compare deployment types<\/a> before choosing.<\/p>\n<pre><code class=\"language-bash\">azd provision<\/code><\/pre>\n<h3>4. Test locally<\/h3>\n<pre><code class=\"language-bash\">azd ai agent run<\/code><\/pre>\n<p>The command installs dependencies and opens Agent Inspector for the local agent. Model calls still use your Azure deployment.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-content\/uploads\/sites\/58\/2026\/10\/11-05-foundry-agent-inspector-local-response.webp\" alt=\"Screenshot of Agent Inspector showing a local haiku response and a completed model call.\" \/><\/p>\n<p>Leave it running and invoke it from a second terminal in the project directory:<\/p>\n<pre><code class=\"language-bash\">azd ai agent invoke --local \"Write a haiku about deploying cloud applications.\"<\/code><\/pre>\n<h3>5. Deploy to Foundry<\/h3>\n<pre><code class=\"language-bash\">azd deploy<\/code><\/pre>\n<p><code>azd<\/code> uploads your source to Foundry for a remote build; no local container build is required. Deployment output includes the playground and endpoint links.<\/p>\n<p>Invoke the deployed agent:<\/p>\n<pre><code class=\"language-bash\">azd ai agent invoke \"Write a haiku about deploying cloud applications.\"<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-content\/uploads\/sites\/58\/2026\/10\/11-05-foundry-agent-remote-invoke.webp\" alt=\"Screenshot of azd invoking the deployed Foundry agent and returning a haiku response.\" \/><\/p>\n<p>Use <code>azd deploy --preview<\/code> to review hosted-agent configuration changes, <code>azd ai agent monitor --follow<\/code> to stream logs, and <code>azd ai agent doctor<\/code> to diagnose setup or permission issues.<\/p>\n<h2>Create the project with a coding agent<\/h2>\n<p>The <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/how-to\/develop\/use-microsoft-foundry-skill\">Microsoft Foundry Skill<\/a> gives coding agents such as GitHub Copilot and Claude Code Foundry-specific workflows for project setup and local testing. Install it for your host, open an empty folder, and ask:<\/p>\n<pre><code class=\"language-text\">Use the Microsoft Foundry Skill to scaffold the basic Python Agent Framework\r\nResponses API sample with code deployment. Configure azure.yaml and help me\r\nchoose the Foundry project, subscription, region, and model deployment.\r\nShow me the plan and wait for approval before creating Azure resources.\r\nRun and test the agent locally, then stop.<\/code><\/pre>\n<p>Review the generated project, then continue with the deployment steps above.<\/p>\n<h2>Measure and improve quality<\/h2>\n<p>Install the Evaluations extension and generate test data and a grading rubric for the deployed agent:<\/p>\n<pre><code class=\"language-bash\">azd ext install azure.ai.evaluations\r\nazd ai eval generate<\/code><\/pre>\n<p>Describe what the agent should do, and choose <strong>Dataset and evaluator<\/strong> and <strong>Turn<\/strong>. Review the generated dataset and rubric, then configure the evaluation:<\/p>\n<pre><code class=\"language-bash\">azd ai eval init --name quality<\/code><\/pre>\n<p>Select the generated dataset and rubric, and confirm the judge model.<\/p>\n<p>Review <code>evals\/azure.eval.yaml<\/code> and its service reference in <code>azure.yaml<\/code>. Register the evaluation assets and run the evaluation:<\/p>\n<pre><code class=\"language-bash\">azd up\r\nazd ai eval run start --eval quality<\/code><\/pre>\n<p>Keep the configuration and test assets with your code to compare changes and reuse checks in CI\/CD. <code>azd ai agent optimize<\/code> can reuse a configured evaluation as its baseline; review candidates before explicitly deploying one.<\/p>\n<h2>Automate deployment with CI\/CD<\/h2>\n<p><code>azd up<\/code> packages, provisions, and deploys the project. Run it once before configuring a GitHub Actions or Azure DevOps pipeline:<\/p>\n<pre><code class=\"language-bash\">azd up\r\nazd pipeline config<\/code><\/pre>\n<p><code>azd pipeline config<\/code> sets up authentication, repository settings, and a workflow to review and commit.<\/p>\n<p>Retain the generated checkout, sign-in, and environment settings. This GitHub Actions excerpt shows only installation and deployment; sign-in must precede deployment:<\/p>\n<pre><code class=\"language-yaml\">- name: Install azd\r\n  uses: Azure\/setup-azd@v2\r\n  with:\r\n    version: 1.37.0\r\n\r\n- name: Install Foundry extensions\r\n  run: azd ext install microsoft.foundry azure.ai.evaluations\r\n\r\n- name: Provision and deploy\r\n  run: azd up --no-prompt<\/code><\/pre>\n<p>Grant the pipeline identity the required Azure permissions, use a separate <code>azd<\/code> environment per stage, and keep runtime credentials in pipeline secrets.<\/p>\n<p>For CI evaluation, commit <code>evals\/azure.eval.yaml<\/code> and its required nonsecret assets, and grant the pipeline access to referenced datasets and evaluators. Run <code>azd ai eval run start --eval quality --no-prompt<\/code> after deployment. See the <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/agents\/how-to\/set-up-ci-cd-cli\">CI\/CD guide<\/a> for complete workflows and threshold-based quality gates.<\/p>\n<h2>Clean up a demo environment<\/h2>\n<p>If you created a new Foundry project for this demo, <code>azd down<\/code> deletes its resource group and everything in it. Review the deletion before confirming:<\/p>\n<pre><code class=\"language-bash\">azd down<\/code><\/pre>\n<p>For a reused project, <code>azd down<\/code> leaves the project and its resources, including the hosted agent, in place. Follow the <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/agents\/quickstarts\/quickstart-hosted-agent?pivots=azd#clean-up-resources\">quickstart&#8217;s cleanup guidance<\/a> to remove unwanted resources separately.<\/p>\n<h2>Get started<\/h2>\n<p>Follow the <a href=\"https:\/\/learn.microsoft.com\/azure\/foundry\/agents\/quickstarts\/quickstart-hosted-agent?pivots=azd\">hosted-agent quickstart<\/a> for the complete walkthrough. Update an existing installation with <code>azd ext upgrade microsoft.foundry<\/code>.<\/p>\n<p>Share feedback and requests in the <a href=\"https:\/\/github.com\/Azure\/azure-dev\">Azure Developer CLI repository<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Set up, test, evaluate, and deploy hosted agents with the generally available Microsoft Foundry extension for Azure Developer CLI, keeping agent and deployment configuration alongside your code.<\/p>\n","protected":false},"author":557,"featured_media":4086,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[1000,908,864,1002,1001,999,955],"class_list":["post-4085","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sdk","tag-agent-framework","tag-azd","tag-azure-developer-cli","tag-ci-cd","tag-evaluations","tag-hosted-agents","tag-microsoft-foundry"],"acf":[],"blog_post_summary":"<p>Set up, test, evaluate, and deploy hosted agents with the generally available Microsoft Foundry extension for Azure Developer CLI, keeping agent and deployment configuration alongside your code.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/4085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/users\/557"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/comments?post=4085"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/4085\/revisions"}],"predecessor-version":[{"id":4099,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/4085\/revisions\/4099"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media\/4086"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media?parent=4085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/categories?post=4085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/tags?post=4085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}