jdx/mise · error
tool '{}' requires configured install dependency '{}', but i
Error message
tool '{}' requires configured install dependency '{}', but its selected version is not installed
hint: Run `mise install {}` before installing '{}'. Remove the dependency from configuration to allow the install hook to rely on system PATH instead. What it means
A tool declares a configured install dependency, but the dependency's selected (resolved/locked) version is not installed. mise refuses to proceed so the install hook does not silently fall back to a system PATH binary. The message tells you to install the dependency first or remove the dependency declaration.
Source
Thrown at src/install_context.rs:155
if !backend.is_version_installed(config, &dependency, true) {
let unresolved = !dependency.resolved_from_lockfile()
&& match &dependency.request {
ToolRequest::Prefix { .. } | ToolRequest::Sub { .. } => true,
ToolRequest::Version { version, .. } => {
version == "latest" || backend.is_rolling_channel(version)
}
ToolRequest::Ref { .. }
| ToolRequest::Path { .. }
| ToolRequest::System { .. } => false,
};
if unresolved {
bail!(
"failed to resolve configured install dependency '{}' for '{}' while offline",
dependency.request,
request
);
}
bail!(
"tool '{}' requires configured install dependency '{}', but its selected version is not installed\n\
hint: Run `mise install {}` before installing '{}'. Remove the dependency from configuration to allow the install hook to rely on system PATH instead.",
request,
dependency.request,
dependency.request,
request,
);
}
}
let paths = toolset.list_paths_strict(config, request).await?;
let context = Self {
declarations,
requests,
toolset,
paths,
};
debug_assert_eq!(context.requests.tools.len(), context.toolset.versions.len());
debug_assert!(View on GitHub (pinned to afd2eddd3a)
Solutions
- Run `mise install <dependency>` for the named dependency before installing the tool (as the hint says).
- Run `mise install` with no args to install every configured tool including the dependency.
- Remove the dependency from the tool's configuration if you intend to rely on system PATH.
- Check `mise ls <dependency>` and align the config/lockfile version with an installed one.
Example fix
// before mise install ruby@3.3 # depends on openssl@3 but only ruby listed // after mise install openssl@3.4 && mise install ruby@3.3
Defensive patterns
Strategy: validation
Validate before calling
# ensure every configured tool (including dependencies) is installed first mise ls --missing && mise install
Try / catch
if ! mise install "$tool" 2>&1 | grep -q 'not installed'; then :; fi
# on this specific failure, install all tools then retry:
mise install || { mise install "$tool"; } Prevention
- Run bare `mise install` (all tools) on new machines/CI instead of a single tool.
- Keep dependencies declared in the same config so `mise install` covers them.
- Run `mise doctor` / `mise ls` to catch uninstalled pinned versions early.
When it happens
Trigger: `mise install <tool>` where the tool's config declares an install dependency, the dependency request resolved (possibly via lockfile) to a concrete version, but that exact version is not present in mise's install directory.
Common situations: Fresh machine/CI where only the leaf tool was listed; dependency removed from the toolset by an unpinned cache; lockfile pins a version someone later deleted; relying on a system-installed binary that mise does not know about.
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
- failed to resolve configured install dependency '{}' for '{}
- {}@{requested} is not installed{resolved} hint: run `mise in
- Ruby engine '{}' is not supported on Windows. Only standard
- install from exe
- erlang does not yet support refs
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/75a1306a62d61ea0.
Report an issue: GitHub.