Welcome to the October 2025 edition of the Azure Developer CLI (azd
) release blog! This post covers releases 1.19.0 and 1.20.0. To share your feedback and questions, join the October release discussion on GitHub.
This month brings game-changing features including layered provisioning with service dependencies, the new azd publish
command, advanced extension capabilities, and authentication enhancements. Also, the community contributed several exciting new templates to help you get started faster.
New features
🚀 Layered provisioning support (Alpha)
azd
now supports layered provisioning to solve complex infrastructure dependency scenarios and “chicken and egg” problems. This alpha feature (1.19.0) lets you define multiple provisioning layers in azure.yaml
for sequential or independent deployment.
Enable layered provisioning:
azd config set alpha.layers on
Define layers in azure.yaml
:
infra:
layers:
- name: base
path: ./infra
- name: app
path: ./infra/app
With layered provisioning, you can:
- Provision specific layers:
azd provision base
– Deploy only the base infrastructure layer - Provision all layers:
azd provision
– Deploy all layers in sequence - Refresh layer state:
azd env refresh --layer base
– Refresh environment state from a specific layer - Clean up layers:
azd down app
– Remove resources from a specific layer
This feature is key for scenarios where resources in one layer depend on the existence of resources from another layer. For example, when application-specific infrastructure depends on foundational networking or security components.
Previously, customers worked around complex dependencies by using pre-provision hooks to run scripts that update Azure resources between deployment steps. While functional, this approach mixed Infrastructure as Code (Bicep) with imperative scripts. With layered provisioning, you can now keep everything in Bicep as true Infrastructure as Code, maintaining consistency and using Bicep’s declarative benefits throughout your entire infrastructure deployment. (azure-dev#5492)
🚀 Service dependencies with automatic deployment ordering
Building on the layered provisioning foundation, version 1.20.0 introduces service dependencies using the new uses
property [#5856]. This property allows you to define automatic deployment ordering by specifying dependencies between services directly in your azure.yaml
:
name: my-app
services:
backend:
project: ./api
host: containerapp
frontend:
project: ./frontend
host: staticwebapp
uses:
- backend
Deployment order: backend → frontend
azd
automatically orders deployments, validates dependency graphs, and ensures correct deployment sequence without manual orchestration.
🚀 New azd publish
command and enhanced azd deploy
for container workflows
The azd publish
command separates container image publishing from deployment, providing greater flexibility in your development workflow. This new command allows you to publish container images to Azure Container Registry (ACR) or third-party registries independently of the azd deploy
process. The command supports both local and remote builds, includes --all
and --from-package
flags for batch operations, and features a --to
parameter for specifying custom image targets in the format [registry/]repository[:tag]
. Additionally, azd publish
includes support for prepublish
and postpublish
hooks and works seamlessly with Azure Container Apps and Azure Kubernetes Service (AKS) service targets.
Enhanced azd deploy
capabilities
Alongside the new publish command, we enhanced azd deploy
to support fully qualified image references with the --from-package
flag. When you provide a complete registry endpoint (for example, myacr.azurecr.io/image-name:tag
), azd
skips both packaging and publishing steps and proceed directly to deployment. This change enables three distinct deployment workflows:
- Full rebuild:
azd deploy web
– Repackages and republishes the image to the registry - Republish existing:
azd deploy web --from-package image-name:tag
– Skips packaging but republishes the image to the registry - Deploy pre-published:
azd deploy web --from-package myacr.azurecr.io/image-name:tag
– Skips both packaging and publishing, deploying the existing image directly
Customizable azd up
workflow
The existing azd up
workflow remains unchanged by default, maintaining backward compatibility. However, you can now customize the up
workflow by explicitly defining the steps in your azure.yaml
. Doing so allows you to apply the new azd publish
command within your workflow while maintaining the same end result:
workflows:
up:
steps:
- azd: provision
- azd: package --all
- azd: publish --all
- azd: deploy --all
This customization works seamlessly with existing templates and provides greater control over the deployment pipeline while offering the same functionality as the default workflow. (azure-dev#5663)
🚀 Enhanced extension capabilities
Extension management received substantial improvements across both releases:
Version 1.19.0 brought foundational improvements [#5641]:
- Better ordering of extensions during installation and execution
- Enhanced version display to help you track which extensions are installed
- Improved source disambiguation to clearly identify where extensions come from
Version 1.20.0 major expansions:
- Auto-installation workflow [#5753] – automatic extension installation
- Custom service target support [#5815]
- Extensions promoted to beta [#5858] – more stable APIs
- MCP Server capability [#5807] for AI integration
- Improved
azd ext show
UX [#5874]
🚀 Advanced development features (1.20.0)
- Container App Jobs support [#5723] for .NET Aspire deployments
- Bicep Container App revisions [#5694] support
- Custom language support [#5771] for extending
azd
to new programming languages - Optional hook shell attribute [#5809] with OS-based defaults
🚀 Authentication improvements
Enhanced authentication with claims support for device-code flow [#5587] and improved service principal creation guidance [#5598].
Bugs fixed
Version 1.19.0 fixes
- Enhanced deployment logging: Community contributor @Saipriya-1144 improved the readability of failed deployment logs with more line spacing [#5586], making it easier to troubleshoot deployment issues.
- CloudShell telemetry fix: Fixed an issue where CloudShell telemetry wasn’t being emitted after the first run [#5588], ensuring proper usage tracking and diagnostics.
- Improved warning messages: We enhanced Warning message formatting with all-caps prefix and better hook suggestion display [#5590], making important messages more visible and actionable.
Version 1.20.0 fixes
- Extension registry setup: Fixed
azd x publish
to automatically set up local extension registry [#5736], streamlining extension development workflows. - Aspire deployment improvements: Enhanced Aspire deployments to use the name of the compute environment from Aspire Manifest instead of hardcoded strings [#5812], providing more accurate resource naming.
- Updated preflight error handling for standard deployment [#5870]
Other changes
Version 1.19.0 updates
- Go 1.25.0 upgrade: Updated the codebase to Go 1.25.0 [#5592], bringing performance improvements and the latest language features
- Aspire sample update: Updated Aspire sample to version 9.4 [#5559], providing developers with the latest .NET Aspire capabilities
- Extension registry update: Updated the
microsoft.azd.extensions
registry to version 0.5.0 [#5603], ensuring compatibility with the latest extension features
Version 1.20.0 updates
- Bicep CLI update: Updated from version 0.38.3 to 0.38.33 [#5869], bringing the latest Bicep features and fixes
- GitHub CLI update: Updated to the latest version 2.80 [#5770] for improved Git integration
- Schema improvements: Made language optional in the schema [#5867], providing more flexibility in service definitions
- Redis provisioning clarity: Enhanced provisioning progress to differentiate between Azure Managed Redis and Redis Enterprise [#5823]
New docs
- (NEW)
azd
metadata documentation – Comprehensive guidance on metadata, template definitions, and configuration options (published September 24, 2025)
New templates
Community-driven templates help you get started faster, solve real-world scenarios, and showcase best practices for deploying solutions with Azure Developer CLI.
The Azure Developer CLI template gallery continues to grow with exciting new contributions from the community. Thank you!
- Containerized A2A Translation Service with Azure AI Translator by Konstantinos Passadis: Complete Agent-to-Agent translation service using Azure Container Apps, Storage Queues, and AI Translator with async processing and managed identity.
- Simple FastMCP with Azure OpenAI by Miguel P. Z.: A minimal FastMCP application template that deploys to Azure App Service. FastMCP provides Model Context Protocol server capabilities, enabling AI assistants to interact with external systems and data sources through a standardized interface.
- Agentic Azure Architecture Document and Diagram Generator with MCP Validation by Konstantinos Passadis: Intelligent Azure architecture document and diagram generator using AI Foundry agents, MCP service validation, and comprehensive Azure component library. Features automatic import correction, smart component validation using MCP, Dapr for secure and easy Service to Service communications, and professional document and diagram rendering. A must have tool for every Azure architect and engineer.
- Durable Functions Fan-Out/Fan-In sample by the Azure Functions Team: A Durable Functions quickstart written in C# demonstrating the fan-out/fan-in pattern. This template deploys to Azure Functions Flex Consumption plan using the Azure Developer CLI (
azd
). The sample uses managed identity and a virtual network to make sure deployment is secure by default. - Trainer-Demo-Deploy scenarios by petender:
- Network-hardened web app with private PaaS datastore: this scenario aligns with AZ-500 and AZ-104 certification paths and demonstrates how to deploy an Azure App Service web app with strict network security controls and policies by daverendon.
- AI Foundry Agent Service with Bing Search Grounding and OpenAI Deep Research LLM: this scenario deploys an Azure AI Foundry Project, an Azure AI Foundry Agent Service, and Bing Search Grounding. A Python with Flask Web App offers a use case to perform Deep Research by petender.
- Agentic Applications for Unified Data Foundation Solution Accelerator by Malory Rose, Nalini Chandhi, Travis Hilbert: This solution accelerator helps organizations make faster, smarter decisions at scale. The accelerator uses agentic AI solutions built on Microsoft Fabric’s unified data foundation. The template integrates Azure AI Foundry agents with Semantic Kernel orchestration. Teams can design intelligent workflows that automate routine processes and streamline operations. The solution enables natural language querying across enterprise datasets. High-quality, governed data becomes accessible to both technical specialists and business users. This shared environment allows insights to be surfaced easily and decisions to be grounded in trusted information. Organizations gain agility to respond rapidly to changing business needs, foster team collaboration, and drive innovation with confidence.
- Create Medallion Architecture for Unified Data Foundation with Fabric Solution Accelerator by Alvaro Guadamillas Herranz, Gaiye Zhou: This template creates a working medallion architecture in Microsoft Fabric. The template includes data models across multiple domains: customer, product, sales, and finance. Sample data is uploaded to a bronze lakehouse. PySpark notebooks with automated execution load data into bronze, validate data in silver, and prepare data in gold. A prebuilt Power BI dashboard for sales analysis is created and uploaded to Fabric.
- Container Migration Solution Accelerator by Seth Steenken, DB Lee: This accelerator is a multi-service application with AI-driven migration capabilities. It uses multi-agent technology to help users migrate container service configurations. The solution helps move configurations from any cloud platform to Azure Kubernetes Service.
Contributor acknowledgments
Shout out to our community contributor @Saipriya-1144 for improving deployment log readability!
New to azd
?
If you’re new to the Azure Developer CLI, azd
is a developer-centric command-line interface (CLI) tool that accelerates provisioning and deploying app resources on Azure.
You can use azd from:
- Your terminal of choice on Windows, Linux, or macOS.
- Visual Studio Code or GitHub Codespaces by downloading the extension from the Marketplace, or installing it directly from the extension view (
Ctrl
+Shift
+X
for Windows orCmd
+Shift
+X
for macOS) in Visual Studio Code. - Visual Studio by enabling the preview feature flag.
To get started, run azd init
in an empty directory or azd init --template [template name]
to start with a template. Full documentation is available in the Azure Developer CLI Dev Center and you can report issues or ask questions in our GitHub repository.
Happy coding!
0 comments
Be the first to start the discussion.