{"id":3562,"date":"2025-12-19T11:57:26","date_gmt":"2025-12-19T19:57:26","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sdk\/?p=3562"},"modified":"2025-12-19T11:57:26","modified_gmt":"2025-12-19T19:57:26","slug":"azure-developer-cli-azd-december-2025","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sdk\/azure-developer-cli-azd-december-2025\/","title":{"rendered":"Azure Developer CLI (azd) Dec 2025 &#8211; Extensions Enhancements, Foundry Rebranding, and Azure Pipelines Improvements"},"content":{"rendered":"<p>Welcome to the December 2025 edition of the Azure Developer CLI (<code>azd<\/code>) release blog\u2014our final release of the year! This post covers releases 1.22.0 through 1.22.5, wrapping up 2025. To share your feedback and questions, join the <a href=\"https:\/\/github.com\/Azure\/azure-dev\/discussions\/\">December release discussion on GitHub<\/a>.<\/p>\n<p><strong>Highlights:<\/strong><\/p>\n<ul>\n<li>Enhanced extension capabilities with custom configuration and interactive mode support<\/li>\n<li>Improved provisioning progress display and error handling<\/li>\n<li>Multiple bug fixes for Container Apps, Azure Pipelines, and deployment workflows<\/li>\n<li>Better support for Terraform and Static Web Apps<\/li>\n<\/ul>\n<h2>New features<\/h2>\n<h3>\ud83d\udd0c Extension Framework Enhancements<\/h3>\n<p>If you&#8217;re new to azd extensions, they&#8217;re modular additions that extend azd functionality beyond built-in commands. Extensions are plugins that introduce new CLI commands, allowing you to tailor <code>azd<\/code> to specific needs and scenarios. With extensions, you can add new capabilities, automate repetitive tasks, and integrate Azure services or third-party tools directly from the CLI. For more details, check out our <a href=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/azd-extension-framework\/\">introduction to the azd extension framework<\/a>.<\/p>\n<ul>\n<li><strong>Custom configuration properties<\/strong>: Extensions can now define custom configuration properties at both project and service levels, enabling more flexible and powerful extension behaviors. This change allows extension authors to add specialized configurations without modifying core <code>azd<\/code> schemas. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6196\">[#6196]<\/a><\/li>\n<li><strong>Interactive mode support<\/strong>: Extensions now support interactive mode, enabling TUI (Text User Interface) applications to provide richer user experiences. This change allows extensions to prompt users for input and display interactive interfaces when needed. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6367\">[#6367]<\/a><\/li>\n<li><strong>Distributed tracing and structured error handling<\/strong>: Extensions benefit from improved observability with distributed tracing support and structured error handling, making it easier to diagnose issues and track execution flows. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6321\">[#6321]<\/a><\/li>\n<\/ul>\n<h3>\u2728 User Experience Improvements<\/h3>\n<ul>\n<li><strong>Interactive environment selector<\/strong>: The <code>azd env select<\/code> command now provides an interactive selector when no environment is specified, making it easier to switch between environments without remembering exact names. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6347\">[#6347]<\/a><\/li>\n<li><strong>Improved provisioning progress display<\/strong>: Provisioning progress polling interval reduced from 10 seconds to 3 seconds, providing more responsive status updates during infrastructure deployment. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6256\">[#6256]<\/a><\/li>\n<li><strong>Enhanced error handling<\/strong>: Better error messages are now displayed when loading invalid <code>azure.yaml<\/code> files, replacing panics with clear, actionable error descriptions. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6373\">[#6373]<\/a><\/li>\n<li><strong>Improved error handling flow<\/strong>: Three-solution prompt added with upgraded langchain dependency for better error resolution guidance. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6313\">[#6313]<\/a><\/li>\n<\/ul>\n<h3>\u2699\ufe0f Azure Configuration<\/h3>\n<ul>\n<li><strong>azure.yml file support<\/strong>: <code>azd<\/code> now supports <code>azure.yml<\/code> as an alternative to <code>azure.yaml<\/code> for project configuration files, providing more flexibility in naming conventions. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6285\">[#6285]<\/a><\/li>\n<li><strong>Template gallery integration<\/strong>: Template gallery links are now integrated into <code>azd init<\/code> and <code>azd template list<\/code> commands, making it easier to discover and start from templates. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6300\">[#6300]<\/a><\/li>\n<li><strong>Directory creation prompt<\/strong>: Using <code>-C<\/code>\/<code>--cwd<\/code> with a nonexistent path, <code>azd<\/code> now prompts to create the directory automatically. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6266\">[#6266]<\/a><\/li>\n<\/ul>\n<h3>\ud83c\udf81 Other Enhancements<\/h3>\n<ul>\n<li><strong>Language-specific .gitignore templates<\/strong>: Extension scaffolding with <code>azd x init<\/code> now includes language-specific <code>.gitignore<\/code> templates for cleaner repositories. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6232\">[#6232]<\/a><\/li>\n<li><strong>Microsoft Foundry name<\/strong>: Updated naming from Azure AI Foundry to Microsoft Foundry throughout the codebase and documentation. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6270\">[#6270]<\/a><\/li>\n<\/ul>\n<h2>\ud83e\udeb2 Bugs fixed<\/h2>\n<h3>Extension and Deployment Fixes<\/h3>\n<ul>\n<li><strong>Extension installation fix<\/strong>: Fixed panic during provisioning caused by custom configuration properties feature introduced in v1.22.4, is temporarily reverted. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6408\">[#6408]<\/a><\/li>\n<li><strong>Extension installation prompts<\/strong>: Fixed <code>azd provision --preview<\/code> incorrectly prompting to install extensions for custom service targets when the extension is already installed. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6398\">[#6398]<\/a><\/li>\n<li><strong>Resource discovery<\/strong>: Improved resource discovery logic to correctly identify resources associated with deployments during deletion operations. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6356\">[#6356]<\/a><\/li>\n<li><strong>Display names<\/strong>: Fixed display names for Foundry and Foundry project resources in output. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6385\">[#6385]<\/a><\/li>\n<\/ul>\n<h3>Container Apps Improvements<\/h3>\n<ul>\n<li><strong>Container App deployment<\/strong>: Fixed Container App deployment to correctly resolve infrastructure path from defaults when using layered provisioning with service module settings. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6360\">[#6360]<\/a><\/li>\n<li><strong>Container App revision deployment<\/strong>: Fixed Container App revision deployment to respect service <code>module<\/code> setting in <code>azure.yaml<\/code>. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6346\">[#6346]<\/a><\/li>\n<li><strong>Revision mode error messages<\/strong>: Fixed unclear error message when deploying to improperly tagged Container App in nonrevision mode. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6353\">[#6353]<\/a><\/li>\n<\/ul>\n<h3>Azure Pipelines and Deployment<\/h3>\n<ul>\n<li><strong>GitHub URL parsing<\/strong>: Fixed GitHub URL parsing to support branch names containing slashes. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6351\">[#6351]<\/a><\/li>\n<li><strong>Static Web App deployment<\/strong>: Fixed Static Web App deployment by ensuring framework service requires restore and produces correct artifacts. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6341\">[#6341]<\/a><\/li>\n<li><strong>azd down deletion<\/strong>: Improved <code>azd down<\/code> deletion behavior for resource-group-scoped deployments. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6345\">[#6345]<\/a><\/li>\n<li><strong>Hooks in CI\/CD<\/strong>: Fixed hooks not running in CI\/CD scenarios when <code>.azure<\/code> directory doesn&#8217;t exist. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6277\">[#6277]<\/a><\/li>\n<li><strong>ARM nil field handling<\/strong>: Fixed panic in <code>azd provision --preview<\/code> when ARM returns nil After field during resource deletion. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6282\">[#6282]<\/a><\/li>\n<li><strong>Deployment skipping<\/strong>: Fixed <code>azd provision<\/code> skipping deployment when resource groups were deleted outside of azd. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6281\">[#6281]<\/a><\/li>\n<\/ul>\n<h3>Environment Variables<\/h3>\n<ul>\n<li><strong>JSON-escaped variables<\/strong>: Fixed JSON-escaped environment variables being lost when syncing to remote CI\/CD pipelines. Thanks @Menghua1 for the contribution! <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/5568\">[#5568]<\/a><\/li>\n<\/ul>\n<h3>Aspire Improvements<\/h3>\n<ul>\n<li><strong>Non-HTTP protocols<\/strong>: Relaxed Aspire binding validation for non-HTTP protocols as simple TCP. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6180\">[#6180]<\/a><\/li>\n<li><strong>Revision-based deployments<\/strong>: Fixed Container Apps deployment error when using revision-based deployments. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6255\">[#6255]<\/a><\/li>\n<\/ul>\n<h2>Other changes<\/h2>\n<ul>\n<li><strong>Bicep CLI update<\/strong>: Updated Bicep CLI to v0.39.26. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6247\">[#6247]<\/a><\/li>\n<li><strong>Error telemetry<\/strong>: Improved error logging telemetry with specific error type classification for better diagnostics. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6389\">[#6389]<\/a><\/li>\n<li><strong>Usage tracking<\/strong>: Added usage tracking telemetry for layered provisioning and revision-based ACA deployments. <a href=\"https:\/\/github.com\/Azure\/azure-dev\/pull\/6357\">[#6357]<\/a><\/li>\n<\/ul>\n<h2>End of year thanks!<\/h2>\n<p>As we wrap up another year of <code>azd<\/code> development, we want to thank all of the contributors, template authors, and community members who made this journey possible. Your code contributions, templates, feedback, and real-world insights drive <code>azd<\/code>&#8216;s evolution and help developers build with Azure and Foundry with confidence.<\/p>\n<p>Looking ahead to 2026, we plan to grow the extension ecosystem. You&#8217;ve already seen extensions like the <a href=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/azure-developer-cli-foundry-agent-extension\/\">azd AI agent extension for Microsoft Foundry<\/a> and the <a href=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/azure-developer-cli-copilot-coding-agent-config\/\">GitHub Copilot coding agent configuration extension<\/a>, and we have more in the pipeline to streamline your workflows and make it easier to build applications in agentic developer flows.<\/p>\n<p>Want to build your own extension? The <a href=\"https:\/\/devblogs.microsoft.com\/azure-sdk\/azd-extension-framework\/\">azd extension framework<\/a> makes it easy to create custom commands tailored to your team&#8217;s specific needs\u2014whether that&#8217;s integrating with third-party services, automating deployment workflows, or adding domain-specific tooling. We can&#8217;t wait to see what you build!<\/p>\n<p>Here&#8217;s to continued collaboration and innovation in 2026!<\/p>\n<h2>\ud83d\ude4b\u200d\u2640\ufe0f New to azd?<\/h2>\n<p>If you&#8217;re new to the Azure Developer CLI, <code>azd<\/code> is an open-source command-line tool that accelerates the time it takes to get your application from local development environment to Azure. <code>azd<\/code> provides best practice, developer-friendly commands that map to key stages in your workflow, whether you&#8217;re working in the terminal, your editor or CI\/CD.<\/p>\n<p>Get started with <code>azd<\/code>:<\/p>\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/azure\/developer\/azure-developer-cli\/install-azd?tabs=winget-windows%2Cbrew-mac%2Cscript-linux&amp;pivots=os-windows\"><strong>Install azd<\/strong><\/a><\/li>\n<li><strong>Explore templates<\/strong>: To find templates for your preferred language and Azure services, browse the <a href=\"https:\/\/azure.github.io\/awesome-azd\/\">Awesome azd template gallery<\/a> and AI App Templates (https:\/\/aka.ms\/ai-gallery).<\/li>\n<li><strong>Learn more<\/strong>: Check out the <a href=\"https:\/\/learn.microsoft.com\/azure\/developer\/azure-developer-cli\/\">official documentation<\/a> and <a href=\"https:\/\/learn.microsoft.com\/azure\/developer\/azure-developer-cli\/troubleshoot\">troubleshooting guide<\/a>.<\/li>\n<li><strong>Get help<\/strong>: If you encounter issues or have questions, visit our <a href=\"https:\/\/github.com\/Azure\/azure-dev\">GitHub repository<\/a> to file an issue or start a discussion.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This post announces the December release of the Azure Developer CLI (`azd`).<\/p>\n","protected":false},"author":107449,"featured_media":3564,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[701,864,878,939,160,159,861,162,733,895],"class_list":["post-3562","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sdk","tag-net","tag-azure-developer-cli","tag-codespaces","tag-docker","tag-java","tag-javascript","tag-kubernetes","tag-python","tag-typescript","tag-vscode"],"acf":[],"blog_post_summary":"<p>This post announces the December release of the Azure Developer CLI (`azd`).<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/3562","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\/107449"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/comments?post=3562"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/3562\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media\/3564"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media?parent=3562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/categories?post=3562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/tags?post=3562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}