{"record":{"id":"4834f66c3532a611","repo":"vectordotdev/vector","slug":"unsupported-provider","errorCode":null,"errorMessage":"UNSUPPORTED_PROVIDER","messagePattern":"UNSUPPORTED_PROVIDER","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"vdev/src/utils/features.rs","lineNumber":155,"sourceCode":"        .collect();\n\n    from_config(&config, &declared_features)\n}\n\nfn contains_yaml_merge_key(value: &serde_yaml::Value) -> bool {\n    match value {\n        serde_yaml::Value::Sequence(values) => values.iter().any(contains_yaml_merge_key),\n        serde_yaml::Value::Mapping(mapping) => mapping\n            .iter()\n            .any(|(key, value)| key.as_str() == Some(\"<<\") || contains_yaml_merge_key(value)),\n        serde_yaml::Value::Tagged(tagged) => contains_yaml_merge_key(&tagged.value),\n        _ => false,\n    }\n}\n\nfn from_config(config: &FeatureConfig, declared_features: &FeatureSet) -> Result<Vec<String>> {\n    if config.provider.is_some() {\n        bail!(UNSUPPORTED_PROVIDER);\n    }\n    if [\n        &config.enrichment_tables,\n        &config.secret,\n        &config.sources,\n        &config.transforms,\n        &config.sinks,\n    ]\n    .into_iter()\n    .flat_map(|section| section.values())\n    .any(|component| has_dynamic_reference(&component.r#type))\n    {\n        bail!(UNSUPPORTED_DYNAMIC_FEATURE_SELECTOR);\n    }\n    let mut features = FeatureSet::default();\n    add_option(&mut features, \"api\", config.api.as_ref());\n\n    get_features(","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/vectordotdev/vector/blob/bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013/vdev/src/utils/features.rs#L137-L173","documentation":"from_config rejects FeatureConfig files that set the top-level `provider` key with the UNSUPPORTED_PROVIDER message. Configuration providers are not supported when computing the feature set, because provider-generated config cannot be statically resolved to a list of cargo features.","triggerScenarios":"Calling load_and_extract (or from_config via the features command) on a config whose top level contains a `provider:` section (e.g. `provider: {type: vault, ...}`).","commonSituations":"Reusing an existing Vector config that loads secrets/sections from a config provider as input to the feature-extraction tooling; testing a provider-based setup with the vdev features command.","solutions":["Remove the `provider` section from the config before running feature extraction","Generate/expand the provider-based config into a plain static config first, then feed that to the tool","Use a different config file without provider sections for feature computation"],"exampleFix":"// before\nprovider:\n  type: vault\n  url: http://127.0.0.1:8200\napi:\n  enabled: true\n// after\napi:\n  enabled: true","handlingStrategy":"validation","validationCode":"fn has_provider(cfg: &serde_yaml::Value) -> bool {\n    cfg.get(\"provider\").is_some()\n}\n// reject before calling the tool\nif has_provider(&cfg) { panic!(\"config uses a provider; expand to static config first\"); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep provider-based configs separate from configs used for static feature analysis","Pre-render provider configs into plain configs in the pipeline","Grep configs for a top-level `provider:` key before running vdev features"],"tags":["rust","config","validation","unsupported-feature"],"backgroundTag":"unsupported-config-value","analyzedSha":"bdb87aeaa4c4ff27c0ba643c1c77b21bf2ef4013","analyzedAt":"2026-09-16T02:53:35.741Z","contentChangedAt":"2026-09-16T02:53:35.741Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}