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

  1. Run `mise install <dependency>` for the named dependency before installing the tool (as the hint says).
  2. Run `mise install` with no args to install every configured tool including the dependency.
  3. Remove the dependency from the tool's configuration if you intend to rely on system PATH.
  4. 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

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


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/75a1306a62d61ea0. Report an issue: GitHub.