jdx/mise · error
{} is not available: {reason}
Error message
{} is not available: {reason} What it means
In prune's run_plugin, after confirming the manager is a plugin, mise calls `unavailable_reason_async()`; if the plugin reports any unavailability (missing hooks, broken plugin runtime, missing manager binary), the prune aborts with `<manager> is not available: <reason>`. Prune requires a fully functional plugin because it must enumerate and remove installed packages.
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 afd2eddd3a)
Solutions
- Fix the underlying issue in the reason (install the manager binary, repair plugin hooks).
- Reinstall/update the plugin.
- Run `mise system packages` with the same manager first to confirm availability before pruning.
Defensive patterns
Strategy: validation
Validate before calling
# Ensure the plugin and its underlying manager binary work first mise system packages --manager myplugin --dry-run
Prevention
- Install the plugin's underlying package-manager binary and keep it on PATH.
- Reinstall plugins after failures (mise plugin update).
- Dry-run the manager before pruning.
When it happens
Trigger: Running `mise system prune --manager <plugin>` where the plugin's manager binary is missing, its Lua hooks fail to load, or `unavailable_reason_async()` returns a reason for any environmental cause.
Common situations: Plugin installed but the underlying package manager (e.g. cargo binary) absent from PATH; vfox plugin missing required hook files; broken plugin after an upgrade.
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
- package plugin '{}' does not support uninstall; add hooks/pa
- {name} is not available: {}
- {reason}
- brew is not available: {}
- package manager '{}' does not support pruning
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/b296aa4422f67036.
Report an issue: GitHub.