jdx/mise · error · eyre::Report

Task not found: {}, use `mise tasks ls --all --hidden` to li

Error message

Task not found: {}, use `mise tasks ls --all --hidden` to list all tasks

What it means

`mise tasks info <name>` found no task with that name: it was not in any loaded mise.toml/task file, and the fallback remote task fetcher (TaskFetcher, used for `owner/repo` style names) also returned nothing, so the code falls through to the bail in src/cli/tasks/info.rs:64. The message points you at `mise tasks ls --all --hidden` because hidden tasks and tasks from other config layers are invisible by default.

Source

Thrown at src/cli/tasks/info.rs:64

        let task = matching.and_then(|m| m.first().cloned().cloned());

        if let Some(task) = task {
            // Resolve remote task files before displaying task info
            let mut tasks = vec![task.clone()];
            // always pass no_cache=false as the command doesn't take no-cache argument
            // MISE_TASK_REMOTE_NO_CACHE env var is still respected if set
            TaskFetcher::new(false)
                .fetch_tasks(&config, &mut tasks)
                .await?;
            let task = &tasks[0];

            if self.json {
                self.display_json(&config, task).await?;
            } else {
                self.display(&config, task).await?;
            }
        } else {
            bail!(
                "Task not found: {}, use `mise tasks ls --all --hidden` to list all tasks",
                self.task
            );
        }

        Ok(())
    }

    async fn display(&self, config: &Arc<Config>, task: &Task) -> Result<()> {
        info::inline_section("Task", &task.display_name)?;
        if !task.aliases.is_empty() {
            info::inline_section("Aliases", task.aliases.join(", "))?;
        }
        info::inline_section("Description", &task.description)?;
        info::inline_section(
            "Source",
            task.config_sources().iter().map(display_path).join(", "),
        )?;

View on GitHub (pinned to 9dcfcaa0dc)

Solutions

  1. List what actually exists: `mise tasks ls --all --hidden` and copy the exact name (note leading underscore for hidden tasks)
  2. Run `mise tasks info <name>` from the directory whose mise.toml defines the task (usually the project root)
  3. Check the tasks section of mise.toml / tasks/*.toml for the definition and its aliases

Example fix

# before
$ mise tasks info buld
# error: Task not found: buld

# after
$ mise tasks ls --all --hidden   # find exact name "build"
$ mise tasks info build
Defensive patterns

Strategy: validation

Validate before calling

task="build"
if mise tasks ls --all --hidden 2>/dev/null | awk '{print $1}' | grep -qx "${task#*:}"; then
  mise tasks info "$task"
else
  echo "task '$task' not defined here" >&2; exit 1
fi

Try / catch

mise tasks info "$task" || { echo "unknown task: $task — run `mise tasks ls --all --hidden`" >&2; exit 1; }

Prevention

When it happens

Trigger: `mise tasks info buld` (typo), a task defined in a subdirectory or different config layer not loaded from cwd, a hidden task (name starting with _), or `mise tasks info owner/repo:task` where the remote task does not exist or cannot be fetched.

Common situations: Running mise from a subdirectory instead of the project root; task renamed between branches; typo'd task name in a script; expecting a task from a nested package's mise.toml that isn't in the config chain.

Related errors


AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17). Data as JSON: /api/errors/eac7d3cb9b9481d9. Report an issue: GitHub.