jdx/mise · error

no tasks {} found

Error message

no tasks {} found

What it means

After an interactive task-selection prompt (prompt_for_task) returns a chosen name, mise looks it up in the task map; if the selection is stale or unknown it throws 'no tasks <name> found'. This is a guard against the fuzzy-finder returning a name that no longer resolves to a task.

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 afd2eddd3a)

Solutions

  1. Rerun the command so the task list is refreshed, then select again
  2. Verify the task still exists with `mise tasks`
  3. If tasks were edited concurrently, retry after the edits are saved
Defensive patterns

Strategy: fallback

Validate before calling

mise tasks ls --json | jq -e --arg t "$TASK" 'any(.[]; .name == $t)'

Try / catch

task=$(mise run 2>&1) || mise run "$TASK"  # retry to refresh a stale picker list

Prevention

When it happens

Trigger: Selecting an entry in the interactive `mise run` task picker whose name is no longer in the loaded task map — e.g. task files changed while the picker was open, or the picker returned an unnormalized name.

Common situations: Editing/renaming task files in another terminal while the picker was open; picker fed names from a broader (load_all) listing than the final task map; race between listing and selection.

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@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/6604e2681fc8a303. Report an issue: GitHub.