jdx/mise · error

is not available

Error message

{} is not available: {reason}

What it means

After confirming the manager is a prune-capable plugin, `run_plugin` calls `unavailable_reason_async()` to check whether the underlying package manager tool is usable. If the plugin reports an availability problem (binary missing, unsupported platform, broken installation), mise aborts pruning with `'<manager>' is not available: <reason>`.

Solutions

  1. Install the underlying package manager (or restore it to PATH) so the plugin reports available.
  2. Run `mise bootstrap packages` / doctor-style checks to see the plugin's availability reason and fix that specific cause.
  3. Prune from an environment where the manager works (same PATH/shell used for installs).

Example fix

// before
$ mise bootstrap packages prune --manager myplugin
error: myplugin is not available: fooctl not found on PATH

// after
$ export PATH="$PATH:/opt/fooctl/bin"
$ mise bootstrap packages prune --manager myplugin
Defensive patterns

Strategy: fallback

Validate before calling

# Ensure the manager's tool is reachable before pruning
command -v "$MANAGER_TOOL" >/dev/null 2>&1 || { echo "$MANAGER_TOOL missing"; exit 1; }

Try / catch

try {
  await run("mise", ["bootstrap","packages","prune","--manager", m]);
} catch (e) {
  if (/is not available:/.test(e.message)) {
    // read the reason after the colon and install/repair the tool
  } else throw e;
}

Prevention

When it happens

Trigger: Running `mise bootstrap packages prune --manager <plugin-manager>` when the manager's required executable cannot be found or initialized — e.g. the tool the plugin wraps is not installed or not on PATH.

Common situations: Plugin configured in `[bootstrap.packages]` but its backing CLI was uninstalled; running prune in a CI/container environment lacking the manager binary; PATH differences between the shell where install worked and where prune runs.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/b296aa4422f67036. Report an issue: GitHub.

Appendix: source

Thrown at src/cli/system/prune.rs:82

            "brew" => self.run_brew().await,
            "brew-cask" => self.run_brew_cask().await,
            _ => self.run_plugin().await,
        }
    }

    async fn run_plugin(self) -> Result<()> {
        let discovered = system::packages::all_managers()
            .into_iter()
            .find(|manager| manager.name() == self.manager)
            .ok_or_else(|| eyre::eyre!("unknown bootstrap package manager '{}'", self.manager))?;
        if !discovered.is_plugin() {
            bail!(
                "package manager '{}' does not support pruning",
                self.manager
            );
        }
        if let Some(reason) = discovered.unavailable_reason_async().await {
            bail!("{} is not available: {reason}", self.manager);
        }
        let manager = PackagePluginManager::new(self.manager.clone())?;
        let config = Config::get().await?;
        let configured = system::package_requests_for_manager_from_config_and_tracked_config_files(
            &config,
            &self.manager,
        )
        .await?;
        let plan = manager.prune_plan(&configured).await?;
        if plan.is_empty() {
            if !self.dry_run {
                manager.apply_prune_plan(&plan).await?;
            }
            info!("{}: nothing to prune", self.manager);
            return Ok(());
        }
        if !manager.supports_uninstall() {
            bail!(

View on GitHub (pinned to 533346cc37)