jdx/mise · error

Plugin {ba} is not installed

Error message

Plugin {ba} is not installed

What it means

`mise current` with a plugin argument resolves the backend and checks whether its plugin is installed before printing the current version. When the backend exists but its plugin reports `is_installed() == false`, mise cannot determine a 'current' version and bails with 'Plugin {ba} is not installed'.

Source

Thrown at src/cli/current.rs:51

    )
)]
pub(crate) struct Current {
    /// Plugin to show versions of
    /// e.g.: ruby, node, cargo:eza, npm:prettier, etc.
    #[usage()]
    plugin: Option<BackendArg>,
}

impl Current {
    pub(crate) async fn run(self) -> Result<()> {
        let config = Config::get().await?;
        let ts = ToolsetBuilder::new().build(&config).await?;
        match &self.plugin {
            Some(ba) => {
                if let Some(plugin) = ba.backend()?.plugin()
                    && !plugin.is_installed()
                {
                    bail!("Plugin {ba} is not installed");
                }
                self.one(ts, ba.backend()?.as_ref()).await
            }
            None => self.all(ts).await,
        }
    }

    async fn one(&self, ts: Toolset, tool: &dyn Backend) -> Result<()> {
        if let Some(plugin) = tool.plugin()
            && !plugin.is_installed()
        {
            warn!("Plugin {} is not installed", tool.id());
            return Ok(());
        }
        match ts
            .list_versions_by_plugin()
            .into_iter()
            .find(|(p, _)| p.id() == tool.id())

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Install the tool first: `mise install <tool>` or `mise use <tool>@<version>`
  2. Check installed tools with `mise ls` to confirm the plugin is present
  3. If the plugin should be installed, verify MISE_DATA_DIR points at the right directory

Example fix

// before
mise current node
// error: Plugin node is not installed
// after
mise install node && mise current node
Defensive patterns

Strategy: validation

Validate before calling

mise ls <tool> >/dev/null 2>&1 || { echo "tool not installed"; mise install <tool>; }

Try / catch

if ! mise ls <tool> >/dev/null 2>&1; then
  mise install <tool>
fi
mise current <tool>

Prevention

When it happens

Trigger: Running `mise current <tool>` (e.g. `mise current node`) where the tool's plugin/core backend has no installed version on this machine.

Common situations: Fresh machine or CI container where the tool was never installed, switching mise data directories, or referencing a tool that only exists in another project's config.

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@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/4d1061a6b75664a2. Report an issue: GitHub.