Skip to content

[vm-repair] repair-button command fails with FrameLocalsProxy error in CLI >= 2.77.0Β #32408

@PaladhiDinesh

Description

@PaladhiDinesh

Describe the bug

The az vm repair repair-button command fails when using Azure CLI versions 2.77.0 and above. The same command works correctly in Azure Cloud Shell(which has 2.77.0) and with CLI versions up to 2.76.0. This issue impacts automated repair workflows and SRE agent scenarios, especially for VMs with fstab issues.

Related command

az vm repair repair-button --button-command 'fstab' --verbose --resource-group --name

Errors

PS C:\Users\dpaladhi> az vm repair repair-button --button-command 'fstab' --resource-group nobootscenariosrg --name fstabnoboot
This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
The command failed with an unexpected error. Here is the traceback:
cannot remove local variables from FrameLocalsProxy
Traceback (most recent call last):
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call
File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler
File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button
command = command_helper(logger, cmd, 'vm repair repair-button')
File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init
self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in _get_function_param_dict
del values['cmd']
~~~~~~^^^^^^^
ValueError: cannot remove local variables from FrameLocalsProxy

Issue script & Debug output

PS C:\Users\dpaladhi> az vm repair repair-button --button-command 'fstab' --resource-group nobootscenariosrg --name fstabnoboot --debug cli.knack.cli: Command arguments: ['vm', 'repair', 'repair-button', '--button-command', 'fstab', '--resource-group', 'nobootscenariosrg', '--name', 'fstabnoboot', '--debug'] cli.knack.cli: init debug log: Enable color in terminal. Enable VT mode. cli.knack.cli: Event: Cli.PreExecute [] cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x0000023685F944A0>, <function OutputProducer.on_global_arguments at 0x000002368652D800>, <function CLIQuery.on_global_arguments at 0x000002368657B740>] cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate [] cli.azure.cli.core: Modules found from index for 'vm': ['azure.cli.command_modules.vm', 'azext_vm_repair'] cli.azure.cli.core: Loading command modules: cli.azure.cli.core: Name Load Time Groups Commands cli.azure.cli.core: vm 4.180 60 280 cli.azure.cli.core: Total (1) 4.180 60 280 cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next'] cli.azure.cli.core: Loading extensions: cli.azure.cli.core: Name Load Time Groups Commands Directory cli.azure.cli.core: vm-repair 0.303 2 7 C:\Users\dpaladhi.azure\cliextensions\vm-repair cli.azure.cli.core: Total (1) 0.303 2 7 cli.azure.cli.core: Loaded 61 groups, 287 commands. cli.azure.cli.core: Found a match in the command table. cli.azure.cli.core: Raw command : vm repair repair-button cli.azure.cli.core: Command table: vm repair repair-button cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x000002368847D080>] cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\dpaladhi.azure\commands\2025-11-10.12-15-35.vm_repair_repair-button.47516.log'. az_command_data_logger: command args: vm repair repair-button --button-command {} --resource-group {} --name {} --debug cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument..add_subscription_parameter at 0x0000023688CFE5C0>] cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad [] cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x0000023688D5C900>, <function register_cache_arguments..add_cache_arguments at 0x0000023688D5CAE0>, <function register_upcoming_breaking_change_info..update_breaking_change_info at 0x0000023688D5CB80>] cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded [] cli.knack.cli: Event: CommandInvoker.OnPreParseArgs [] cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x000002368652D8A0>, <function CLIQuery.handle_query_parameter at 0x000002368657B7E0>, <function register_ids_argument..parse_ids_arguments at 0x0000023688D5C9A0>] az_command_data_logger: extension name: vm-repair az_command_data_logger: extension version: 2.1.2 This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus cli.azure.cli.core.azclierror: Traceback (most recent call last): File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button command = command_helper(logger, cmd, 'vm repair repair-button') File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in _get_function_param_dict del values['cmd'] ~~~~~~^^^^^^^ ValueError: cannot remove local variables from FrameLocalsProxy cli.azure.cli.core.azclierror: The command failed with an unexpected error. Here is the traceback: az_command_data_logger: The command failed with an unexpected error. Here is the traceback: cli.azure.cli.core.azclierror: cannot remove local variables from FrameLocalsProxy Traceback (most recent call last): File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button command = command_helper(logger, cmd, 'vm repair repair-button') File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in _get_function_param_dict del values['cmd'] ~~~~~~^^^^^^^ ValueError: cannot remove local variables from FrameLocalsProxy az_command_data_logger: cannot remove local variables from FrameLocalsProxy Traceback (most recent call last): File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 233, in invoke File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 666, in execute File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 734, in _run_jobs_serially File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 703, in _run_job File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/init.py", line 336, in call File "D:\a_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 120, in handler File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\custom.py", line 1031, in repair_button command = command_helper(logger, cmd, 'vm repair repair-button') File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 40, in init self.command_params = _get_function_param_dict(inspect.getouterframes(inspect.currentframe())[1].frame) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\repair_utils.py", line 737, in get_function_param_dict del values['cmd'] ~~~~~~^^^^^^^ ValueError: cannot remove local variables from FrameLocalsProxy To check existing issues, please visit: https://github.com/Azure/azure-cli/issues cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x000002368847D300>] az_command_data_logger: exit code: 1 cli.main: Command ran in 7.704 seconds (init: 1.858, invoke: 5.846) telemetry.main: Begin splitting cli events and extra events, total events: 1 telemetry.client: Accumulated 0 events. Flush the clients. telemetry.main: Finish splitting cli events and extra events, cli events: 1 telemetry.save: Save telemetry record of length 8044 in cache file under C:\Users\dpaladhi.azure\telemetry\20251110121536974 telemetry.main: Begin creating telemetry upload process. telemetry.process: Creating upload process: "C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe C:\Program Files\Microsoft SDKs\Azure\CLI2\Lib\site-packages\azure\cli\telemetry_init.pyc C:\Users\dpaladhi.azure C:\Users\dpaladhi.azure\telemetry\20251110121536974" telemetry.process: Return from creating process 20428 telemetry.main: Finish creating telemetry upload process. Exception ignored in: <function command_helper.del at 0x000002368ACEDD00> Traceback (most recent call last): File "C:\Users\dpaladhi.azure\cliextensions\vm-repair\azext_vm_repair\command_helper_class.py", line 86, in del AttributeError: 'command_helper' object has no attribute 'is_verbose'

Expected behavior

The command should execute successfully and perform the repair steps without errors.

Environment Summary

PS C:\Users\dpaladhi> az --version azure-cli 2.79.0 core 2.79.0 telemetry 1.1.0 Extensions: azure-devops 0.26.0 vm-repair 2.1.2 Dependencies: msal 1.34.0b1 azure-mgmt-resource 23.3.0 Python location 'C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe' Config directory 'C:\Users\dpaladhi.azure' Extensions directory 'C:\Users\dpaladhi.azure\cliextensions' Python (Windows) 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)] Legal docs and information: aka.ms/AzureCliLegal Your CLI is up-to-date.

Additional context

The error occurs at the beginning of the process, before the three-step ALAR workflow starts.
The issue seems related to parameter handling in vm-repair extension after CLI core changes.
Relevant code line:
repair_utils.py#L737
Possible workaround discussed: Downgrade CLI to 2.76.0 temporarily.
Impact: Blocks automated repair flows and demo scenarios for Ignite.

Metadata

Metadata

Labels

Auto-AssignAuto assign by botComputeaz vm/vmss/image/disk/snapshotService AttentionThis issue is responsible by Azure service team.bugThis issue requires a change to an existing behavior in the product in order to be resolved.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions