GitHub
05/29/2026, 3:31 PMmeltano config list shows every setting for a plugin regardless of whether the user has configured it. For plugins with many settings, this buries useful information in noise. Most users checking their config only care about what they've set and what they still need to set.
Here is real output from meltano config list tap-postgres after configuring just 4 settings (host, user, database, filter_schemas). The user still sees all 40 settings:
$ meltano config list tap-postgres — full output (40 settings)
batch_config.encoding.compression [env: TAP_POSTGRES_BATCH_CONFIG_ENCODING_COMPRESSION] current value: None (default)
Batch Compression Format: Compression format to use for batch files.
batch_config.encoding.format [env: TAP_POSTGRES_BATCH_CONFIG_ENCODING_FORMAT] current value: None (default)
Batch Encoding Format: Format to use for batch files.
batch_config.storage.prefix [env: TAP_POSTGRES_BATCH_CONFIG_STORAGE_PREFIX] current value: None (default)
Batch Storage Prefix: Prefix to use when writing batch files.
batch_config.storage.root [env: TAP_POSTGRES_BATCH_CONFIG_STORAGE_ROOT] current value: None (default)
Batch Storage Root: Root path to use when writing batch files.
database [env: TAP_POSTGRES_DATABASE] current value: 'mydb' (from `meltano.yml`)
Database: Database name. Note if sqlalchemy_url is set this will be ignored.
dates_as_string [env: TAP_POSTGRES_DATES_AS_STRING] current value: False (default)
Dates As String: Defaults to false, if true, date, and timestamp fields will be Strings.
default_replication_method [env: TAP_POSTGRES_DEFAULT_REPLICATION_METHOD] current value: 'FULL_TABLE' (default)
Default Replication Method: Replication method to use if there is not a catalog entry to override this choice.
faker_config.locale [env: TAP_POSTGRES_FAKER_CONFIG_LOCALE] current value: None (default)
faker_config.seed [env: TAP_POSTGRES_FAKER_CONFIG_SEED] current value: None (default)
filter_schemas [env: TAP_POSTGRES_FILTER_SCHEMAS] current value: ['public'] (from `meltano.yml`)
Filter Schemas: If an array of schema names is provided, the tap will only process the specified Postgres schemas.
flattening_enabled [env: TAP_POSTGRES_FLATTENING_ENABLED] current value: None (default)
flattening_max_depth [env: TAP_POSTGRES_FLATTENING_MAX_DEPTH] current value: None (default)
flattening_max_key_length [env: TAP_POSTGRES_FLATTENING_MAX_KEY_LENGTH] current value: None (default)
host [env: TAP_POSTGRES_HOST] current value: 'localhost' (from `meltano.yml`)
Host: Hostname for postgres instance. Note if sqlalchemy_url is set this will be ignored.
json_as_object [env: TAP_POSTGRES_JSON_AS_OBJECT] current value: False (default)
max_record_count [env: TAP_POSTGRES_MAX_RECORD_COUNT] current value: None (default)
password [env: TAP_POSTGRES_PASSWORD] current value: None (default)
Password: Password used to authenticate. Note if sqlalchemy_url is set this will be ignored.
port [env: TAP_POSTGRES_PORT] current value: 5432 (default)
Port: The port on which postgres is awaiting connection.
replication_slot_name [env: TAP_POSTGRES_REPLICATION_SLOT_NAME] current value: 'tappostgres' (default)
sqlalchemy_url [env: TAP_POSTGRES_SQLALCHEMY_URL] current value: None (default)
SQLAlchemy URL: Example postgresql://[username]:[password]@localhost:5432/[db_name]
ssh_tunnel.enable [env: TAP_POSTGRES_SSH_TUNNEL_ENABLE] current value: False (default)
ssh_tunnel.host [env: TAP_POSTGRES_SSH_TUNNEL_HOST] current value: None (default)
ssh_tunnel.port [env: TAP_POSTGRES_SSH_TUNNEL_PORT] current value: 22 (default)
ssh_tunnel.username [env: TAP_POSTGRES_SSH_TUNNEL_USERNAME] current value: None (default)
ssh_tunnel.private_key [env: TAP_POSTGRES_SSH_TUNNEL_PRIVATE_KEY] current value: None (default)
ssh_tunnel.private_key_password [env: TAP_POSTGRES_SSH_TUNNEL_PRIVATE_KEY_PASSWORD] current value: None (default)
ssl_certificate_authority [env: TAP_POSTGRES_SSL_CERTIFICATE_AUTHORITY] current value: '~/.postgresql/root.crl' (default)
ssl_client_certificate [env: TAP_POSTGRES_SSL_CLIENT_CERTIFICATE] current value: '~/.postgresql/postgresql.crt' (default)
ssl_client_certificate_enable [env: TAP_POSTGRES_SSL_CLIENT_CERTIFICATE_ENABLE] current value: False (default)
ssl_client_private_key [env: TAP_POSTGRES_SSL_CLIENT_PRIVATE_KEY] current value: (redacted) (default)
ssl_enable [env: TAP_POSTGRES_SSL_ENABLE] current value: False (default)
ssl_mode [env: TAP_POSTGRES_SSL_MODE] current value: 'verify-full' (default)
ssl_storage_directory [env: TAP_POSTGRES_SSL_STORAGE_DIRECTORY] current value: '.secrets' (default)
stream_map_config [env: TAP_POSTGRES_STREAM_MAP_CONFIG] current value: None (default)
stream_maps [env: TAP_POSTGRES_STREAM_MAPS] current value: None (default)
stream_options [env: TAP_POSTGRES_STREAM_OPTIONS] current value: None (default)
use_singer_decimal [env: TAP_POSTGRES_USE_SINGER_DECIMAL] current value: None (default)
user [env: TAP_POSTGRES_USER] current value: 'postgres' (from `meltano.yml`)
User: User name used to authenticate. Note if sqlalchemy_url is set this will be ignored.
By default, meltano config list should only show required settings (from settings_group_validation) and settings the user has explicitly configured (source is not DEFAULT). An --all flag would preserve the current behavior for users who need the full list.
Example of proposed default output for the same tap-postgres configuration above:
$ meltano config list tap-postgres
database [env: TAP_POSTGRES_DATABASE] current value: 'mydb' (from `meltano.yml`)
Database: Database name. Note if sqlalchemy_url is set this will be ignored.
filter_schemas [env: TAP_POSTGRES_FILTER_SCHEMAS] current value: ['public'] (from `meltano.yml`)
Filter Schemas: If an array of schema names is provided, the tap will only process the specified Postgres schemas.
host [env: TAP_POSTGRES_HOST] current value: 'localhost' (from `meltano.yml`)
Host: Hostname for postgres instance. Note if sqlalchemy_url is set this will be ignored.
user [env: TAP_POSTGRES_USER] current value: 'postgres' (from `meltano.yml`)
User: User name used to authenticate. Note if sqlalchemy_url is set this will be ignored.
36 optional settings at defaults are hidden. Use --all to show all settings.
And --all would produce the current (full) output.
Some considerations:
• This changes default behavior. Scripts that parse meltano config list output and tests that assert on specific output lines would need updates.
• The --extras flag should compose naturally with --all — they filter on orthogonal axes (setting type vs. configuration status).
• The --all flag pattern is already used in other Meltano CLI commands (meltano state, meltano validate, meltano select).
• Related: #6422 (visibility of setting values across all stores).
Possible addition: --filter option
A --filter option with case-insensitive substring matching on setting names could also help when debugging a specific group of related settings. For example, a user debugging SSL configuration currently has to scroll past 30+ unrelated settings to find the 7 ssl_* ones:
```
$ meltano config list tap-postgres --filter ssl
ssl_certificate_authority [env: TAP_POSTGRES_SSL_CERTIFICATE_AUTHORITY] current value: '~/.postgresql/root.crl' (default)
SSL Certificate Authority: The certificate authority that should be used to verify the server's identity.
ssl_client_certificate [env: TAP_POSTGRES_SSL_CLIENT_CERTIFICATE] current value: '~/.postgresql/postgresql.crt' (default)
SSL Client Certificate: The certificate that should be used to verify your identity to the server.
ssl_client_certificate_enable [env: TAP_POSTGRES_SSL_CLIENT_CERTIFICATE_ENABLE] current value: False (default)
SSL Client Certificate Enable: Whether or not to provide client-side certificates as a method of authentication to the ser…
meltano/meltanoGitHub
05/29/2026, 3:31 PM