jdx/mise · error
no tasks found
Error message
no tasks {} found What it means
prompt_for_task shows an interactive task picker, and after the user selects a name it looks the name up in the loaded task map. If the selection's name does not resolve to a task in `tasks` (e.g. the list was stale relative to the map), mise bails with "no tasks <name> found". It is a lookup failure for a task identifier that was just presented or typed.
Solutions
- Verify the task name exists: run `mise tasks` and use an exact name from that list
- Re-run with the fully qualified task name (e.g. `//pkg:task` in monorepos) instead of a partial name
- Check that the mise.toml defining the task is trusted and loaded (mise trust)
- Clear stale state and retry: `mise cache clear` then re-run
Example fix
// before (typed in picker) mise run # select "bld" -> no tasks bld found // after mise tasks # find real name mise run build
Defensive patterns
Strategy: validation
Validate before calling
mise tasks | grep -Fx 'my-task' || echo 'task missing; use exact name from mise tasks'
Try / catch
if ! mise tasks | grep -qx "$TASK"; then echo "task '$TASK' not found" >&2; exit 1; fi; mise run "$TASK"
Prevention
- Always copy task names from `mise tasks` output
- Prefer direct `mise run <task>` over interactive selection in scripts
- Re-check task names after editing mise.toml files
- In monorepos use fully qualified '//pkg:task' names
When it happens
Trigger: Running a command that prompts for task selection (via get_task_lists → prompt_for_task), and the name returned by the interactive selector `s.run()` is not a key in the loaded `tasks` map — e.g. selecting an invalid/raw entry, typing a custom name in a fuzzy finder, or the task list being filtered differently from the map.
Common situations: Typing a task name that no longer exists into an interactive picker; task defined in a config file that failed to load into the map; monorepo scoping causing the selected name to differ from the registered task key; stale cache after editing mise.toml.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- cannot encode # as JSON
- missing task name in monorepo path
- --name-only cannot be used with --json, --extended, or…
- no task found Did you mean one of these? - Did you mean the…
- pre_use hook is not implemented
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/6604e2681fc8a303.
Report an issue: GitHub.
Appendix: source
Thrown at src/task/task_list.rs:415
let mut s = Select::new("Tasks")
.description("Select a task to run")
.filtering(true)
.filterable(true)
.theme(&theme);
for t in tasks.values().filter(|t| !t.hide) {
// Truncate description to first line only, like tasks ls does
let desc = t.description.lines().next().unwrap_or_default();
s = s.option(
DemandOption::new(&t.name)
.label(&t.display_name)
.description(desc),
);
}
ctrlc::show_cursor_after_ctrl_c();
match s.run() {
Ok(name) => match tasks.get(name) {
Some(task) => Ok(task.clone()),
None => bail!("no tasks {} found", style::ered(name)),
},
Err(err) => {
Term::stderr().show_cursor()?;
Err(eyre!(err))
}
}
}
/// Get a list of tasks to run from command-line arguments
/// Handles task patterns, monorepo paths, and interactive selection
pub(crate) async fn get_task_lists(
config: &Arc<Config>,
args: &[String],
prompt: bool,
only: bool,
prompt_all: bool,
) -> Result<Vec<Task>> {
if prompt_all {View on GitHub (pinned to 533346cc37)