jdx/mise · error
bootstrap users and groups are only supported on Linux
Error message
bootstrap users and groups are only supported on Linux
What it means
On non-Linux platforms `accounts_non_linux.rs` replaces the accounts module. `requests_from_config` is the strict reader used by commands that must reflect real account state; it bails whenever any config file defines `[bootstrap.users]` or `[bootstrap.groups]`, because account inspection is impossible there. The softer `prepare_requests_from_config` only warns and returns empty requests.
Source
Thrown at src/system/accounts_non_linux.rs:96
impl UserRequest {
pub fn plan(&self) -> ResourcePlan {
ResourcePlan::new(
ResourceId::new("user", &self.name),
"unsupported",
"unsupported",
ResourceAction::Unknown,
)
}
pub fn current_primary_group(&self) -> Option<&str> {
None
}
}
pub fn requests_from_config(config: &Config) -> Result<AccountRequests> {
if accounts_configured(config) {
bail!("bootstrap users and groups are only supported on Linux");
}
Ok(AccountRequests::default())
}
pub fn prepare_requests_from_config(config: &Config) -> Result<AccountRequests> {
if accounts_configured(config) {
warn!("ignoring [bootstrap.users] and [bootstrap.groups] on non-Linux host");
}
Ok(AccountRequests::default())
}
pub fn plans(_requests: &AccountRequests) -> Vec<ResourcePlan> {
vec![]
}
pub fn apply(requests: &AccountRequests, _dry_run: bool, _yes: bool) -> Result<bool> {
if !requests.groups.is_empty() || !requests.users.is_empty() {
bail!("bootstrap users and groups are only supported on Linux");View on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Move account tables into a config only loaded on the Linux hosts (e.g. `/etc/mise/mise.toml` or a per-host `mise.local.toml` kept out of sync).
- Or stop running the strict accounts commands on non-Linux machines by gating them on `uname`.
- Verify with `mise bootstrap accounts status` on a Linux host that the config still parses there.
Example fix
# before: mise.toml synced to every machine [bootstrap.users.deploy] group = "deploy" # after: keep that table only in the Linux host's /etc/mise/mise.toml # (and remove it from the synced project/global config)
Defensive patterns
Strategy: validation
Validate before calling
// before calling the strict reader, check the platform yourself
if !cfg!(target_os = "linux") {
assert!(config.config_files.values().all(|cf| {
cf.bootstrap_config().map_or(true, |b| b.users.is_empty() && b.groups.is_empty())
}), "account tables present on a non-Linux host");
} Prevention
- Keep [bootstrap.users]/[bootstrap.groups] only in host-local configs (/etc/mise/mise.toml), not synced ones.
- In CI, assert configs parse on every OS you check out on (`mise bootstrap accounts status`).
When it happens
Trigger: Running a strict accounts command (e.g. `mise bootstrap accounts status`/plan-style reads) on macOS or Windows while any mise config file (project, local, global, system) contains non-empty `[bootstrap.users]` or `[bootstrap.groups]` tables.
Common situations: A mise.toml written for Linux servers committed to a repo that is also checked out on Mac workstations; dotfiles syncing a global config with account tables to every machine.
Related errors
- bootstrap users and groups are only supported on Linux
- bootstrap user '{name}' {field} must be an absolute path
- bootstrap user '{name}' {field} must not contain ':', CR, or
- {program} failed with {status}
- bootstrap compose project names cannot be empty
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/253971146eadf04d.
Report an issue: GitHub.