jdx/mise · error

{} is not managed by [dotfiles]

Error message

{} is not managed by [dotfiles]

What it means

`mise bootstrap dotfiles edit <target>` only edits files already managed by the `[dotfiles]` configuration. When the target is not found among managed requirements and the user has not passed --yes (which instead prompts to add it), run_inner bails with `<target> is not managed by [dotfiles]`. The prompt path (when --yes is given) offers to run DotfilesAdd automatically.

Source

Thrown at src/cli/dotfiles/edit.rs:76

        }

        if let Some(path) = source_for_target(&config, &target, &self.target)? {
            open_or_create(&path)?;
            crate::cli::editor::open_in_editor(&path)?;
            if self.apply {
                apply_target(&self.target).await?;
            }
            return Ok(());
        }

        if !self.yes && console::user_attended_stderr() {
            let ok = prompt::confirm(format!("dotfiles: add {}?", self.target))?.is_yes();
            if !ok {
                info!("dotfiles: skipped");
                return Ok(());
            }
        } else if !self.yes {
            bail!("{} is not managed by [dotfiles]", self.target);
        }

        DotfilesAdd {
            targets: vec![self.target.clone()],
            changed: false,
            mode: self.mode.clone(),
            source: self.source.clone(),
            global: true,
            local: false,
            path: None,
            dry_run: false,
            no_apply: true,
            force: false,
            yes: true,
        }
        .run()
        .await?;

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Add the file first: `mise bootstrap dotfiles add <path>` (or `track <path>`), then run edit.
  2. Re-run with `--yes` to accept the interactive prompt that offers to add the target automatically.
  3. Check the exact target spelling and confirm the config declaring it is loaded (and trusted).

Example fix

# before
mise bootstrap dotfiles edit ~/.zshrc   # not managed -> error
# after
mise bootstrap dotfiles add ~/.zshrc
mise bootstrap dotfiles edit ~/.zshrc
Defensive patterns

Strategy: validation

Validate before calling

// verify the target is managed before editing
import { execSync } from 'node:child_process';
const managed = JSON.parse(execSync('mise bootstrap dotfiles ls --json').toString());
if (!managed.some(d => d.target === target)) {
  execSync(`mise bootstrap dotfiles add ${target}`);
}

Try / catch

try {
  execSync(`mise bootstrap dotfiles edit ${target}`);
} catch (e) {
  if (String(e.stderr).includes('is not managed by [dotfiles]')) {
    execSync(`mise bootstrap dotfiles add ${target}`);
    execSync(`mise bootstrap dotfiles edit ${target}`);
  } else throw e;
}

Prevention

When it happens

Trigger: Running `mise bootstrap dotfiles edit <path>` for a file that has no [dotfiles] requirement in any loaded config, without --yes. The lookup fails and the command refuses to proceed rather than silently creating an unmanaged edit.

Common situations: Typos in the target path; the dotfile exists in another machine's config but not this one; config file not loaded/trusted so its dotfiles entries are missing; trying to start managing a brand-new file with edit instead of add/track.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


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