{"record":{"id":"3db9b88e03b2b629","repo":"jdx/mise","slug":"provider-is-inactive-reason-3db9b8","errorCode":null,"errorMessage":"provider '{}' is inactive: {reason}","messagePattern":"provider '(.+?)' is inactive: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/deps/engine.rs","lineNumber":589,"sourceCode":"    }\n\n    fn validate_provider_selection(\n        providers: &[Box<dyn DepsProvider>],\n        only: Option<&[String]>,\n        skip: &[String],\n    ) -> Result<()> {\n        let Some(only) = only else {\n            return Ok(());\n        };\n        for id in only {\n            if skip.contains(id) {\n                continue;\n            }\n            let Some(provider) = providers.iter().find(|provider| provider.id() == id) else {\n                continue;\n            };\n            if let DepsProviderApplicability::Inactive(reason) = provider.applicability() {\n                bail!(\"provider '{}' is inactive: {reason}\", provider.id());\n            }\n        }\n        Ok(())\n    }\n\n    /// Run all stale deps steps, respecting dependency ordering\n    pub(crate) async fn run(&self, opts: DepsOptions) -> Result<DepsResult> {\n        let mut results = vec![];\n\n        Self::validate_provider_selection(&self.providers, opts.only.as_deref(), &opts.skip)?;\n\n        let is_selected = |provider: &dyn DepsProvider| {\n            (!opts.auto_only || provider.is_auto())\n                && !opts.skip.iter().any(|id| id == provider.id())\n                && opts\n                    .only\n                    .as_ref()\n                    .is_none_or(|only| only.iter().any(|id| id == provider.id()))","sourceCodeStart":571,"sourceCodeEnd":607,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/deps/engine.rs#L571-L607","documentation":"mise validates that every dependency provider selected in a project's deps configuration is currently active. A provider reports its applicability, and when it is `Inactive(reason)` — e.g. its required tool is unavailable or the platform/feature doesn't apply — mise refuses to proceed rather than silently skipping it. The reason string explains exactly why the provider is unusable.","triggerScenarios":"Calling `validate_provider_selection` (during deps resolution/run) while a provider listed in the deps config returns `DepsProviderApplicability::Inactive(reason)` from `provider.applicability()`.","commonSituations":"A deps provider configured in mise.toml depends on a tool or backend that is not installed/disabled; config copied from another machine or OS where the provider applies but here it doesn't.","solutions":["Read the `{reason}` in the message and fix the underlying condition (install the missing tool, enable the backend/feature)","Remove or comment out the inactive provider from the deps configuration","Run `mise doctor` to see why the provider reports inactive","Pin/use a provider variant that is active on your platform"],"exampleFix":"// before (mise.toml)\n[deps]\nprovider = \"cargo\"   # inactive: cargo toolchain not installed\n// after\nmise use cargo        # install the toolchain so the provider is active","handlingStrategy":"validation","validationCode":"let inactive: Vec<_> = providers.iter().filter(|p| matches!(p.applicability(), DepsProviderApplicability::Inactive(_))).map(|p| p.id().to_string()).collect();\nif !inactive.is_empty() { eprintln!(\"inactive deps providers: {inactive:?}\"); }\n// run `mise doctor` first to inspect provider applicability","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `mise doctor` after changing toolchains/platforms","Keep deps provider config minimal and platform-appropriate","Test deps commands on a fresh checkout before relying on them"],"tags":["deps","config","provider"],"backgroundTag":"unsupported-config-value","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}