jdx/mise · error
relative remote mise path does not name an executable: {comm
Error message
relative remote mise path does not name an executable: {command:?} What it means
After normalization, a relative remote mise path must still name an executable; if all components resolve away (e.g. ".", "./", or "a/..") the resulting path inside the project is empty, so mise rejects it rather than executing the project directory itself.
Source
Thrown at src/system/remote.rs:1259
}
let home = remote_home.ok_or_else(|| eyre!("remote login home was not resolved"))?;
return Ok(format!("{}/{suffix}", home.trim_end_matches('/')));
}
let mut components = Vec::new();
for component in command.split('/') {
match component {
"" | "." => {}
".." => {
if components.pop().is_none() {
bail!("relative remote mise path escapes the staged project: {command:?}");
}
}
component => components.push(component),
}
}
if components.is_empty() {
bail!("relative remote mise path does not name an executable: {command:?}");
}
Ok(format!("{project}/{}", components.join("/")))
}
fn remote_mise_find_script() -> &'static str {
r#"mise_path=$(command -v mise 2>/dev/null || true)
case "$mise_path" in /*) ;; *) mise_path= ;; esac
if [ -z "$mise_path" ]; then
for candidate in "$HOME/.local/bin/mise" "$HOME/.local/share/mise/bin/mise" "$HOME/.cargo/bin/mise" /usr/local/bin/mise /opt/homebrew/bin/mise; do
if [ -x "$candidate" ]; then
mise_path=$candidate
break
fi
done
fi"#
}
fn remote_mise_output_script() -> String {View on GitHub (pinned to afd2eddd3a)
Solutions
- Provide a path with at least one real component naming the binary, e.g. "bin/mise"
- Fix the templating/config that produced an empty or dot-only path
- Prefer an absolute or "~/"-prefixed path where the executable location is fixed
Example fix
// before remote_mise = "." // after remote_mise = "bin/mise"
Defensive patterns
Strategy: validation
Validate before calling
const nonEmptyRelative = (rel) => typeof rel === 'string' && !rel.startsWith('/') && rel.split('/').filter(s => s && s !== '.' && s !== '..').length > 0; Prevention
- Reject dot-only or placeholder path values in config
- Ensure templating always emits an executable segment
- Test config expansion outputs before remote deployment
When it happens
Trigger: Passing a relative remote mise path like ".", "./", "x/.." or an otherwise empty-resolving path to the resolver that prefixes the staged project.
Common situations: Empty or placeholder config values that yield "."; templating bugs where the executable segment of a relative path is dropped, leaving only directory dots.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- remote mise path does not name an executable: {command:?}
- oci mount_point must be an absolute path (got {mount_point:?
- path "{path_raw}" must be absolute or start with ~/, ignorin
- brew-cask: command_wrapper requires a command name without p
- copy_link must be a relative path within the source: {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/b12f696598231486.
Report an issue: GitHub.