jdx/mise · error

managed path '{}' notifies unconfigured bootstrap service '{

Error message

managed path '{}' notifies unconfigured bootstrap service '{}'

What it means

mise validates that every `notify` entry on a managed path (`[[bootstrap.files]]` or `[[bootstrap.directories]]`) names a service actually declared under `[bootstrap.services]`. A notify on an undeclared service would have nothing to signal at apply time, so configuration loading fails with this error.

Source

Thrown at src/system/services.rs:503

        .iter()
        .map(|service| service.name.as_str())
        .collect::<IndexSet<_>>();
    for (resource, notification) in files
        .iter()
        .flat_map(|file| {
            file.notify
                .iter()
                .map(move |notification| (file.path.as_path(), notification))
        })
        .chain(directories.iter().flat_map(|directory| {
            directory
                .notify
                .iter()
                .map(move |notification| (directory.path.as_path(), notification))
        }))
    {
        if !configured.contains(notification.as_str()) {
            bail!(
                "managed path '{}' notifies unconfigured bootstrap service '{}'",
                resource.display(),
                notification
            );
        }
    }
    Ok(())
}

pub(crate) fn plans_with_notifications(
    requests: &[ServiceRequest],
    notifications: &ServiceNotifications,
) -> Vec<ResourcePlan> {
    requests
        .iter()
        .map(|request| request.plan_with_change(notifications.change_for(request)))
        .collect()
}

View on GitHub (pinned to 6f52dcdf99)

Solutions

  1. Add the matching `[bootstrap.services.<name>]` table for the notify target
  2. Fix the typo in the notify array so it matches an existing service key exactly
  3. Remove the notify entry if no reload/restart is needed on changes to that path

Example fix

# before
[[bootstrap.files]]
path = "/etc/myapp/config.yaml"
notify = ["myap"]

# after
[[bootstrap.files]]
path = "/etc/myapp/config.yaml"
notify = ["myapp"]

[bootstrap.services.myapp]
state = "running"
on_change = "restart"
Defensive patterns

Strategy: validation

Validate before calling

jq -r '[.bootstrap.services // {} | keys[]] as $s | (.bootstrap.files // []) + (.bootstrap.directories // []) | .notify[]? | select(. as $n | $s | index($n) | not) | "dangling notify: \(.)"' mise.toml

Prevention

When it happens

Trigger: A `[[bootstrap.files]]` or `[[bootstrap.directories]]` block contains `notify = ["name"]` where `name` is not a key in any `[bootstrap.services.*]` table of the loaded config (typo, renamed service, or the services block was deleted/moved to an untracked file).

Common situations: Renaming a service but forgetting the notify references; copying a bootstrap file block from another project without its services block; notify names the unit filename (`foo.service`) while the services table key is the bare name or vice versa.

Related errors


AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22). Data as JSON: /api/errors/fa9028fb71b25ada. Report an issue: GitHub.