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
- Add the matching `[bootstrap.services.<name>]` table for the notify target
- Fix the typo in the notify array so it matches an existing service key exactly
- 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 renaming a service, grep the whole config for its old name (notify arrays included)
- Add a CI lint that cross-checks every notify target against the services keys
- Prefer few, centralized notify references over scattered ones
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
- managed path '{}' notifies unconfigured bootstrap service '{
- invalid bootstrap secret name '{name}': use ASCII letters, d
- bootstrap service '{name}' cannot be both masked and running
- bootstrap service '{name}' cannot be both masked and enabled
- mise oci does not support [bootstrap.macos.*] defaults (foun
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/fa9028fb71b25ada.
Report an issue: GitHub.