{"record":{"id":"75a1306a62d61ea0","repo":"jdx/mise","slug":"tool-requires-configured-install-dependency","errorCode":null,"errorMessage":"tool '{}' requires configured install dependency '{}', but its selected version is not installed\nhint: Run `mise install {}` before installing '{}'. Remove the dependency from configuration to allow the install hook to rely on system PATH instead.","messagePattern":"tool '(.+?)' requires configured install dependency '(.+?)', but its selected version is not installed\nhint: Run `mise install (.+?)` before installing '(.+?)'\\. Remove the dependency from configuration to allow the install hook to rely on system PATH instead\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/install_context.rs","lineNumber":155,"sourceCode":"            if !backend.is_version_installed(config, &dependency, true) {\n                let unresolved = !dependency.resolved_from_lockfile()\n                    && match &dependency.request {\n                        ToolRequest::Prefix { .. } | ToolRequest::Sub { .. } => true,\n                        ToolRequest::Version { version, .. } => {\n                            version == \"latest\" || backend.is_rolling_channel(version)\n                        }\n                        ToolRequest::Ref { .. }\n                        | ToolRequest::Path { .. }\n                        | ToolRequest::System { .. } => false,\n                    };\n                if unresolved {\n                    bail!(\n                        \"failed to resolve configured install dependency '{}' for '{}' while offline\",\n                        dependency.request,\n                        request\n                    );\n                }\n                bail!(\n                    \"tool '{}' requires configured install dependency '{}', but its selected version is not installed\\n\\\n                     hint: Run `mise install {}` before installing '{}'. Remove the dependency from configuration to allow the install hook to rely on system PATH instead.\",\n                    request,\n                    dependency.request,\n                    dependency.request,\n                    request,\n                );\n            }\n        }\n        let paths = toolset.list_paths_strict(config, request).await?;\n        let context = Self {\n            declarations,\n            requests,\n            toolset,\n            paths,\n        };\n        debug_assert_eq!(context.requests.tools.len(), context.toolset.versions.len());\n        debug_assert!(","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/install_context.rs#L137-L173","documentation":"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.","triggerScenarios":"`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.","commonSituations":"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.","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."],"exampleFix":"// before\nmise install ruby@3.3   # depends on openssl@3 but only ruby listed\n// after\nmise install openssl@3.4 && mise install ruby@3.3","handlingStrategy":"validation","validationCode":"# ensure every configured tool (including dependencies) is installed first\nmise ls --missing && mise install","typeGuard":null,"tryCatchPattern":"if ! mise install \"$tool\" 2>&1 | grep -q 'not installed'; then :; fi\n# on this specific failure, install all tools then retry:\nmise install || { mise install \"$tool\"; }","preventionTips":["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."],"tags":["install","dependency","not-installed"],"backgroundTag":"missing-dependency","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}