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

  1. Verify the task name exists: run `mise tasks` and use an exact name from that list
  2. Re-run with the fully qualified task name (e.g. `//pkg:task` in monorepos) instead of a partial name
  3. Check that the mise.toml defining the task is trusted and loaded (mise trust)
  4. 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

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


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)