jdx/mise · error
artifactbundle must be true, false, 1, or 0, got
Error message
artifactbundle must be true, false, 1, or 0, got {value} What it means
The SPM (Swift) backend accepts an 'artifactbundle' option that must evaluate to a boolean-ish value: truthy values mean artifact bundles are required, falsey values mean source-only builds. Any other string/type value is rejected because the option is strictly boolean.
Solutions
- Set artifactbundle = true, false, 1, or 0 in the tool options
- Remove the option entirely to use the default behavior
- Check for stray quoting/type issues in the TOML value
Example fix
# before [tools."spm:swift-argparse"] artifactbundle = "yes" # after [tools."spm:swift-argparse"] artifactbundle = true
Defensive patterns
Strategy: validation
Validate before calling
# TOML-side check # artifactbundle must be one of: true, false, 1, 0 grep -E 'artifactbundle\s*=\s*"?(true|false|1|0)"?' mise.toml || echo "invalid artifactbundle value"
Prevention
- Only use true/false/1/0 for artifactbundle — not yes/on/off
- Prefer unquoted TOML booleans (true/false)
- Remove the option if you want default behavior
When it happens
Trigger: Setting artifactbundle in a mise.toml tool options block to something other than true/false/1/0 — e.g. "yes", "on", or a non-string type — when lockfile_options parses it via artifactbundle_mode.
Common situations: Using YAML/other config truthiness conventions (yes/no/on/off) that mise's SPM options do not accept; quoting numbers oddly or providing a table/list by mistake.
Understand the failure class
Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.
Related errors
- install_command cannot be used with filter_bins
- install_command must be a non-empty string
- No matching SwiftPM artifact bundle found for
- a provided source resolves to a path
- additional asset ' ' is not an archive
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/918789b861a1adf7.
Report an issue: GitHub.
Appendix: source
Thrown at src/backend/spm.rs:87
}
fn artifactbundle_asset(&self, target: Option<&PlatformTarget>) -> Option<String> {
self.option_string("artifactbundle_asset", target)
}
fn artifactbundle_mode(
&self,
target: Option<&PlatformTarget>,
) -> eyre::Result<ArtifactBundleMode> {
let Some(value) = self.option_string("artifactbundle", target) else {
return Ok(ArtifactBundleMode::Auto);
};
if is_truthy(&value) {
Ok(ArtifactBundleMode::Required)
} else if is_falsey(&value) {
Ok(ArtifactBundleMode::SourceOnly)
} else {
bail!("artifactbundle must be true, false, 1, or 0, got {value}");
}
}
fn requires_artifactbundle(&self, mode: ArtifactBundleMode) -> bool {
mode.requires_artifactbundle() || self.artifactbundle_asset(None).is_some()
}
fn lockfile_options(&self, target: &PlatformTarget) -> BTreeMap<String, String> {
let mut opts = BTreeMap::new();
let provider = self.provider(Some(target));
if provider != GitProviderKind::GitHub.as_ref() {
opts.insert("provider".to_string(), provider);
}
if let Some(api_url) = self.api_url(Some(target)) {
opts.insert("api_url".to_string(), api_url);
}
match self.artifactbundle_mode(Some(target)) {
Ok(ArtifactBundleMode::Required) => {View on GitHub (pinned to 533346cc37)