jdx/mise · error
the setup from {url} is paused; nothing was bootstrapped. `m
Error message
the setup from {url} is paused; nothing was bootstrapped. `mise bootstrap dotfiles status` lists the paths that need attention; resolve them with `mise bootstrap dotfiles pull`, then run `mise bootstrap` What it means
Thrown by `mise bootstrap dotfiles pull` when the pull operation succeeded but the fetched setup is marked as held (paused, e.g. awaiting a decision on a conflicting configuration), so nothing was actually bootstrapped. The error halts the flow and points the user at `bootstrap dotfiles status` to inspect and resolve the pending paths before re-running the bootstrap.
Source
Thrown at src/cli/bootstrap.rs:1897
// configuration directory: its branch goes into mise's own store and
// its files are written by the same recoverable pull as any other
// incoming change; the ordinary bootstrap then runs from them
if let Some(url) = expanded.as_deref()
&& let Some(outcome) =
system::history::sync::onboard::from_git(url, self.yes, self.dry_run).await?
{
if self.dry_run {
if let Some(preview) = outcome.preview_config.as_ref() {
self.run_child_bootstrap(preview.path().to_path_buf())
.await?;
}
return Ok(());
}
// the configuration that arrived is what to bootstrap from; one
// held for a decision leaves the existing one, whose tasks and
// installations are not what was asked for
if outcome.setup_held {
bail!(
"the setup from {url} is paused; nothing was bootstrapped. `mise bootstrap dotfiles status` lists the paths that need attention; resolve them with `mise bootstrap dotfiles pull`, then run `mise bootstrap`"
);
}
let config_dir = system::history::tracked::global_config_dir();
self.run_child_bootstrap(config_dir).await?;
if !outcome.durable_access {
warn!("ongoing synchronization still needs credentials on this host (see above)");
}
return Ok(());
}
let (url, checkout) = if let Some(url) = expanded.as_deref() {
let checkout = crate::env::MISE_GLOBAL_CONFIG_FILE
.as_deref()
.map(|path| {
path.parent()
.filter(|parent| !parent.as_os_str().is_empty())
.unwrap_or_else(|| Path::new("."))
})View on GitHub (pinned to afd2eddd3a)
Solutions
- Run `mise bootstrap dotfiles status` to list the paths that need attention.
- Resolve each held path with `mise bootstrap dotfiles pull` (accept/decide the pending configuration).
- Re-run `mise bootstrap` once the status shows no held setup.
- If the held setup is unwanted, reset/discard the paused decision via the dotfiles subcommands before bootstrapping.
Example fix
// before (fails while setup is held) mise bootstrap // after mise bootstrap dotfiles status mise bootstrap dotfiles pull mise bootstrap
Defensive patterns
Strategy: try-catch
Validate before calling
mise bootstrap dotfiles status | grep -q 'held\|paused' && { mise bootstrap dotfiles pull; } Try / catch
if ! mise bootstrap; then mise bootstrap dotfiles status mise bootstrap dotfiles pull mise bootstrap fi
Prevention
- Check `mise bootstrap dotfiles status` before bootstrapping
- Resolve pending dotfiles decisions promptly instead of leaving setups paused
- Automate pull-and-resolve before bootstrap in provisioning scripts
When it happens
Trigger: Running `mise bootstrap` (via the dotfiles pull path) when `outcome.setup_held` is true — the remote configuration that arrived is paused pending a decision, so the existing configuration is kept and no bootstrap child process is started.
Common situations: A dotfiles setup previously paused via `mise bootstrap dotfiles` decision workflows; a conflict between the incoming and existing configuration left unresolved; resuming bootstrap on a new machine where the setup was held from a prior session.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- setup has conflicts; nothing was bootstrapped; use `mise boo
- [dotfiles]."{}": source does not exist: {}
- [dotfiles]."{}": mode symlink-each requires a directory sour
- [dotfiles]."{}": target is not a safe OCI path
- `defaults {display}` failed: {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/db6055da2097cb7f.
Report an issue: GitHub.