{"record":{"id":"0df514dca1b26c28","repo":"jdx/mise","slug":"no-executable-found-for-configured-tool-bin-name-0df514","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 {ba}@{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":null,"httpStatus":null,"severity":"error","filePath":"src/cli/which.rs","lineNumber":83,"sourceCode":"                } 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())\n            .map(|p| p.file_name().unwrap().to_string_lossy().to_string())\n            .unique()\n            .sorted()","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/cli/which.rs#L65-L101","documentation":"mise found the tool installed (the version directory exists) but the executable named by <bin> could not be found using the tool's current backend metadata — i.e. the install's bin listing is stale, corrupted, or the backend's exe layout changed. mise suggests reinstalling with `mise install --force` so the metadata and binaries are regenerated.","triggerScenarios":"`mise which <bin>` for a configured, installed tool whose backend metadata no longer lists <bin>: after a mise upgrade changed backend layout (e.g. npm/cargo tool layout changes), an interrupted install left partial bin metadata, or the tool version itself no longer ships that executable.","commonSituations":"Upgrading mise across a metadata format change; interrupting an install with Ctrl-C mid-write; the package removed the binary in a newer version while config pins the newer version.","solutions":["Run `mise install --force <tool>@<version>` to reinstall and regenerate bin metadata.","Verify the binary exists in the install dir (mise ls; look in ~/.local/share/mise/installs/<tool>/<version>/bin).","Check whether the tool version actually ships the executable; adjust the config pin if it was renamed/removed.","Update mise if the install was created by a much older version with incompatible metadata."],"exampleFix":"// before\nmise which tsc\n# No executable found for configured tool: tsc\n// after\nmise install --force typescript@5.4.5\nmise which tsc","handlingStrategy":"fallback","validationCode":"ls \"$(mise where <tool>)/bin\" | grep -qx '<bin>' || mise install --force <tool>","typeGuard":null,"tryCatchPattern":"mise which \"$bin\" || mise install --force \"$(mise current <tool>)\"","preventionTips":["Avoid interrupting `mise install` with Ctrl-C mid-write.","After upgrading mise, force-reinstall tools whose layout/metadata may have changed.","Verify a pinned tool version actually ships the executables your tasks call."],"tags":["cli","tools","metadata","reinstall"],"backgroundTag":"internal-invariant-violation","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"}