jdx/mise · error

error running : exited with code

Error message

error running {}: exited with code {}
{}

What it means

When fetching remote versions for an asdf plugin, mise runs the plugin's `list-all` script. This error is thrown when that script exits with a non-zero exit code, surfacing the plugin's stderr so the underlying failure (bad curl, missing dependency, plugin bug) is visible.

Solutions

  1. Read the stderr tail in the error to see the plugin's actual failure
  2. Fix network/proxy access (check curl works, set proxy or GITHUB_TOKEN to avoid rate limits)
  3. Update or reinstall the plugin (`mise plugin update <name>` / `mise plugin remove` + `mise plugin add`)
  4. Replace the asdf plugin with a core mise tool or aqua/github backend equivalent

Example fix

// before
mise ls-remote nodejs   # plugin script fails silently on rate limit
// after
export GITHUB_TOKEN=$(gh auth token)
mise plugin update nodejs && mise ls-remote nodejs
Defensive patterns

Strategy: retry

Validate before calling

# before relying on the plugin, verify list-all works
mise exec -- curl -sI https://github.com >/dev/null && mise plugin list --urls

Type guard

null

Try / catch

catch (e) {
  if (/error running .*list-all|exited with code/.test(String(e))) {
    // inspect stderr in e, fix network/creds, retry with token
  }
}

Prevention

When it happens

Trigger: Running `mise ls-remote <plugin>` or installing/resolving `latest` for an asdf plugin whose `list-all` script fails with a numeric exit code.

Common situations: Plugin's list-all calls curl/wget and the network is down; GitHub rate limits or API failures inside the plugin script; a broken or abandoned plugin with outdated URLs; missing tools (git, curl) the plugin depends on.

Understand the failure class

Background: "git command failed": what it means when a tool shells out to git and git exits non-zero — this error's family across 21 libraries.

Related errors


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

Appendix: source

Thrown at src/plugins/asdf_plugin.rs:132

            },
            Settings::get().fetch_remote_versions_timeout(),
        )
        .wrap_err_with(|| {
            let script = script_man.get_script_path(&Script::ListAll);
            eyre!("Failed to run {}", display_path(script))
        })?;
        let stdout = String::from_utf8(result.stdout).unwrap();
        let stderr = String::from_utf8(result.stderr).unwrap().trim().to_string();

        let display_stderr = || {
            if !stderr.is_empty() {
                eprintln!("{stderr}");
            }
        };
        if !result.status.success() {
            let s = Script::ListAll;
            match result.status.code() {
                Some(code) => bail!("error running {}: exited with code {}\n{}", s, code, stderr),
                None => bail!("error running {}: terminated by signal\n{}", s, stderr),
            };
        } else if Settings::get().verbose {
            display_stderr();
        }

        Ok(stdout
            .split_whitespace()
            .map(|v| regex!(r"^v(\d+)").replace(v, "$1").to_string())
            .collect())
    }
    pub(crate) fn fetch_latest_stable(
        &self,
        script_man: &ScriptManager,
    ) -> eyre::Result<Option<String>> {
        let latest_stable = script_man.read(&Script::LatestStable)?.trim().to_string();
        Ok(if latest_stable.is_empty() {
            None

View on GitHub (pinned to 533346cc37)