Skip to content

az cli incorrectly returns exit code 0 even on failure #28523

@bugrasan

Description

@bugrasan

Describe the bug

The command az account list silently fails when not already logged in and the process returns exit code 0. This makes breaks Unix convention and makes it more difficult in automation to detect failure.

Related command

az account list compared with az account show that provides the correct exit code.

$ az account list
Please run "az login" to access your accounts.
[]
$ echo $?
0
$ az account show
Please run 'az login' to setup account.
$ echo $?
1

Errors

no error - which is the problem

Issue script & Debug output

$ az account list --debug
cli.knack.cli: Command arguments: ['account', 'list', '--debug']
cli.knack.cli: __init__ debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x7fc50c266660>, <function OutputProducer.on_global_arguments at 0x7fc50c209f80>, <function CLIQuery.on_global_arguments at 0x7fc50c243ba0>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'account': ['azure.cli.command_modules.profile', 'azure.cli.command_modules.resource']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name                  Load Time    Groups  Commands
cli.azure.cli.core: profile                   0.002         2         8
cli.azure.cli.core: resource                  0.098        51       228
cli.azure.cli.core: Total (2)                 0.100        53       236
cli.azure.cli.core: Loaded 52 groups, 236 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : account list
cli.azure.cli.core: Command table: account list
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x7fc50b4ced40>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/vscode/.azure/commands/2024-03-07.10-12-22.account_list.9263.log'.
az_command_data_logger: command args: account list --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument.<locals>.add_subscription_parameter at 0x7fc50b51d4e0>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument.<locals>.add_ids_arguments at 0x7fc50b51f6a0>, <function register_cache_arguments.<locals>.add_cache_arguments at 0x7fc50b51f7e0>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x7fc50c20a020>, <function CLIQuery.handle_query_parameter at 0x7fc50c243c40>, <function register_ids_argument.<locals>.parse_ids_arguments at 0x7fc50b51f740>]
cli.azure.cli.command_modules.profile.custom: Please run "az login" to access your accounts.
cli.knack.cli: Event: CommandInvoker.OnTransformResult [<function _resource_group_transform at 0x7fc50b51c720>, <function _x509_from_base64_to_hex_transform at 0x7fc50b51c7c0>]
cli.knack.cli: Event: CommandInvoker.OnFilterResult []
[]
cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7fc50b4cefc0>]
az_command_data_logger: exit code: 0
cli.__main__: Command ran in 0.205 seconds (init: 0.098, invoke: 0.106)

Expected behavior

exit code of 1 similar to az account show

Environment Summary

$ az --version
azure-cli                         2.57.0 *

core                              2.57.0 *
telemetry                          1.1.0

Dependencies:
msal                              1.26.0
azure-mgmt-resource             23.1.0b2

Python location '/usr/local/pipx/venvs/azure-cli/bin/python'
Extensions directory '/home/vscode/.azure/cliextensions'

Python (Linux) 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]

Additional context

No response

Metadata

Metadata

Labels

ARMaz resource/group/lock/tag/deployment/policy/managementapp/account management-groupAccountaz login/accountAuto-AssignAuto assign by botAuto-ResolveAuto resolve by botAzure CLI TeamThe command of the issue is owned by Azure CLI teamact-identity-squadcustomer-reportedIssues that are reported by GitHub users external to the Azure organization.questionThe issue doesn't require a change to the product in order to be resolved. Most issues start as that

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions