jdx/mise · error

mise oci does not support [bootstrap.macos.*] defaults

Error message

mise oci does not support [bootstrap.macos.*] defaults (found {defaults} default entries); macOS defaults do not apply to OCI images.

What it means

`mise oci build` rejects configs that define [bootstrap.macos.*] default entries, because macOS-specific bootstrap defaults cannot be applied when building a Linux OCI image. The check counts macOS default entries across all bootstrap systems and bails if any are found.

Solutions

  1. Remove the [bootstrap.macos.*] sections from the bootstrap config used for the OCI build
  2. Keep macOS defaults in a separate config not passed to mise oci build
  3. Use [bootstrap.linux.*] defaults instead, which apply to OCI images

Example fix

# before
[bootstrap.macos.aarch64.default]
xx = "yy"

# after
[bootstrap.linux.x86_64.default]
xx = "yy"
Defensive patterns

Strategy: validation

Validate before calling

grep -q 'bootstrap.macos' bootstrap.toml && echo 'macOS defaults not supported for oci build' || mise oci build

Prevention

When it happens

Trigger: Running `mise oci build` while the active bootstrap configuration contains one or more [bootstrap.macos.*] default entries (e.g. [bootstrap.macos.aarch64] defaults), via reject_unsupported_system_defaults.

Common situations: Reusing a bootstrap.toml shared between native macOS mise bootstraps and OCI image builds, or copying a colleague's macOS bootstrap config into an OCI project.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/5c6f5923d35e1cdc. Report an issue: GitHub.

Appendix: source

Thrown at src/cli/oci/common.rs:143

    // image either.
    ToolsetBuilder::new()
        .with_config_files(project_files)
        .with_scope(ConfigScope::LocalOnly)
        .build(config)
        .await
}

fn reject_unsupported_system_defaults(config_files: &ConfigMap) -> Result<()> {
    let mut defaults = 0usize;
    for cf in config_files.values() {
        let Some(system) = cf.bootstrap_config() else {
            continue;
        };
        defaults += system::macos_defaults_entry_count(&system.macos);
    }

    if defaults > 0 {
        bail!(
            "mise oci does not support [bootstrap.macos.*] defaults (found {defaults} default entries); \
             macOS defaults do not apply to OCI images."
        );
    }
    Ok(())
}

pub(super) fn short_digest(d: &str) -> String {
    let hex = d.trim_start_matches("sha256:");
    if hex.len() >= 12 {
        format!("sha256:{}", &hex[..12])
    } else {
        d.to_string()
    }
}

#[cfg(test)]
mod tests {

View on GitHub (pinned to 533346cc37)