Announcing Radius v0.62.0
Today we're happy to announce the release of Radius v0.62.0. Check out the highlights below, along with the full changelog for more details.
We would like to extend our thanks to all the new and existing contributors who helped make this release possible!
Intro to Radius
If you're new to Radius, check out our website, radapp.io, for more information. Also visit our getting started guide to learn how to install Radius and create your first app.
Highlights
Radius.Core is now the default for the CLI
rad env, rad app, rad init, rad workspace create, and rad resource list now target the Radius.Core resource model without the --preview flag. The legacy rad recipe register/unregister/list/show commands are removed. Update any scripts that pass --preview or use those commands.
Version-pinned Helm chart images
The Helm chart now pins Radius component images to the full release version. Restarting pods no longer picks up later patches implicitly. Upgrade the chart to receive patched images. See Upgrading for override behavior.
Default Kubernetes recipe pack
Radius now embeds a pinned Kubernetes Recipe Pack from the /resource-types-contrib repo and builds the default recipe pack from it, so new environments get a working set of Recipes out of the box. See the Kubernetes Recipe Pack in the repo for more details.
Store Terraform recipe state in S3 or Azure Blob Storage
Radius can now store Terraform recipe state in your own S3 bucket or Azure Blob Storage container instead of only in Kubernetes secrets. Learn more in the Terraform state docs.
Reliability improvements
Many retry and robustness fixes make the CLI and deployments more resilient to transient failures. They cover Bicep recipe downloads, Terraform provider discovery, API server reads, and managed secret deletion. Azure resource deletion now selects supported API versions and deletes in dependency order. Radius type version skew warns before deployment. Digest-pinned Bicep recipe sources are supported.
Breaking changes
- Remove legacy Azure Container Instances support (#13293) by @radius-release[bot] in #13483
- Remove unused --preview helpers and stale preview wording by @lakshmimsft in #13326
- Require gated promotion of external channel tags by @DariuszPorowski in #13333
- Make rad resource list target Radius.Core without --preview by @lakshmimsft in #13317
- Make rad init and rad workspace create target Radius.Core without --preview by @lakshmimsft in #13316
- Make rad app commands target Radius.Core without --preview by @lakshmimsft in #13306
- Make rad resource expose and logs target Radius.Compute/containers without --preview by @lakshmimsft in #13319
- Retire legacy paths and consume snapshots by @DariuszPorowski in #12956
- Pin chart images to full release versions by @DariuszPorowski in #12953
- Make rad env commands target Radius.Core without --preview by @lakshmimsft in #13290
- Remove rad recipe register/unregister/list/show commands by @lakshmimsft in #13236
New contributors
Welcome to our new contributors who have merged their first PR in this release!
- @radius-release[bot] made their first contribution in #13519
- @itpropro made their first contribution in #13327
- @allexistence made their first contribution in #13318
Upgrading to Radius v0.62.0
Helm image pinning: This release's Helm chart pins Radius component images to the full release version. Restarting pods no longer picks up later patches implicitly; upgrade the chart to receive patched images. Existing channel aliases remain available, and explicitly configured global.imageTag, component tags, or image references keep overriding chart defaults. To adopt version-pinned defaults while retaining other settings, clear tag overrides and restore image overrides to their default names; an empty image value is invalid.
You can upgrade to this release by upgrading your Radius CLI then running rad upgrade kubernetes. Only incremental version upgrades are supported. Consult the upgrade documentation for full details.
Full changelog
0.62.0 - 2026-10-27
Breaking changes
- Remove legacy Azure Container Instances support (#13293) by @radius-release[bot] in #13483
- Remove unused --preview helpers and stale preview wording by @lakshmimsft in #13326
- Require gated promotion of external channel tags by @DariuszPorowski in #13333
- Make rad resource list target Radius.Core without --preview by @lakshmimsft in #13317
- Make rad init and rad workspace create target Radius.Core without --preview by @lakshmimsft in #13316
- Make rad app commands target Radius.Core without --preview by @lakshmimsft in #13306
- Make rad resource expose and logs target Radius.Compute/containers without --preview by @lakshmimsft in #13319
- Retire legacy paths and consume snapshots by @DariuszPorowski in #12956
- Pin chart images to full release versions by @DariuszPorowski in #12953
- Make rad env commands target Radius.Core without --preview by @lakshmimsft in #13290
- Remove rad recipe register/unregister/list/show commands by @lakshmimsft in #13236
Added
- Add expression evaluator for direct module recipe parameters (#13297) by @radius-release[bot] in #13486
- Create the Deployment Engine tag after release approval by @DariuszPorowski in #13384
- Add manual authz trust-boundary test kit by @sk593 in #13216
- Fail functional tests on authz dry-run would-deny logs by @sk593 in #13215
- Make the async worker dequeue interval configurable by @itpropro in #13327
- Add authorization error codes by @sk593 in #13213
- Add authorization mode setting (off/dryRun/enforce) by @sk593 in #13212
- Always write bicepconfig.json in rad init --preview by @willdavsmith in #13164
- [stack 2/3: default k8s recipe pack] build the default recipe pack from the embedded Kubernetes pack by @nithyatsu in #13249
- [stack 1/3: default k8s recipe pack] sync and embed the pinned Kubernetes recipe pack by @nithyatsu in #13248
- Publish release SBOMs by @DariuszPorowski in #12869
- Support S3 and Azure Blob backends with registered credentials by @lakshmimsft in #13078
- Add flaky-test investigation skill and automation by @nicolejms in #13190
- Add conventional commit title generation by @DariuszPorowski in #13138
Fixed
- Honor KUBECONFIG when selecting the Kubernetes cluster (#13488) by @radius-release[bot] in #13517
- Dispatch fresh sample tests when resuming failures (#13512) by @radius-release[bot] in #13514
- Align make install destinations with CLI installers (#13511) by @radius-release[bot] in #13513
- Stop rad upgrade from failing on field manager conflicts (#13474) by @radius-release[bot] in #13509
- Update release-backport action to specific commit (#13504) by @radius-release[bot] in #13505
- Recover upmerges and share backport automation (#13498) by @radius-release[bot] in #13503
- Match Bicep registry credentials to the registry Radius pulls from (#13489) by @radius-release[bot] in #13501
- Stop retrying permanent Bicep delete errors (#13451) by @radius-release[bot] in #13487
- Sort release history by revision (#13435) by @radius-release[bot] in #13484
- Include unchanged changelog in plan snapshots (#13445) by @radius-release[bot] in #13447
- Include maintenance commits in changelogs (#13444) by @radius-release[bot] in #13446
- Align backports, changelogs, and sibling releases (#13433) by @radius-release[bot] in #13441
- Allow reviewed root changelog edits (#13434) by @radius-release[bot] in #13440
- Authenticate docs and samples coordination (#13431) by @radius-release[bot] in #13438
- Pin changelog rendering to the product commit (#13425) by @radius-release[bot] in #13426
- Preserve encryption Secret state during upgrades (#13413) by @radius-release[bot] in #13424
- Cache AWS DescribeType results and log AWS errors returned as 500 (#13412) by @radius-release[bot] in #13423
- Stop running Test_GetVersion subtests in parallel (#13411) by @radius-release[bot] in #13422
- Handle delayed GitHub release visibility (#13409) by @radius-release[bot] in #13421
- Wait for Azure blob read access before Terraform deployment by @nicolejms in #13383
- Retain legacy changes and deduplicate release notes by @DariuszPorowski in #13399
- Link release-note mentions and compact contributors by @DariuszPorowski in #13392
- Filter release-metadata-only PR checks by @DariuszPorowski in #13396
- Skip k3d load balancer in Repo Radius GHCR state test by @kachawla in #13386
- Skip last tagged version refusals by @nicolejms in #13378
- Avoid GraphQL node limit when collecting backports by @DariuszPorowski in #13381
- Fall back to parent types for Azure API version lookup by @nicolejms in #13379
- Keep the Git server port-forward alive for Flux tests by @kachawla in #13373
- Select supported Azure API versions for resource deletion by @nicolejms in #13370
- Support digest-pinned Bicep recipe sources and keep registry ports in publish URLs by @AzureMike in #13258
- Skip versions protected by download limits by @nicolejms in #13363
- Preserve response metadata after retry timeout by @nicolejms in #13353
- Delete Key Vault secrets through managed parent vaults by @nicolejms in #13342
- Report rejected deletes and handle rate limits by @nicolejms in #13341
- Hand off Copilot threads and author responses by @DariuszPorowski in #13332
- Standardize bounded external fetch retries by @nicolejms in #13322
- Retry transient Terraform provider discovery failures by @nicolejms in #13321
- Install pinned tools without building tool-updater by @nicolejms in #13313
- Tolerate action SHA updates in release controller tests by @brooke-hamilton in #13308
- Add provider alias placeholders before terraform get by @nicolejms in #13300
- Bound retries for Bicep downloads by @nicolejms in #13291
- Retry GitHub OIDC request timeouts before Azure login by @nicolejms in #13287
- Retry transient Helm chart downloads by @nicolejms in #13286
- Retry image pushes after unknown blob by @nicolejms in #13288
- Retry transient API server errors when reading resources by @nicolejms in #13277
- Retry managed secret delete while it is still updating by @nicolejms in #13278
- Prevent missing base commit errors in fork PR change detection by @brooke-hamilton in #13272
- Resolve API versions consistently for generic resource operations by @lakshmimsft in #13232
- Isolate the recipe pack missing-namespace test by @AzureMike in #13257
- Warn about Radius type version skew before deployment by @nicolejms in #13228
- Honor reviewer-specific re-review handoffs by @DariuszPorowski in #13255
- Authenticate the nightly CLI release lookup by @AzureMike in #13244
- Coordinate managed-secret deletion in preview cascades by @brooke-hamilton in #13193
- Add validation for release metadata changes before trusted validator installation by @DariuszPorowski in #13220
- Delete resource group contents in dependency order by @lakshmimsft in #13155
- Refuse to persist an empty control-plane snapshot in rad shutdown by @pujitha24 in #12849
- Restore trusted change-detection helper before execution by @brooke-hamilton in #13196
- Retry go mod download with HTTP/2 disabled to fix proxy.golang.org stream errors by @nicolejms in #13199
- Mitigate flaky Install Radius timeout by waiting for Deployment Engine image in CI by @nicolejms in #13191
- Retry all curl errors in tool install scripts by @nicolejms in #13189
- Make resource type lookup case-insensitive in rad resource list/resource-type show by @nicolejms in #13184
- Retry transient registry failures when downloading Bicep recipes by @nicolejms in #13185
- Prebuild rad for Windows process tests by @brooke-hamilton in #13151
- Share required Helm overrides across setup by @brooke-hamilton in #13145
- Reconcile release tags and branches idempotently by @DariuszPorowski in #12770
- Wrap long descriptions in rad resource-type show by @nicolejms in #13158
- Validate default namespace in rad env create by @nicolejms in #13156
- Prevent MongoDB recipe scheduling timeout by @brooke-hamilton in #13146
- Preserve change filtering in the merge queue by @DariuszPorowski in #13139
- Bound bicep download with a timeout in the PowerShell installer by @sk593 in #12852
- Surface API response when CLI download test fails to parse version by @pujitha24 in #12907
- Recognize ruleset-backed PR approvals by @DariuszPorowski in #13111
- Require Azure resource groups in Radius.Core environments by @Copilot in #12495
Changed
- Remove Spec Kit, migrate Radius skills, and relocate MCP config by @DariuszPorowski in #13331
- Fold radinit/common back into radinit by @lakshmimsft in #13325
- Reduce Make startup overhead by @brooke-hamilton in #13285
- Remove unused code by @kachawla in #13140
Dependencies
- Update Azure SDK dependencies and refactor imports (#13419) by @radius-release[bot] in #13439
- Remove unused oav dev dependency (#13408) by @radius-release[bot] in #13420
- Update npm dependencies with open security alerts by @kachawla in #13402
- Bump @azure-tools/typespec-autorest from 0.73.0 to 0.73.1 in /typespec in the javascript-deps group across 1 directory by @dependabot[bot] in #13394
- Bump the github-actions group across 1 directory with 5 updates by @dependabot[bot] in #13397
- Bump the go-deps group across 2 directories with 8 updates by @dependabot[bot] in #13393
- Bump the docker group across 3 directories with 1 update by @dependabot[bot] in #13395
- Bump the docker group across 2 directories with 1 update by @dependabot[bot] in #13364
- Bump the javascript-deps group across 3 directories with 4 updates by @dependabot[bot] in #13366
- Bump the github-actions group across 2 directories with 3 updates by @dependabot[bot] in #13367
- Bump the go-deps group across 2 directories with 18 updates by @dependabot[bot] in #13365
- Bump the javascript-deps group across 2 directories with 11 updates by @dependabot[bot] in #13303
- Bump the github-actions group across 2 directories with 8 updates by @dependabot[bot] in #13305
- Bump the go-deps group across 2 directories with 30 updates by @dependabot[bot] in #13304
- Bump the docker group across 2 directories with 2 updates by @dependabot[bot] in #13302
- Bump the docker group across 2 directories with 2 updates by @dependabot[bot] in #13239
- Bump the github-actions group across 2 directories with 3 updates by @dependabot[bot] in #13241
- Bump ghcr.io/devcontainers/features/docker-in-docker from 4.1.2 to 4.1.3 in the devcontainers group by @dependabot[bot] in #13237
- Bump the go-deps group across 2 directories with 16 updates by @dependabot[bot] in #13240
- Bump the go-deps group across 1 directory with 12 updates by @dependabot[bot] in #13175
- Bump the docker group across 5 directories with 2 updates by @dependabot[bot] in #13170
- Bump the javascript-deps group across 3 directories with 7 updates by @dependabot[bot] in #13169
- Bump the github-actions group across 1 directory with 3 updates by @dependabot[bot] in #13171
- Bump the devcontainers group with 3 updates by @dependabot[bot] in #13167
- Bump the security group across 2 directories with 3 updates by @dependabot[bot] in #13150
- Bump the go-deps group across 1 directory with 3 updates by @dependabot[bot] in #13104
Others
- Prepare v0.62.0-rc.6 (#13518) by @radius-release[bot] in #13519
- Clarify fresh-head upmerge retries (#13508) by @radius-release[bot] in #13515
- Prepare v0.62.0-rc.5 (#13506) by @radius-release[bot] in #13507
- Prepare v0.62.0-rc.4 (#13492) by @radius-release[bot] in #13493
- Point design note contributors to eng/design-notes (#13456) by @radius-release[bot] in #13490
- Add functional spec for ECS and Azure Container Apps core resource mappings (#13233) by @radius-release[bot] in #13485
- Prepare v0.62.0-rc.3 (#13449) by @radius-release[bot] in #13450
- Bump versions (#13442) by @radius-release[bot] in #13448
- Add a concise release runbook (#13390) by @radius-release[bot] in #13437
- Prepare v0.62.0-rc.2 (#13428) by @radius-release[bot] in #13429
- Prepare v0.62.0-rc.1 by @radius-release[bot] in #13403
- Synced file(s) with radius-project/.github by @radius-files-sync[bot] in #13405
- Clarify bug and private vulnerability reporting by @vinayada1 in #13404
- Pr followup: - cover rejected parent API versions when deleting child resources by @nicolejms in #13380
- Bump versions by @radius-dependabot-manager[bot] in #13401
- Remove remaining Spec Kit agent definitions by @Copilot in #13400
- Updates by @radius-resource-types[bot] in #13314
- Bump to 1.27.3 by @DariuszPorowski in #13385
- Cover direct-module object parameters and conditions by @Copilot in #13375
- Synced file(s) with radius-project/.github by @radius-files-sync[bot] in #13371
- Add authz functional test suite and rogue client helper by @sk593 in #13214
- Use shared PR lifecycle label automation by @DariuszPorowski in #13356
- Label automated resource type update PRs by @brooke-hamilton in #13360
- Correct RAD_LOCATION override in CLI installation example by @allexistence in #13318
- Simplify local non-cloud functional testing by @brooke-hamilton in #13270
- Bump versions by @radius-dependabot-manager[bot] in #13338
- Harden release discovery and snapshot builds by @DariuszPorowski in #12970
- Use github.sha for trusted pull_request_target checkouts by @DariuszPorowski in #13315
- Re-enable custom terraform recipe functional test by @nicolejms in #13312
- Gate publication and automate coordination by @DariuszPorowski in #12948
- Bump versions by @radius-dependabot-manager[bot] in #13310
- Clarify reviewer testing instructions in PR descriptions by @brooke-hamilton in #13309
- Decouple functional-test teardown from rad app delete and upd background cleanup logging by @lakshmimsft in #13260
- Deploy the functional-test environment from a Bicep template by @lakshmimsft in #13283
- Capture Terraform provider failure diagnostics by @nicolejms in #13289
- Replace skipped Terraform PostgreSQL test with Azure provider coverage by @nicolejms in #13296
- Introduce release controller and swap triggers by @DariuszPorowski in #12872
- Retry registry image pull in create-local-registry by @nicolejms in #13276
- Update RBAC feature spec for multi-resource operations by @willtsai in #13266
- [stack 3/3: default k8s recipe pack] document the compiled Kubernetes recipe pack by @nithyatsu in #13250
- Bump Go to 1.27.2 by @DariuszPorowski in #13263
- Bump versions by @radius-dependabot-manager[bot] in #13262
- Add S3 and Azure backend lifecycle E2E coverage and pin the Radius.Core API version by @lakshmimsft in #13110
- Add ranked resource-type catalog design note by @Reshrahim in #13122
- Add guide for adding a recipe pack for a new platform by @nithyatsu in #13182
- Updates by @radius-resource-types[bot] in #13254
- Cut tag releases over to GoReleaser by @DariuszPorowski in #12828
- Skip managed-secret cleanup tests in the long-running workflow by @AzureMike in #13253
- Bump the javascript-deps group across 1 directory with 2 updates by @dependabot[bot] in #13238
- Update RBAC spec with
rad authcommand details by @willtsai in #13235 - Re-enable recipe-pack tests in the long-running workflow by @AzureMike in #13229
- Add internal component authorization design note by @sk593 in #13086
- Configure PR lifecycle labels from JSON by @DariuszPorowski in #13197
- Automate release preparation and backports by @DariuszPorowski in #12823
- Adopt dotted RC identifiers by @DariuszPorowski in #12793
- Bump versions by @radius-dependabot-manager[bot] in #13207
- Synced file(s) with radius-project/.github by @radius-files-sync[bot] in #13192
- Fix race and vacuous assertions in Flux functional tests by @nicolejms in #13187
- Functional spec for built-in Radius RBAC by @willtsai in #13089
- Rename azure recipe pack to azure-aks and add azure-aci by @zachcasper in #12662
- Release recipe packs and publish Bicep recipes during Radius releases by @nithyatsu in #13153
- Add functional tests for rad upgrade kubernetes by @nicolejms in #13157
- Release v0.61.1 by @brooke-hamilton in #13163
- Correlate publisher runs by release identifier by @DariuszPorowski in #12783
- Hand off approved review feedback to authors by @DariuszPorowski in #13162
- Hand off unresolved human review threads to authors by @DariuszPorowski in #13148
- Derive expected resourceNameHash instead of hardcoding it by @kachawla in #13117
- Require the Conventional Commit title check by @DariuszPorowski in #12763
- Bump versions by @radius-dependabot-manager[bot] in #13125
- Release resource type namespaces before Radius by @sk593 in #13121
- Bump supported version to v0.61.0 and add release notes by @sk593 in #13107
- Retry post-deploy port-forward probe with backoff by @pujitha24 in #12972
- Automate pull request status labels by @DariuszPorowski in #13106
Contributors
@radius-release[bot], @AzureMike, @DariuszPorowski, @brooke-hamilton, @kachawla, @nicolejms, @willdavsmith, @Reshrahim, @Copilot, @radius-dependabot-manager[bot], @radius-files-sync[bot], @vinayada1, @dependabot[bot], @radius-resource-types[bot], @sk593, @lakshmimsft, @itpropro, @allexistence, @willtsai, @nithyatsu, @pujitha24, @zachcasper
The changelog is based on Keep a Changelog 1.1.0, with Radius-specific change groups and contributor sections. Radius follows Semantic Versioning under its version policy.