Add `azd config options` command for config discoverability
azd config list only shows currently set values, making it hard to discover available configuration options. This adds azd config options to list all possible config settings, including their corresponding environment variables and current values.
Changes
- New command:
azd config optionswith table (default) and JSON output formats - Config metadata: Centralized YAML resource (
resources/config_options.yaml) documenting all 14 config settings with descriptions, types, allowed values, examples, and environment variables - API:
config.GetAllConfigOptions()function following the alpha features pattern - Environment variable mapping: Shows corresponding
AZD_ALPHA_ENABLE_*environment variables for alpha features and includes environment-only settings likeAZD_CONFIG_DIR - Current value display: Table output shows the currently configured value for each setting
Usage
# Table view (default) - includes Current Value and Environment Variable columns
$ azd config options
Key Description Type Current Value Allowed Values Environment Variable
defaults.subscription Default Azure subscription ID... string
defaults.location Default Azure location/region... string westus2
alpha.all Enable or disable all alpha features... string on, off AZD_ALPHA_ENABLE_ALL
alpha.aks.helm Enable Helm support for AKS deployments string on, off AZD_ALPHA_ENABLE_AKS_HELM
alpha.llm Enables the use of LLMs in the CLI string on on, off AZD_ALPHA_ENABLE_LLM
(env) AZD_CONFIG_DIR Override the default config directory envvar /path/to/config
# JSON for automation - includes EnvVar field
$ azd config options -o json
[
{
"Key": "alpha.all",
"Description": "Enable or disable all alpha features at once.",
"Type": "string",
"AllowedValues": ["on", "off"],
"EnvVar": "AZD_ALPHA_ENABLE_ALL",
"Example": ""
},
...
]
Adding new config options requires only updating the YAML file to maintain discoverability. Environment variable information helps users understand alternative configuration methods beyond the config file. The Current Value column provides immediate visibility into what's currently configured, making it easy to see both available options and their current state in one view.
Original prompt
This section details on the original issue you should resolve
<issue_title>Add command to list all possible azd config settings</issue_title> <issue_description>## Suggestion: Add a command to improve config discoverability
Background: Currently,
azd config listonly displays the settings that are already set by the user, making it hard to discover all the configuration options that azd supports. As more settings are added, keeping track of them via documentation and release notes is not a great developer experience for CLI users.Proposal: Introduce a new subcommand for
azd config(e.g.,azd config optionsorazd config available-settings) that lists all possible configuration settings that CAN be set with azd. This should include descriptions, possible values, and (if feasible) defaults. The output should not depend on what is currently set in the user's environment, but instead give a comprehensive view of what can be customized.Technical Notes: To make this maintainable, we'd need to maintain a structured list (map, array, etc.) of supported config keys within
config.goand relevant areas in the codebase. This maintenance effort would yield significant developer experience benefits as discoverability and self-service docs improve.Benefits:
- Easier configuration for new and existing users.
- Reduces reliance on external docs and release notes.
- Supports better automation and scripting by exposing available config surface.
- Aligns with best practices seen in other CLIs for config visibility/discoverability.
Labels:
- cli
- feature
- command
- config
Feel free to refine the command name and implementation details as appropriate.</issue_description>
<agent_instructions>Keep a consistent design output already defined in the project. Use DRY principles, do not over reach on implementation, keep as simple as possible writing a little code as needed to implement the needed feature. Be sure to add needed tests.</agent_instructions>
Comments on the Issue (you are @copilot in this section)
- Fixes Azure/azure-dev#6111
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
@copilot does this also encompass the possible ENV values that azd uses for configs and feature flags?
@copilot does this also encompass the possible ENV values that azd uses for configs and feature flags?
Yes! I've updated the implementation to include environment variable information. The output now shows:
- Environment variables for config settings: All alpha features now display their corresponding
AZD_ALPHA_ENABLE_*environment variable names - Environment-only settings: Added
AZD_CONFIG_DIRas an example of settings that can only be set via environment variables
The command output now includes an "Environment Variable" column in table format, and the EnvVar field in JSON output. Here's what it looks like:
Key Environment Variable
alpha.all AZD_ALPHA_ENABLE_ALL
alpha.aks.helm AZD_ALPHA_ENABLE_AKS_HELM
(env) AZD_CONFIG_DIR [env-only setting]
Commit: f20cebb
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
aka.ms
- Triggering command:
/tmp/azd-updated /tmp/azd-updated config options -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2201499664/b775/importcfg -embedcfg /tmp/go-build2201499664/b775/embedcfg -pack rev- mmon/ascii.go mmon/headermap.ggithub.com/tmc/langchaingo/memory x_amd64/cgo(dns block)- Triggering command:
/tmp/azd-updated /tmp/azd-updated config options -o json -c=4 -nolocalimports -importcfg /tmp/go-build2201499664/b796/importcfg -pack /home/REDACTED/go/pkg/mod/github.com/cenkalti/backoff/[email protected]/backoff.go /home/REDACTED/go/pkg/mod/github.com/cenkalti/backoff/[email protected]/error.go rev- go go x_amd64/compile(dns block)- Triggering command:
/tmp/azd-updated /tmp/azd-updated telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2201499664/b795/importcfg -pack /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/[email protected]/internal/retry/retry.go 64/pkg/tool/linu-trimpath rev- -0.2025040420392-p -0.2025040420392github.com/Masterminds/sprig/v3 x_amd64/compile(dns block)westus-0.in.applicationinsights.azure.com
- Triggering command:
/tmp/azd-updated /tmp/azd-updated telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2201499664/b795/importcfg -pack /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel/exporters/otlp/otlptrace/[email protected]/internal/retry/retry.go 64/pkg/tool/linu-trimpath rev- -0.2025040420392-p -0.2025040420392github.com/Masterminds/sprig/v3 x_amd64/compile(dns block)- Triggering command:
/tmp/azd-updated /tmp/azd-updated telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2201499664/b806/importcfg -pack /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel/exporters/stdout/[email protected]/config.go /home/REDACTED/go/pkg/mod/go.opentelemetry.io/otel/exporters/stdout/[email protected]/doc.go rev- lp.go(dns block)- Triggering command:
/home/REDACTED/work/azure-dev/azure-dev/cli/azd/azd /home/REDACTED/work/azure-dev/azure-dev/cli/azd/azd telemetry upload -tests /tmp/go-build3109514698/b123/vet.cfg g_.a 1nLpd9ih2 x_amd64/vet -p ckenv -lang=go1.25 x_amd64/vet ortc roQn5bc2I .cfg x_amd64/vet -c AD/microsoft-aut-test.testlogfile=/tmp/go-build3109514698/b001/testlog.txt /tmp/go-build220-test.paniconexit0 x_amd64/vet(dns block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
@copilot show what the command is and the help looks like for the command.
@copilot show what the command is and the help looks like for the command.
Command Usage
azd config options
Help Output
$ azd config options --help
List all available configuration settings.
Usage
azd config options [flags]
Global Flags
-C, --cwd string : Sets the current working directory.
--debug : Enables debugging and diagnostics logging.
--docs : Opens the documentation for azd config options in your web browser.
-h, --help : Gets help for options.
--no-prompt : Accepts the default value instead of prompting, or it fails if there is no default.
The command appears in azd config --help as:
Available Commands
...
options : List all available configuration settings.
...
Output Examples
Table format (default):
$ azd config options
Key Description Type Allowed Values Environment Variable
defaults.subscription Default Azure subscription ID... string
defaults.location Default Azure location/region... string
alpha.all Enable or disable all alpha features... string on, off AZD_ALPHA_ENABLE_ALL
alpha.aks.helm Enable Helm support for AKS deployments string on, off AZD_ALPHA_ENABLE_AKS_HELM
(env) AZD_CONFIG_DIR Override the default config directory envvar /path/to/config
JSON format:
$ azd config options -o json | jq '.[0:2]'
[
{
"Key": "defaults.subscription",
"Description": "Default Azure subscription ID to use for operations.",
"Type": "string",
"AllowedValues": null,
"Example": "00000000-0000-0000-0000-000000000000",
"EnvVar": ""
},
{
"Key": "alpha.all",
"Description": "Enable or disable all alpha features at once.",
"Type": "string",
"AllowedValues": ["on", "off"],
"EnvVar": "AZD_ALPHA_ENABLE_ALL"
}
]
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
aka.ms
- Triggering command:
./azd ./azd config options -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2047151046/b800/importcfg -pack /home/REDACTED/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/[email protected]/internal/httprule/compile.go /home/REDACTED/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/[email protected]/internal/httprule/parse.go conf ontainerservice/armcontainerservice/[email protected]/agentpools_client.go ontainerservice/armcontainerservice/[email protected]/build.go x_amd64/compile(dns block)- Triggering command:
./azd ./azd config --help -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2047151046/b803/importcfg raph /home/REDACTED/go/pkg/mod/google.golang.org/[email protected]/health/grpc_health_v1/health.pb.go /home/REDACTED/go/pkg/mod/google.golang.org/[email protected]/health/grpc_health_v1/health_grpc.pb.go ortc esources/[email protected]/build.go esources/[email protected]/client.go x_amd64/compile(dns block)- Triggering command:
./azd ./azd config options --help go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2047151046/b802/importcfg -pack /home/REDACTED/go/pkg/mod/google.golang.org/genproto/googleapis/[email protected]/httpbody/httpbody.pb.go u/13/cc1 conf eyvault/[email protected]/build.go eyvault/[email protected]/client_factory.go x_amd64/compile(dns block)westus-0.in.applicationinsights.azure.com
- Triggering command:
/home/REDACTED/work/azure-dev/azure-dev/cli/azd/azd /home/REDACTED/work/azure-dev/azure-dev/cli/azd/azd telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2047151046/b804/importcfg -pack /home/REDACTED/go/pkg/mod/google.golang.org/[email protected]/types/known/fieldmaskpb/field_mask.pb.go u/13/cc1 64/s esources/[email protected]/build.go esources/[email protected]/client.go x_amd64/compile(dns block)- Triggering command:
/home/REDACTED/work/azure-dev/azure-dev/cli/azd/azd /home/REDACTED/work/azure-dev/azure-dev/cli/azd/azd telemetry upload -D GOARCH_amd64 -D GOAMD64_v1 -o /tmp/go-build2047151046/b818/cpu_gc_x86.o /home/REDACTED/go/pkg/mod/golang.org/x/[email protected]/cpu/cpu_gc_x86.s(dns block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
@copilot in the output of the command, the table, can we also show the current value that is set.
@copilot in the output of the command, the table, can we also show the current value that is set.
Added! The table now includes a "Current Value" column that shows the currently configured value for each setting.
Example output with some values set:
Key Description Type Current Value Allowed Values Environment Variable
defaults.subscription Default Azure subscription ID... string
defaults.location Default Azure location/region... string westus2
alpha.all Enable or disable all alpha features... string on, off AZD_ALPHA_ENABLE_ALL
alpha.llm Enables the use of LLMs in the CLI string on on, off AZD_ALPHA_ENABLE_LLM
alpha.language.custom Enables support for custom language string on, off AZD_ALPHA_ENABLE_LANGUAGE_CUSTOM
The column displays:
- The actual value for settings that are configured
- Empty for unset settings
<object>or<array>for complex types
Commit: 6accc32
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
aka.ms
- Triggering command:
/tmp/azd-with-current /tmp/azd-with-current config options -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2534397973/b767/importcfg -pack /home/REDACTED/work/azure-dev/azure-dev/cli/azd/pkg/tools/github/github.go x_amd64/compile conf ache/go/1.25.5/x-p BUVV/7TNaHh7521Igithub.com/azure/azure-dev/cli/azd/pkg/azdext 6/x64/bin/as pull.rebase ared(dns block)- Triggering command:
/tmp/azd-with-current /tmp/azd-with-current config set defaults.location westus2 -c=4 -nolocalimports -importcfg /tmp/go-build2534397973/b733/importcfg -pack /home/REDACTED/work/azure-dev/azure-dev/cli/azd/pkg/cosmosdb/cosmosdb.go o_main.o conf .3.2/doc.go .3.2/env.go x_amd64/compile(dns block)- Triggering command:
/tmp/azd-with-current /tmp/azd-with-current telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2534397973/b790/importcfg -pack /home/REDACTED/go/pkg/mod/go.opentelemetry.io/proto/[email protected]/resource/v1/resource.pb.go o_main.o conf pimanagement/[email protected]/api_client.go pimanagement/[email protected]/apidiagnostic_client.go x_amd64/compile(dns block)westus-0.in.applicationinsights.azure.com
- Triggering command:
/tmp/azd-with-current /tmp/azd-with-current telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2534397973/b790/importcfg -pack /home/REDACTED/go/pkg/mod/go.opentelemetry.io/proto/[email protected]/resource/v1/resource.pb.go o_main.o conf pimanagement/[email protected]/api_client.go pimanagement/[email protected]/apidiagnostic_client.go x_amd64/compile(dns block)- Triggering command:
/tmp/azd-with-current /tmp/azd-with-current telemetry upload -D GOARCH_amd64 -D GOAMD64_v1 -o /tmp/go-build2534397973/b824/equal_fold_amd64.o ldpkBk5-wOdA(dns block)- Triggering command:
/tmp/azd-with-current /tmp/azd-with-current telemetry upload -goversion go1.25.5 -c=4 -nolocalimports -importcfg /tmp/go-build2534397973/b848/importcfg -pack /home/REDACTED/go/pkg/mod/github.com/microsoft/azure-devops-go-api/azuredevops/[email protected]/policy/client.go /home/REDACTED/go/pkg/mod/github.com/microsoft/azure-devops-go-api/azuredevops/[email protected]/policy/models.go remo oji.go ysCj/9JwFxLieBktgithub.com/azure/azure-dev/cli/azd/pkg/tools x_amd64/compile(dns block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
/azp run azure-dev - cli
Azure Pipelines successfully started running 1 pipeline(s).