{"record":{"id":"773dd09be7e64e72","repo":"jdx/mise","slug":"no-executable-found-for-configured-tool-bin-name","errorCode":null,"errorMessage":"No executable found for configured tool: {bin_name}\nThe installed version does not provide this executable with its current backend metadata.\nReinstall it with:\nmise install --force {tool}@{version}","messagePattern":"No executable found for configured tool: (.+?)\nThe installed version does not provide this executable with its current backend metadata\\.\nReinstall it with:\nmise install --force (.+?)@(.+?)","errorType":"exception","errorClass":"eyre::Report","httpStatus":null,"severity":"error","filePath":"src/cli/which.rs","lineNumber":66,"sourceCode":"            Some((p, tv)) => {\n                if self.version {\n                    miseprintln!(\"{}\", tv.version);\n                } else if self.plugin {\n                    miseprintln!(\"{p}\");\n                } else {\n                    let path = p.which(&config, &tv, &bin_name).await?;\n                    miseprintln!(\"{}\", path.unwrap().display());\n                }\n                Ok(())\n            }\n            None => {\n                if let Some(msg) = self.uninstalled_tool_message(&config, &ts) {\n                    bail!(msg);\n                }\n                if let Some(msg) =\n                    crate::shims::unavailable_configured_tool_message(&config, &ts, &bin_name)\n                {\n                    bail!(msg);\n                }\n                if self.has_shim(&bin_name) {\n                    bail!(\n                        \"{bin_name} is a mise bin however it is not currently active. Use `mise use` to activate it in this directory.\"\n                    )\n                } else {\n                    bail!(\"{bin_name} is not a mise bin. Perhaps you need to install it first.\",)\n                }\n            }\n        }\n    }\n    async fn complete(&self, config: &Arc<Config>) -> Result<()> {\n        let ts = self.get_toolset(config).await?;\n        let bins = ts\n            .list_paths(config)\n            .await\n            .into_iter()\n            .flat_map(|p| file::ls(&p).unwrap_or_default())","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/cli/which.rs#L48-L84","documentation":"Built by `shims::unavailable_configured_tool_message` (src/shims.rs:843) and surfaced by `mise which` (and by shim execution): the bin name matches a configured tool (`matches_bin_name`) and that version IS installed, but no executable could be resolved for it — the installed version's backend/bin metadata does not list BIN. mise concludes the install metadata is stale or incomplete and tells you to reinstall with `mise install --force`.","triggerScenarios":"`mise which <bin>` (or running a shim) where the install directory is missing the bin: an interrupted extraction, a backend whose bin-listing metadata changed after install (e.g. an aqua registry update), or a version that only ships the bin on other platforms.","commonSituations":"Upgrade of mise changed how a backend lists bins, leaving old installs unresolvable; partial installs after disk-full or crash; tools whose bin name differs across versions; NFS/symlinked installs where bins failed to materialize.","solutions":["Reinstall the exact current version as the message says: `mise install --force <tool>@<version>`","Verify the install on disk: `ls ~/.local/share/mise/installs/<tool>/<version>/bin`","Confirm which version is active with `mise ls <tool>` before reinstalling","If the release genuinely does not ship that bin on your platform, `mise use` a version that does"],"exampleFix":"# before\n$ mise which codex\nNo executable found for configured tool: codex\n...\n\n# after\n$ mise install --force node@22.0.0\n$ mise which codex","handlingStrategy":"retry","validationCode":"# verify the bin really exists in the active install before relying on it\nv=$(mise current jq 2>/dev/null || true)\nif [ -n \"$v\" ] && [ ! -x \"$(mise where jq \"$v\")/bin/jq\" ]; then\n  mise install --force \"jq@$v\"\nfi","typeGuard":null,"tryCatchPattern":"# shell wrapper: reinstall once on this specific failure\nout=$(mise which jq 2>&1) || {\n  case \"$out\" in\n    \"No executable found for configured tool\"*)\n      mise install --force \"$(mise current jq)\" && mise which jq ;;\n    *) echo \"$out\"; exit 1 ;;\n  esac\n}","preventionTips":["After mise upgrades that change backend metadata, reinstall pinned tools","Avoid interrupting installs (disk-full/Ctrl-C) — rerun with `mise install --force` if in doubt","Spot-check install bin dirs in health checks: `mise where <tool>`"],"tags":["cli","mise-which","shims","backend-metadata","reinstall"],"backgroundTag":"missing-executable-in-install","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}