← Package directory
Available on winget

Install Bicep CLI

A declarative language for describing and deploying Azure resources

Install with winget
winget install --id Microsoft.Bicep
Upgrade
winget upgrade --id Microsoft.Bicep
Uninstall
winget uninstall --id Microsoft.Bicep

About Bicep CLI

Bicep is a Domain Specific Language (DSL) for deploying Azure resources declaratively. It aims to drastically simplify the authoring experience with a cleaner syntax, improved type safety, and better support for modularity and code re-use. Bicep is a transparent abstraction over ARM and ARM templates, which means anything that can be done in an ARM Template can be done in Bicep (outside of temporary known limitations). All resource types, apiVersions, and properties that are valid in an ARM template are equally val...

What's new in 0.43.8

Features and Bug Fixes - Reverted the retryOn decorator to an experimental feature flag (#19604) - The retryOn experimental flag was removed in the previous release, but the feature is not yet enabled in template language version 2.0. This could cause validation errors during deployment for users relying on retryOn. This release restores the feature flag as a temporary workaround while backend support for template language version 2.0 is being rolled out. - Added build_bicep and build_bicepparam tools to the MCP server (#19602)

Read release notes

Version history

Version Updated Notes
0.43.8 Unknown Features and Bug Fixes - Reverted the retryOn decorator to an experimental feature flag (#19604) - The retryOn experimental flag was removed in the previous release, but the feature is not yet enabled in template languag...
0.43.1 Unknown Highlights - @retryOn decorator is now GA! (#19454) Use the @retryOn decorator to retry a resource deployment if the deployment hits a specific error code. You can also specify how many times this retry should happen. Ex...
0.42.1 Unknown Highlights - Bicep console GA! (#19261) - Bicep Role Definitions Function (#18457) properties: { roleDefinitionId: roleDefinitions('Data Factory Contributor').id principalId: scriptIdentity.principalId } Features and Bug...
0.41.2 Unknown Highlights - Snapshot command is GA (#19084) Example usage: # capture a snapshot bicep snapshot main.bicepparam # validate a snapshot bicep snapshot main.bicepparam --mode validate # capture a snapshot with Azure context...
0.40.2 Unknown Highlights - Multi-line interpolated strings GA! (#18666) Basic example: var s = $''' this is ${interpolated}''' With multiple $ characters: var s = $$''' this is $${interpolated} this is not ${interpolated}''' - [Experi...
0.39.26 Unknown Highlights - [Experimental] Enhancements to bicep console command: - Support load* functions (#18413) - Support types & functions (#18261) - Improve line break handling (#18320) - [Requires the multilineStringInterpolati...
0.38.33 Unknown Bug Fixes - Fix for incorrect error diagnostic on policyDefinitions existing resource usage (#18169) - Fix regression on secure inline object types and resource-derived string and object types (#18170) - Bicep.RpcClient...
0.38.5 Unknown Bug Fixes and Features - Fix for incorrect error diagnostic on MSGraph existing resource usage (#18160) - Add library for interacting with Bicep CLI via JSONRPC (#18151)
0.38.3 Unknown Highlights - onlyIfNotExists GA! (#17996) @onlyIfNotExists() resource onlyDeployIfNotExists 'Microsoft...' = { name: 'example' location: 'eastus' properties: { ... } } - [Experimental] Interactive bicep console command f...
0.37.4 Unknown Highlights - [Experimental] Bicep MCP server (#17519, #17572, #17607, #17712). See Using Bicep MCP Server in VS Code (Preview!) for usage information. - [Experimental] Simplified C# authoring experience for Local Deploy...
0.36.177 Unknown Highlights - Add Identity Snippets for Resources (#17335) - Update Bicep linter diagnostics to point to https://aka.ms/bicep/linter-diagnostics (#17390) - Mark conditional resources as nullable for the purposes of proper...
0.36.1 Unknown Highlights - GA release for optional types in variables (#17055) // current variable syntax var foo = 'hello' // new variable syntax with optional type var foo string = 'hello' - Add userPrincipalName to deployer() funct...
0.35.1 Unknown Highlights - GA release for the @secure() decorator on module outputs! You can now output secure values from a child module and read them in a parent module. (#16796) - Visual Studio Bicep extension support for .biceppar...
0.34.44 Unknown Features and Bug Fixes - Use languageVersion 2.0 when an existing resource has an explicit dependency (#16670) - Validate regex patterns against non-backtracking engine (#16687) - Generate deterministic dependsOn (#16668...
0.33.93 Unknown Highlights: - Address v0.33.13 language server crash/stack overflow (#16235) - Address v0.33.13 deployment failures when depending on looped resources in non-symbolic name templates (#16236) - Release Deployment Pane as...
0.33.13 Unknown Highlights: - Paste as BicepParams (#15897) - Add resourceInput<> and resourceOutput<> utility types (#15825) We've added two new utility types (resourceInput<> and resourceOutput<>), which deprecates the existing resour...
0.32.4 Unknown Highlights: - New deployer() function to retrieve ObjectId of the principal that is deploying the Bicep file (#15340) - Support partial public registry completions (#15646). Previously, if typing the entire module refere...
0.31.92 Unknown Features and bug fixes - Revert "Only add an explicit dependency on an existing resource when the deployments engine will use the GET response" (#15524) - Don't collapse scope references or namespaces into objects (#1557...
0.31.34 Unknown Highlights: - Improve ternary type inference (#15399) - Allow dependsOn for existing resources (#15459) - Tree-shake existing resources where possible (#15447) - Sort public registry module version completion items (#154...
0.30.23 Unknown What's Changed - Support named pipe fallback for IPC in local mode on unsupported platforms (#15046)