jdx/mise · error
provider '{}' is inactive: {reason}
Error message
provider '{}' is inactive: {reason} What it means
`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.
Source
Thrown at src/cli/deps/install.rs:229
if !optional_outputs.is_empty() {
miseprintln!("Optional outputs:");
for output in &optional_outputs {
let exists = output.exists();
let marker = if exists { "+" } else { "-" };
miseprintln!(" {} {}", marker, output.display());
}
}
// Command
if let Ok(cmd) = provider.install_command_with_env(effective_env) {
miseprintln!("Command: {}", cmd.description);
}
// Verdict
miseprintln!("");
if let DepsProviderApplicability::Inactive(reason) = applicability {
miseprintln!("Status: inactive ({reason})");
bail!("provider '{}' is inactive: {reason}", provider.id());
}
let freshness = engine.check_provider_freshness(provider, effective_env)?;
if freshness.is_fresh() {
miseprintln!("Status: fresh ({})", freshness.reason());
} else {
miseprintln!("Status: stale ({})", freshness.reason());
}
if !freshness.is_fresh() {
bail!("provider '{}' is stale", provider.id());
}
Ok(())
}
fn list_providers(&self, engine: &DepsEngine) -> Result<()> {
let providers = engine.list_providers();View on GitHub (pinned to afd2eddd3a)
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
Example fix
// before mise deps install cargo-build --explain # inactive: cargo not installed // after mise install rust && mise deps install cargo-build --explain
Defensive patterns
Strategy: try-catch
Validate before calling
mise deps install "$PROVIDER" --explain 2>&1 | grep -q 'Status: inactive' && echo "provider not applicable here"
Try / catch
match std::process::Command::new("mise").args(["deps","install",p,"--explain"]).output() {
Ok(o) if !o.status.success() && String::from_utf8_lossy(&o.stderr).contains("is inactive") => {
// choose another provider or fix the environment per the printed reason
}
_ => {}
} Prevention
- 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`
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- Provider '{provider_id}' not found. Available providers: {a
- --explain requires a provider argument, e.g.: mise deps inst
- provider '{}' is stale
- provider '{}' is inactive: {reason}
- provider '{}' does not support adding packages
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/9e7fb9a1671dfb7c.
Report an issue: GitHub.