jdx/mise · error

no dotfiles matched target filter: {}

Error message

no dotfiles matched target filter: {}

What it means

`select_requests` filters all configured dotfiles (whole-file entries and edit entries) by the target arguments given on the command line. If the user supplied target filters that match nothing while the config does contain other dotfiles, mise throws "no dotfiles matched target filter: <targets>" rather than silently doing nothing.

Source

Thrown at src/cli/dotfiles/mod.rs:75

    let all_files = crate::system::files::files_from_config(config)?;
    crate::system::files::validate_composed_file_footprints(&all_files)?;
    let files = all_files
        .iter()
        .filter(|req| crate::system::files::matches_target(&req.target, &req.target_raw, targets))
        .cloned()
        .collect::<Vec<_>>();
    let all_edits = crate::system::edits::edits_from_config(config)?;
    let edits = all_edits
        .iter()
        .filter(|req| crate::system::edits::matches_target(req, targets))
        .cloned()
        .collect::<Vec<_>>();
    if files.is_empty()
        && edits.is_empty()
        && !targets.is_empty()
        && (!all_files.is_empty() || !all_edits.is_empty())
    {
        eyre::bail!("no dotfiles matched target filter: {}", targets.join(", "));
    }
    Ok((files, edits))
}

/// Manage dotfiles from `[dotfiles]` (deprecated)
///
/// Use `mise bootstrap dotfiles` instead.
#[derive(Debug, usage_rs::Args)]
#[usage(verbatim_doc_comment, hide = true)]
pub(crate) struct Dotfiles {
    #[usage(subcommand)]
    command: Commands,
}

#[derive(Debug, usage_rs::Subcommands)]
enum Commands {
    #[usage(hide = true)]
    Add(add::DotfilesAdd),

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Run `mise bootstrap dotfiles paths` (or `status`) to list managed targets and copy the exact string.
  2. Fix typos or use the same path form as the config (absolute or `~/`-prefixed).
  3. Add the dotfile to the config first (via `dotfiles add`) if it is not managed yet.

Example fix

// before
mise bootstrap dotfiles apply zshrc
// after
mise bootstrap dotfiles apply ~/.zshrc
Defensive patterns

Strategy: validation

Validate before calling

# verify every requested target is managed before invoking the command
for t in "$@"; do
  mise bootstrap dotfiles paths | grep -qx "$t" || { echo "not managed: $t"; exit 1; }
done

Prevention

When it happens

Trigger: Running a dotfiles command (apply/save/status/rollback/etc.) with one or more TARGET arguments that match no file or edit entry in the current [dotfiles]/[system] config, while other dotfiles exist in the config.

Common situations: Typos in the target path; the dotfile was untracked/removed from the config; using a relative path where the config records an absolute or `~/` path; running in a project whose config has no such entry.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/4410c87f0f89dcd7. Report an issue: GitHub.