jdx/mise · error
missing task name in monorepo path '{}', use '{}:<task>' or
Error message
missing task name in monorepo path '{}', use '{}:<task>' or '{}:*' to run all tasks in that path What it means
A monorepo pattern starting with '//' must have a task part after a colon (format //path...:task or //path:*). The matcher splits the normalized pattern on ':' with splitn(2) and, when no colon is found for a '//' pattern, bails with this message telling you to append ':<task>' or ':*'.
Source
Thrown at src/task/mod.rs:3417
return Ok(vec![]);
}
// === Parse monorepo pattern ===
let normalized_pat = if pat.starts_with("//") {
pat.to_string()
} else if pat.starts_with(':') {
// Special case: :task should have been expanded before calling get_matching
// If we reach here, it means the expansion didn't happen properly
bail!("':task' pattern should be expanded before matching")
} else {
pat.to_string()
};
// Split pattern into path and task parts
// Pattern format: //path/...:task* or //path:task*
let parts: Vec<&str> = normalized_pat.splitn(2, ':').collect();
if pat.starts_with("//") && parts.len() == 1 {
bail!(
"missing task name in monorepo path '{}', use '{}:<task>' or '{}:*' to run all tasks in that path",
pat,
pat,
pat
);
}
let (path_pattern, task_pattern) = match parts.as_slice() {
[path, task] => (*path, *task),
[path] => (*path, "*"),
_ => (normalized_pat.as_str(), "*"),
};
// === Convert ellipsis to glob syntax ===
// Convert ellipsis (...) to glob pattern (**)
// //... matches everything, //foo/... matches foo and all subdirs
let path_glob = path_pattern.replace("...", "**");
let trailing_ellipsis_base = path_pattern
.strip_suffix("/...")View on GitHub (pinned to 6f52dcdf99)
Solutions
- Name the task explicitly: '//web:build'
- Or run every task in that path: '//web:*'
- Or use the ellipsis form for recursive matching: '//web/**:build'
Example fix
# before [tasks.ci] depends = ["//web"] # after [tasks.ci] depends = ["//web:build"]
Defensive patterns
Strategy: validation
Validate before calling
# every '//' pattern must contain a colon
python3 - <<'EOF'
import tomllib, sys
cfg = tomllib.load(open('mise.toml','rb'))
for name, t in cfg.get('tasks', {}).items():
for d in map(str, t.get('depends', [])):
if d.startswith('//') and ':' not in d:
sys.exit(f"{name}: '{d}' needs ':<task>' or ':*'")
print('ok')
EOF Prevention
- There is no default task for a path — always append ':task' or ':*'
- Use '//path/**:task' for recursive matches
When it happens
Trigger: Running `mise run '//web'` or declaring depends = ["//libs"] — the pattern is only a workspace path with no task selector, so parts.len() == 1 and the bail fires before path/task decomposition.
Common situations: Assuming '//path' runs a default task in that project; converting from nx-style implicit defaults; autocompleting a directory path and forgetting the task suffix.
Related errors
- relative path syntax '{}' is not supported, use '//{}' or '
- {err}
- ^task dependencies are supported only in depends
- remote cache blob packs require a positive max_pack_bytes li
- `{dp}` is not executable. {}
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/889eb026454fec14.
Report an issue: GitHub.