jdx/mise · error

{reason}

Error message

{reason}

What it means

After the manager reports itself available, the driver runs `installed()` to collect per-request package statuses and calls `unavailable_package_reason`. If any package-level status indicates the manager cannot satisfy the request (e.g. a package is unsupported or the manager reports a package-specific unavailability), the run bails with that reason. It is a per-package failure raised after manager-level availability has passed.

Source

Thrown at src/cli/system/driver.rs:114

            }
            debug!("{name}: skipping, excluded by system_packages.managers");
            continue;
        }
        if let Some(reason) = mp.manager.unavailable_reason_async().await {
            if unavailable_manager_is_error(d) {
                // explicitly requested (via --manager or manager:package
                // specs) — failing silently would be a lie
                bail!("{name} is not available: {}", reason);
            }
            debug!("{name}: skipping, {reason}");
            continue;
        }
        if !d.dry_run {
            mp.manager.prepare_mutation(&mp.requests).await?;
        }
        let statuses = mp.manager.installed(&mp.requests).await?;
        if let Some(reason) = unavailable_package_reason(d, &statuses) {
            bail!("{reason}");
        }
        let remove_targets = if action == Action::Install {
            statuses
                .iter()
                .filter(|status| {
                    status.request.desired == PackageDesiredState::Absent
                        && !matches!(status.state, PackageState::Missing)
                        && !status.state.is_unavailable()
                })
                .collect::<Vec<_>>()
        } else {
            vec![]
        };
        let mut targets: Vec<_> = statuses
            .iter()
            .filter(|status| status.request.desired == PackageDesiredState::Present)
            .filter(|s| match action {
                Action::Install => !s.state.is_installed() && !s.state.is_unavailable(),

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Fix or remove the offending package entry reported in the reason.
  2. Verify the package name exists for that manager (`mise system packages` or the manager's own CLI).
  3. Run with --dry-run first to see statuses before mutating.
  4. Update or reinstall the manager plugin so package resolution works.
Defensive patterns

Strategy: validation

Validate before calling

# Preview per-package statuses before mutating
mise system packages --dry-run

Prevention

When it happens

Trigger: Running `mise system packages install/remove` where one of the requested packages yields an unavailable status from `manager.installed()` — e.g. package not supported by the manager, missing package metadata, or a plugin reporting the package cannot be handled.

Common situations: Typo'd or platform-inappropriate package names (a macOS-only cask on Linux); a plugin that can list the manager but not resolve specific packages; stale tracked config referencing packages the current manager version no longer supports.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/143ed0514ded5610. Report an issue: GitHub.