Skip to content

regression: AzureCLI 2.88.0 broke 'az ssh vm' #33708

Description

@soerenkoehler

Describe the bug

AzureCLI breaks az ssh vm and possibly bastion extension.

Operative impact: High. To enable connection to production machines a teamwide manual rollback to Version 2.86 is required, since 2.87 has another mission critical bug (broken VNet listings) which was to be solved with 2.88

Related command

az ssh vm --ip 127.0.0.1 --port 22022 fails on both platforms
az extension update --name bastion fails on ubuntu

Errors

az extension update --name bastion on ubuntu

An error occurred whilst updating.
An error occurred. Pip failed with status code 3. Use --debug for more information.
Failed to update. Rolled bastion back to 1.4.2.

az ssh vm

The command failed with an unexpected error. Here is the traceback:
No module named 'rpds.rpds'
Traceback (most recent call last):
  File "/opt/az/lib/python3.14/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 567, in execute
    self.commands_loader.load_arguments(command)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/opt/az/lib/python3.14/site-packages/azure/cli/core/__init__.py", line 657, in load_arguments
    self.command_table[command].load_arguments()  # this loads the arguments via reflection
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 320, in load_arguments
    super().load_arguments()
    ~~~~~~~~~~~~~~~~~~~~~~^^
  File "/opt/az/lib/python3.14/site-packages/knack/commands.py", line 104, in load_arguments
    cmd_args = self.arguments_loader()
  File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 124, in arguments_loader
    op = self.get_op_handler(self.op_path)
  File "/opt/az/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
    handler = import_module(mod_to_import)
  File "/opt/az/lib/python3.14/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1406, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 759, in exec_module
  File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
  File "/home/soeren/.azure/cliextensions/ssh/azext_ssh/custom.py", line 20, in <module>
    from . import rdp_utils
  File "/home/soeren/.azure/cliextensions/ssh/azext_ssh/rdp_utils.py", line 19, in <module>
    from . import ssh_utils
  File "/home/soeren/.azure/cliextensions/ssh/azext_ssh/ssh_utils.py", line 20, in <module>
    from . import connectivity_utils
  File "/home/soeren/.azure/cliextensions/ssh/azext_ssh/connectivity_utils.py", line 10, in <module>
    import oras.client
  File "/home/soeren/.azure/cliextensions/ssh/oras/client.py", line 12, in <module>
    import oras.provider
  File "/home/soeren/.azure/cliextensions/ssh/oras/provider.py", line 14, in <module>
    import jsonschema
  File "/home/soeren/.azure/cliextensions/ssh/jsonschema/__init__.py", line 13, in <module>
    from jsonschema._format import FormatChecker
  File "/home/soeren/.azure/cliextensions/ssh/jsonschema/_format.py", line 11, in <module>
    from jsonschema.exceptions import FormatError
  File "/home/soeren/.azure/cliextensions/ssh/jsonschema/exceptions.py", line 15, in <module>
    from referencing.exceptions import Unresolvable as _Unresolvable
  File "/home/soeren/.azure/cliextensions/ssh/referencing/__init__.py", line 5, in <module>
    from referencing._core import Anchor, Registry, Resource, Specification
  File "/home/soeren/.azure/cliextensions/ssh/referencing/_core.py", line 9, in <module>
    from rpds import HashTrieMap, HashTrieSet, List
  File "/home/soeren/.azure/cliextensions/ssh/rpds/__init__.py", line 1, in <module>
    from .rpds import *
ModuleNotFoundError: No module named 'rpds.rpds'

Issue script & Debug output

az ssh vm --ip 127.0.0.1 --port 22022

Expected behavior

  • az ssh vm connects successfully
  • az extension update throws now errors

Environment Summary

  • Win11 25H2

    {
      "azure-cli": "2.88.0",
      "azure-cli-core": "2.88.0",
      "azure-cli-telemetry": "1.1.0",
      "extensions": {
        "bastion": "1.4.3",
        "ssh": "2.0.9"
      }
    }
    
  • WSL2, 5.15.167.4-microsoft-standard-WSL2, Ubuntu 24.04.4 LTS

    {
      "azure-cli": "2.88.0",
      "azure-cli-core": "2.88.0",
      "azure-cli-telemetry": "1.1.0",
      "extensions": {
        "bastion": "1.4.2",
        "ssh": "2.0.9"
      }
    }
    

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Auto-AssignAuto assign by botSSHService AttentionThis issue is responsible by Azure service team.VM SSHact-observability-squadbugThis issue requires a change to an existing behavior in the product in order to be resolved.customer-reportedIssues that are reported by GitHub users external to the Azure organization.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions