Skip to content

[Storage] BREAKING CHANGE: az storage account create/update: Remove --min-tls-version values TLS1_0, TLS1_1#32740

Open
calvinhzy wants to merge 3 commits intoAzure:devfrom
calvinhzy:break-tls-1.0
Open

[Storage] BREAKING CHANGE: az storage account create/update: Remove --min-tls-version values TLS1_0, TLS1_1#32740
calvinhzy wants to merge 3 commits intoAzure:devfrom
calvinhzy:break-tls-1.0

Conversation

@calvinhzy
Copy link
Member

@calvinhzy calvinhzy commented Feb 4, 2026

Related command

Description

Remove --min-tls-version values TLS1_0, TLS1_1 as they have been retired by service since 02/03

Testing Guide

History Notes

[Storage] BREAKING CHANGE: az storage account create/update: Remove --min-tls-version values TLS1_0, TLS1_1


This checklist is used to make sure that common guidelines for a pull request are followed.

@calvinhzy calvinhzy self-assigned this Feb 4, 2026
@azure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prd bot commented Feb 4, 2026

️✔️AzureCLI-FullTest
️✔️acr
️✔️latest
️✔️3.12
️✔️3.13
️✔️acs
️✔️latest
️✔️3.12
️✔️3.13
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.13
️✔️ams
️✔️latest
️✔️3.12
️✔️3.13
️✔️apim
️✔️latest
️✔️3.12
️✔️3.13
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.13
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️aro
️✔️latest
️✔️3.12
️✔️3.13
️✔️backup
️✔️latest
️✔️3.12
️✔️3.13
️✔️batch
️✔️latest
️✔️3.12
️✔️3.13
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.13
️✔️billing
️✔️latest
️✔️3.12
️✔️3.13
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️cdn
️✔️latest
️✔️3.12
️✔️3.13
️✔️cloud
️✔️latest
️✔️3.12
️✔️3.13
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.13
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.13
️✔️config
️✔️latest
️✔️3.12
️✔️3.13
️✔️configure
️✔️latest
️✔️3.12
️✔️3.13
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.13
️✔️container
️✔️latest
️✔️3.12
️✔️3.13
️✔️containerapp
️✔️latest
️✔️3.12
️✔️3.13
️✔️core
️✔️latest
️✔️3.12
️✔️3.13
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.13
️✔️databoxedge
️✔️latest
️✔️3.12
️✔️3.13
️✔️dls
️✔️latest
️✔️3.12
️✔️3.13
️✔️dms
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.13
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.13
️✔️find
️✔️latest
️✔️3.12
️✔️3.13
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.13
️✔️identity
️✔️latest
️✔️3.12
️✔️3.13
️✔️iot
️✔️latest
️✔️3.12
️✔️3.13
️✔️keyvault
️✔️latest
️✔️3.12
️✔️3.13
️✔️lab
️✔️latest
️✔️3.12
️✔️3.13
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️maps
️✔️latest
️✔️3.12
️✔️3.13
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.13
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.13
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.13
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.13
️✔️network
️✔️latest
️✔️3.12
️✔️3.13
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.13
️✔️postgresql
️✔️latest
️✔️3.12
️✔️3.13
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.13
️✔️profile
️✔️latest
️✔️3.12
️✔️3.13
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.13
️✔️redis
️✔️latest
️✔️3.12
️✔️3.13
️✔️relay
️✔️latest
️✔️3.12
️✔️3.13
️✔️resource
️✔️latest
️✔️3.12
️✔️3.13
️✔️role
️✔️latest
️✔️3.12
️✔️3.13
️✔️search
️✔️latest
️✔️3.12
️✔️3.13
️✔️security
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.13
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.13
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.13
️✔️sql
️✔️latest
️✔️3.12
️✔️3.13
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.13
️✔️storage
️✔️latest
️✔️3.12
️✔️3.13
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.13
️✔️telemetry
️✔️latest
️✔️3.12
️✔️3.13
️✔️util
️✔️latest
️✔️3.12
️✔️3.13
️✔️vm
️✔️latest
️✔️3.12
️✔️3.13

@azure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prd bot commented Feb 4, 2026

⚠️AzureCLI-BreakingChangeTest
⚠️storage
rule cmd_name rule_message suggest_message
⚠️ 1004 - CmdPropRemove storage account create cmd storage account create removed property deprecate_info_target
⚠️ 1010 - ParaPropUpdate storage account create cmd storage account create update parameter min_tls_version: updated property choices from ['TLS1_0', 'TLS1_1', 'TLS1_2', 'TLS1_3'] to ['TLS1_2', 'TLS1_3']
⚠️ 1004 - CmdPropRemove storage account update cmd storage account update removed property deprecate_info_target
⚠️ 1010 - ParaPropUpdate storage account update cmd storage account update update parameter min_tls_version: updated property choices from ['TLS1_0', 'TLS1_1', 'TLS1_2', 'TLS1_3'] to ['TLS1_2', 'TLS1_3']

@yonzhan
Copy link
Collaborator

yonzhan commented Feb 4, 2026

Thank you for your contribution! We will review the pull request and get back to you soon.

@github-actions
Copy link

github-actions bot commented Feb 4, 2026

The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>

@calvinhzy calvinhzy marked this pull request as ready for review February 12, 2026 05:16
Copilot AI review requested due to automatic review settings February 12, 2026 05:16
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the Storage command module to enforce the retirement of TLS 1.0/1.1 by removing TLS1_0 and TLS1_1 from --min-tls-version choices for az storage account create/update, and removes the prior “auto-upgrade to TLS1_2” behavior.

Changes:

  • Restrict --min-tls-version to TLS1_2 / TLS1_3 for storage account create/update.
  • Remove fallback logic (and warning) that previously mapped TLS1_0/TLS1_1 to TLS1_2.
  • Update scenario tests + recordings to stop using retired TLS versions and delete the breaking-change registration file.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/azure-cli/azure/cli/command_modules/storage/_params.py Removes TLS1_0/TLS1_1 from CLI argument choices for create/update.
src/azure-cli/azure/cli/command_modules/storage/operations/account.py Removes warning + coercion logic for TLS1_0/TLS1_1 inputs.
src/azure-cli/azure/cli/command_modules/storage/tests/latest/test_storage_account_scenarios.py Updates min-TLS scenario tests to no longer pass TLS1_0/TLS1_1 (but leaves commented-out test logic).
src/azure-cli/azure/cli/command_modules/storage/tests/latest/recordings/test_storage_create_with_min_tls.yaml Updates the recording to match the revised test flow.
src/azure-cli/azure/cli/command_modules/storage/_breaking_change.py Removes the breaking-change notice registration (file deleted).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +508 to +510
c.argument('min_tls_version', arg_type=get_enum_type(['TLS1_2', 'TLS1_3']),
help='The minimum TLS version to be permitted on requests to storage. '
' Values TLS1_0 and TLS1_1 have been retired on 2026/02/03 and will be removed on 2026/03/03.'
' Microsoft recommends setting MinimumTlsVersion to TLS1_2')
'Microsoft recommends setting MinimumTlsVersion to TLS1_2')
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to create, please add coverage to ensure az storage account update --min-tls-version TLS1_0|TLS1_1 fails as expected (e.g., expect_failure=True). Without a test, this breaking behavior could regress silently.

Copilot uses AI. Check for mistakes.
Comment on lines +441 to +447
name_0 = self.create_random_name(prefix='cli', length=24)
name_1_2 = self.create_random_name(prefix='cli', length=24)
name_1_3 = self.create_random_name(prefix='cli', length=24)

self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_0'.format(name1, resource_group),
checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_2')])
# service should default to tls1.2, currently service issue
# self.cmd('az storage account create -n {} -g {}'.format(name_0, resource_group),
# checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_2')])
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

name_0 is unused because the default-create assertion is commented out. Please avoid leaving commented-out test logic; either remove the unused variable and related commented block, or replace it with an explicit skip/xfail (with a tracking issue/link) so the reason is preserved without dead code.

Copilot uses AI. Check for mistakes.
Comment on lines +443 to 455
name_1_3 = self.create_random_name(prefix='cli', length=24)

self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_0'.format(name1, resource_group),
checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_2')])
# service should default to tls1.2, currently service issue
# self.cmd('az storage account create -n {} -g {}'.format(name_0, resource_group),
# checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_2')])

self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_1'.format(name2, resource_group),
checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_2')])

self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_2'.format(name3, resource_group),
self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_2'.format(name_1_2, resource_group),
checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_2')])

# setting minimumTlsVersion 1.3 is not supported yet,
# https://learn.microsoft.com/en-us/azure/storage/common/transport-layer-security-configure-minimum-version?tabs=portal
# self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_3'.format(name4, resource_group),
# self.cmd('az storage account create -n {} -g {} --min-tls-version TLS1_3'.format(name_1_3, resource_group),
# checks=[JMESPathCheck('minimumTlsVersion', 'TLS1_3')])
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

name_1_3 is currently unused because the TLS1_3 create is commented out. Either drop the variable (and commented test) or convert the TLS1_3 scenario into an explicit skip/xfail so the test intent and current limitation are captured without dead code.

Copilot uses AI. Check for mistakes.
Comment on lines +391 to +393
c.argument('min_tls_version', arg_type=get_enum_type(['TLS1_2', 'TLS1_3']),
help='The minimum TLS version to be permitted on requests to storage. '
' Values TLS1_0 and TLS1_1 have been retired on 2026/02/03 and will be removed on 2026/03/03.'
' Microsoft recommends setting MinimumTlsVersion to TLS1_2')
'Microsoft recommends setting MinimumTlsVersion to TLS1_2')
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that TLS1_0/TLS1_1 are removed from the argument choices, it would be good to add a scenario test that verifies az storage account create --min-tls-version TLS1_0|TLS1_1 fails with an appropriate error (e.g., expect_failure=True). This will prevent accidental reintroduction and documents the breaking behavior.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Auto-Assign Auto assign by bot Storage az storage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments