Skip to content

az functionapp function keys list broken in 2.87.0 #33516

@hewini

Description

@hewini

Describe the bug

The command az functionapp function keys list does not parse the returned data correctly. The keys are retrieved as intended but the output is null. This was working in version 2.86.0.

Debug log:
cli.knack.cli: Command arguments: ['functionapp', 'function', 'keys', 'list', '--resource-group', 'rg-csi022-BankInformation-test', '--name', 'fa-csi022-hrplus-bankexport-test', '--function-name', 'TransformBank10', '--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 0x000001F5B16A9D00>, <function OutputProducer.on_global_arguments at 0x000001F5B1841DA0>, <function CLIQuery.on_global_arguments at 0x000001F5B188FE20>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Using packaged command index for profile 'latest'.
cli.azure.cli.core: Modules found from index for 'functionapp': ['azure.cli.command_modules.appservice', 'azure.cli.command_modules.serviceconnector']
cli.azure.cli.core: Loading command modules...
cli.azure.cli.core: Loaded command modules in parallel:
cli.azure.cli.core: Name Load Time Groups Commands
cli.azure.cli.core: serviceconnector 0.095 20 331
cli.azure.cli.core: appservice 0.137 91 303
cli.azure.cli.core: Total (2) 0.142 111 634
cli.azure.cli.core: Loaded 109 groups, 634 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command : functionapp function keys list
cli.azure.cli.core: Command table: functionapp function keys list
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x000001F5B1EB34C0>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\acp79.azure\commands\2026-06-09.10-08-29.functionapp_function_keys_list.47568.log'.
az_command_data_logger: command args: functionapp function keys list --resource-group {} --name {} --function-name {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument..add_subscription_parameter at 0x000001F5B1F0C540>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x000001F5B1F0CB80>, <function register_global_policy_argument..add_global_policy_argument at 0x000001F5B1F0CCC0>, <function register_cache_arguments..add_cache_arguments at 0x000001F5B1F0CD60>, <function register_upcoming_breaking_change_info..update_breaking_change_info at 0x000001F5B1F0CE00>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x000001F5B1841E40>, <function CLIQuery.handle_query_parameter at 0x000001F5B188FEC0>, <function register_ids_argument..parse_ids_arguments at 0x000001F5B1F0CC20>]
cli.azure.cli.core.commands.client_factory: Getting management service client client_type=WebSiteManagementClient
cli.azure.cli.core.auth.persistence: build_persistence: location='C:\Users\acp79\.azure\msal_token_cache.bin', encrypt=True
cli.azure.cli.core.auth.binary_cache: load: C:\Users\acp79.azure\msal_http_cache.bin
urllib3.util.retry: Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)
msal.application: Broker enabled? True
cli.azure.cli.core.auth.credential_adaptor: CredentialAdaptor.get_token_info: scopes=('https://management.core.windows.net//.default',), options={}
cli.azure.cli.core.auth.msal_credentials: UserCredential.acquire_token: scopes=['https://management.core.windows.net//.default'], claims_challenge=None, kwargs={}
msal.application: Cache hit an AT
msal.telemetry: Generate or reuse correlation_id: 348b5e84-1798-4af5-9ce7-449186d780a7
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/a012dae1-f549-4616-ba99-5453b40bd3e9/resourceGroups/rg-csi022-BankInformation-test/providers/Microsoft.Web/sites/fa-csi022-hrplus-bankexport-test/functions/TransformBank10/listkeys?api-version=2025-05-01'
cli.azure.cli.core.sdk.policies: Request method: 'POST'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies: 'Accept': 'application/json'
cli.azure.cli.core.sdk.policies: 'x-ms-client-request-id': '666a2b9c-63da-11f1-a60a-c0a810f4a203'
cli.azure.cli.core.sdk.policies: 'CommandName': 'functionapp function keys list'
cli.azure.cli.core.sdk.policies: 'ParameterSetName': '--resource-group --name --function-name --debug'
cli.azure.cli.core.sdk.policies: 'User-Agent': 'AZURECLI/2.87.0 (MSI) azsdk-python-core/1.39.0 Python/3.13.13 (Windows-11-10.0.26200-SP0)'
cli.azure.cli.core.sdk.policies: 'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: This request has no body
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "POST /subscriptions/a012dae1-f549-4616-ba99-5453b40bd3e9/resourceGroups/rg-csi022-BankInformation-test/providers/Microsoft.Web/sites/fa-csi022-hrplus-bankexport-test/functions/TransformBank10/listkeys?api-version=2025-05-01 HTTP/1.1" 200 70
cli.azure.cli.core.sdk.policies: Response status: 200
cli.azure.cli.core.sdk.policies: Response headers:
cli.azure.cli.core.sdk.policies: 'Cache-Control': 'no-cache'
cli.azure.cli.core.sdk.policies: 'Pragma': 'no-cache'
cli.azure.cli.core.sdk.policies: 'Content-Length': '70'
cli.azure.cli.core.sdk.policies: 'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies: 'Expires': '-1'
cli.azure.cli.core.sdk.policies: 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
cli.azure.cli.core.sdk.policies: 'x-ms-request-id': '493a3737-cb2e-438d-84f2-a92b4bf1aa9e'
cli.azure.cli.core.sdk.policies: 'X-AspNet-Version': '4.0.30319'
cli.azure.cli.core.sdk.policies: 'X-Powered-By': 'ASP.NET'
cli.azure.cli.core.sdk.policies: 'x-ms-operation-identifier': 'tenantId=193743c3-6876-4c23-8fad-238f9423fe00,objectId=a592fdb0-fea4-4ea4-b66d-4860c062dca1/norwayeast/0f13dd39-a483-42bd-9239-3b380c3d7767'
cli.azure.cli.core.sdk.policies: 'x-ms-ratelimit-remaining-subscription-writes': '199'
cli.azure.cli.core.sdk.policies: 'x-ms-ratelimit-remaining-subscription-global-writes': '2999'
cli.azure.cli.core.sdk.policies: 'x-ms-correlation-request-id': '55d73f24-1b32-43ee-9059-ae12f4936800'
cli.azure.cli.core.sdk.policies: 'x-ms-routing-request-id': 'NORWAYEAST:20260609T080830Z:55d73f24-1b32-43ee-9059-ae12f4936800'
cli.azure.cli.core.sdk.policies: 'X-Content-Type-Options': 'nosniff'
cli.azure.cli.core.sdk.policies: 'X-Cache': 'CONFIG_NOCACHE'
cli.azure.cli.core.sdk.policies: 'X-MSEdge-Ref': 'Ref A: 4A15531A6FBF4D41AEC0668BD9C4BF5C Ref B: GVX011092611060 Ref C: 2026-06-09T08:08:30Z'
cli.azure.cli.core.sdk.policies: 'Date': 'Tue, 09 Jun 2026 08:08:30 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"default":"V1ItTmKlNRr2MTqSQ-dZR4P-o3wEptKRlsxHSEn5MQYKAxFurAe17w=="}
cli.knack.cli: Event: CommandInvoker.OnTransformResult [<function _resource_group_transform at 0x000001F5B1F0C900>, <function x509_from_base64_to_hex_transform at 0x000001F5B1F0C9A0>]
cli.knack.cli: Event: CommandInvoker.OnFilterResult []
{
"id": null,
"kind": null,
"name": null,
"properties": null,
"type": null
}

cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x000001F5B1EB3740>]
az_command_data_logger: exit code: 0
cli.main: Command ran in 1.448 seconds (init: 0.081, invoke: 1.367)
telemetry.main: Begin splitting cli events and extra events, total events: 1
telemetry.main: Finish splitting cli events and extra events, cli events: 1
telemetry.save: Save telemetry record of length 3958 in cache file under C:\Users\acp79.azure\telemetry\20260609100831148
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\acp79.azure C:\Users\acp79.azure\telemetry\20260609100831148"
telemetry.process: Return from creating process 8412
telemetry.main: Finish creating telemetry upload process.

Related command

az functionapp function keys list

Errors

{
"id": null,
"kind": null,
"name": null,
"properties": null,
"type": null
}

Issue script & Debug output

cli.knack.cli: Command arguments: ['functionapp', 'function', 'keys', 'list', '--resource-group', 'rg-csi022-BankInformation-test', '--name', 'fa-csi022-hrplus-bankexport-test', '--function-name', 'TransformBank10', '--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 0x000001F5B16A9D00>, <function OutputProducer.on_global_arguments at 0x000001F5B1841DA0>, <function CLIQuery.on_global_arguments at 0x000001F5B188FE20>]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Using packaged command index for profile 'latest'.
cli.azure.cli.core: Modules found from index for 'functionapp': ['azure.cli.command_modules.appservice', 'azure.cli.command_modules.serviceconnector']
cli.azure.cli.core: Loading command modules...
cli.azure.cli.core: Loaded command modules in parallel:
cli.azure.cli.core: Name Load Time Groups Commands
cli.azure.cli.core: serviceconnector 0.095 20 331
cli.azure.cli.core: appservice 0.137 91 303
cli.azure.cli.core: Total (2) 0.142 111 634
cli.azure.cli.core: Loaded 109 groups, 634 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command : functionapp function keys list
cli.azure.cli.core: Command table: functionapp function keys list
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x000001F5B1EB34C0>]
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\acp79.azure\commands\2026-06-09.10-08-29.functionapp_function_keys_list.47568.log'.
az_command_data_logger: command args: functionapp function keys list --resource-group {} --name {} --function-name {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument..add_subscription_parameter at 0x000001F5B1F0C540>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument..add_ids_arguments at 0x000001F5B1F0CB80>, <function register_global_policy_argument..add_global_policy_argument at 0x000001F5B1F0CCC0>, <function register_cache_arguments..add_cache_arguments at 0x000001F5B1F0CD60>, <function register_upcoming_breaking_change_info..update_breaking_change_info at 0x000001F5B1F0CE00>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x000001F5B1841E40>, <function CLIQuery.handle_query_parameter at 0x000001F5B188FEC0>, <function register_ids_argument..parse_ids_arguments at 0x000001F5B1F0CC20>]
cli.azure.cli.core.commands.client_factory: Getting management service client client_type=WebSiteManagementClient
cli.azure.cli.core.auth.persistence: build_persistence: location='C:\Users\acp79\.azure\msal_token_cache.bin', encrypt=True
cli.azure.cli.core.auth.binary_cache: load: C:\Users\acp79.azure\msal_http_cache.bin
urllib3.util.retry: Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)
msal.application: Broker enabled? True
cli.azure.cli.core.auth.credential_adaptor: CredentialAdaptor.get_token_info: scopes=('https://management.core.windows.net//.default',), options={}
cli.azure.cli.core.auth.msal_credentials: UserCredential.acquire_token: scopes=['https://management.core.windows.net//.default'], claims_challenge=None, kwargs={}
msal.application: Cache hit an AT
msal.telemetry: Generate or reuse correlation_id: 348b5e84-1798-4af5-9ce7-449186d780a7
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/a012dae1-f549-4616-ba99-5453b40bd3e9/resourceGroups/rg-csi022-BankInformation-test/providers/Microsoft.Web/sites/fa-csi022-hrplus-bankexport-test/functions/TransformBank10/listkeys?api-version=2025-05-01'
cli.azure.cli.core.sdk.policies: Request method: 'POST'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies: 'Accept': 'application/json'
cli.azure.cli.core.sdk.policies: 'x-ms-client-request-id': '666a2b9c-63da-11f1-a60a-c0a810f4a203'
cli.azure.cli.core.sdk.policies: 'CommandName': 'functionapp function keys list'
cli.azure.cli.core.sdk.policies: 'ParameterSetName': '--resource-group --name --function-name --debug'
cli.azure.cli.core.sdk.policies: 'User-Agent': 'AZURECLI/2.87.0 (MSI) azsdk-python-core/1.39.0 Python/3.13.13 (Windows-11-10.0.26200-SP0)'
cli.azure.cli.core.sdk.policies: 'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: This request has no body
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "POST /subscriptions/a012dae1-f549-4616-ba99-5453b40bd3e9/resourceGroups/rg-csi022-BankInformation-test/providers/Microsoft.Web/sites/fa-csi022-hrplus-bankexport-test/functions/TransformBank10/listkeys?api-version=2025-05-01 HTTP/1.1" 200 70
cli.azure.cli.core.sdk.policies: Response status: 200
cli.azure.cli.core.sdk.policies: Response headers:
cli.azure.cli.core.sdk.policies: 'Cache-Control': 'no-cache'
cli.azure.cli.core.sdk.policies: 'Pragma': 'no-cache'
cli.azure.cli.core.sdk.policies: 'Content-Length': '70'
cli.azure.cli.core.sdk.policies: 'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies: 'Expires': '-1'
cli.azure.cli.core.sdk.policies: 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
cli.azure.cli.core.sdk.policies: 'x-ms-request-id': '493a3737-cb2e-438d-84f2-a92b4bf1aa9e'
cli.azure.cli.core.sdk.policies: 'X-AspNet-Version': '4.0.30319'
cli.azure.cli.core.sdk.policies: 'X-Powered-By': 'ASP.NET'
cli.azure.cli.core.sdk.policies: 'x-ms-operation-identifier': 'tenantId=193743c3-6876-4c23-8fad-238f9423fe00,objectId=a592fdb0-fea4-4ea4-b66d-4860c062dca1/norwayeast/0f13dd39-a483-42bd-9239-3b380c3d7767'
cli.azure.cli.core.sdk.policies: 'x-ms-ratelimit-remaining-subscription-writes': '199'
cli.azure.cli.core.sdk.policies: 'x-ms-ratelimit-remaining-subscription-global-writes': '2999'
cli.azure.cli.core.sdk.policies: 'x-ms-correlation-request-id': '55d73f24-1b32-43ee-9059-ae12f4936800'
cli.azure.cli.core.sdk.policies: 'x-ms-routing-request-id': 'NORWAYEAST:20260609T080830Z:55d73f24-1b32-43ee-9059-ae12f4936800'
cli.azure.cli.core.sdk.policies: 'X-Content-Type-Options': 'nosniff'
cli.azure.cli.core.sdk.policies: 'X-Cache': 'CONFIG_NOCACHE'
cli.azure.cli.core.sdk.policies: 'X-MSEdge-Ref': 'Ref A: 4A15531A6FBF4D41AEC0668BD9C4BF5C Ref B: GVX011092611060 Ref C: 2026-06-09T08:08:30Z'
cli.azure.cli.core.sdk.policies: 'Date': 'Tue, 09 Jun 2026 08:08:30 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"default":"V1ItTmKlNRr2MTqSQ-dZR4P-o3wEptKRlsxHSEn5MQYKAxFurAe17w=="}
cli.knack.cli: Event: CommandInvoker.OnTransformResult [<function _resource_group_transform at 0x000001F5B1F0C900>, <function x509_from_base64_to_hex_transform at 0x000001F5B1F0C9A0>]
cli.knack.cli: Event: CommandInvoker.OnFilterResult []
{
"id": null,
"kind": null,
"name": null,
"properties": null,
"type": null
}

cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x000001F5B1EB3740>]
az_command_data_logger: exit code: 0
cli.main: Command ran in 1.448 seconds (init: 0.081, invoke: 1.367)
telemetry.main: Begin splitting cli events and extra events, total events: 1
telemetry.main: Finish splitting cli events and extra events, cli events: 1
telemetry.save: Save telemetry record of length 3958 in cache file under C:\Users\acp79.azure\telemetry\20260609100831148
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\acp79.azure C:\Users\acp79.azure\telemetry\20260609100831148"
telemetry.process: Return from creating process 8412
telemetry.main: Finish creating telemetry upload process.

Expected behavior

The output:
{
"id": null,
"kind": null,
"name": null,
"properties": null,
"type": null
}
should contain the correct values and not null.

Environment Summary

PS C:\cs\repos> az --version
azure-cli 2.87.0

core 2.87.0
telemetry 1.1.0

Dependencies:
msal 1.36.0
azure-mgmt-resource 24.0.0

Python location 'C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe'
Config directory 'C:\Users\acp79.azure'
Extensions directory 'C:\Users\acp79.azure\cliextensions'

Python (Windows) 3.13.13 (tags/v3.13.13:01104ce, Apr 7 2026, 19:25:48) [MSC v.1944 64 bit (AMD64)]

Legal docs and information: aka.ms/AzureCliLegal

Additional context

No response

Metadata

Metadata

Labels

Auto-AssignAuto assign by botBreaking ChangeFunctionsaz functionappService AttentionThis issue is responsible by Azure service team.act-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
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