{"record":{"id":"9e7fb9a1671dfb7c","repo":"jdx/mise","slug":"provider-is-inactive-reason","errorCode":null,"errorMessage":"provider '{}' is inactive: {reason}","messagePattern":"provider '(.+?)' is inactive: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/deps/install.rs","lineNumber":229,"sourceCode":"        if !optional_outputs.is_empty() {\n            miseprintln!(\"Optional outputs:\");\n            for output in &optional_outputs {\n                let exists = output.exists();\n                let marker = if exists { \"+\" } else { \"-\" };\n                miseprintln!(\"  {} {}\", marker, output.display());\n            }\n        }\n\n        // Command\n        if let Ok(cmd) = provider.install_command_with_env(effective_env) {\n            miseprintln!(\"Command: {}\", cmd.description);\n        }\n\n        // Verdict\n        miseprintln!(\"\");\n        if let DepsProviderApplicability::Inactive(reason) = applicability {\n            miseprintln!(\"Status: inactive ({reason})\");\n            bail!(\"provider '{}' is inactive: {reason}\", provider.id());\n        }\n\n        let freshness = engine.check_provider_freshness(provider, effective_env)?;\n        if freshness.is_fresh() {\n            miseprintln!(\"Status: fresh ({})\", freshness.reason());\n        } else {\n            miseprintln!(\"Status: stale ({})\", freshness.reason());\n        }\n\n        if !freshness.is_fresh() {\n            bail!(\"provider '{}' is stale\", provider.id());\n        }\n\n        Ok(())\n    }\n\n    fn list_providers(&self, engine: &DepsEngine) -> Result<()> {\n        let providers = engine.list_providers();","sourceCodeStart":211,"sourceCodeEnd":247,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/cli/deps/install.rs#L211-L247","documentation":"`explain_provider` evaluates a provider's applicability for the current environment before printing its explanation. If the provider reports `DepsProviderApplicability::Inactive(reason)` (it does not apply to this OS/environment/setup), mise prints the status and bails with 'provider <id> is inactive: <reason>' instead of explaining or installing.","triggerScenarios":"Running `mise deps install <provider> --explain` where the provider's `applicability()` returns Inactive, e.g. a provider tied to a language runtime, OS, or project setup that is absent.","commonSituations":"Using a provider on an unsupported platform, missing the runtime the provider manages (e.g. no node project detected), or project configuration that disables the provider.","solutions":["Read the `reason` in the error/status output and satisfy it (install the runtime, add the missing project file, switch platform)","Choose a different, applicable provider from `mise deps install --list`","Skip explaining this provider if your environment cannot support it"],"exampleFix":"// before\nmise deps install cargo-build --explain   # inactive: cargo not installed\n// after\nmise install rust && mise deps install cargo-build --explain","handlingStrategy":"try-catch","validationCode":"mise deps install \"$PROVIDER\" --explain 2>&1 | grep -q 'Status: inactive' && echo \"provider not applicable here\"","typeGuard":null,"tryCatchPattern":"match std::process::Command::new(\"mise\").args([\"deps\",\"install\",p,\"--explain\"]).output() {\n    Ok(o) if !o.status.success() && String::from_utf8_lossy(&o.stderr).contains(\"is inactive\") => {\n        // choose another provider or fix the environment per the printed reason\n    }\n    _ => {}\n}","preventionTips":["Read the printed inactive reason and satisfy its precondition before retrying","Verify platform/runtime prerequisites for a provider before using it","Fall back to providers listed as applicable in `mise deps install --list`"],"tags":["cli","deps","provider"],"backgroundTag":"invalid-state-transition","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}