jdx/mise · error
unrecognized attested_by
Error message
unrecognized attested_by {s:?} in lockfile What it means
A tool entry's `attested_by` field in mise.lock may only be the literal string "repackager" — the only attesting party the parser knows. Any other string (from a newer mise or manual edit) causes a hard parse failure so unknown attestation claims are never silently accepted.
Solutions
- Upgrade mise to the latest version so the new attested_by value is recognized.
- Change the value to "repackager" or remove the attested_by key from the tool entry in mise.lock.
- Regenerate the lockfile with `mise lock` to produce valid attestation metadata.
Example fix
// before (mise.lock) attested_by = "custom-signer" // after attested_by = "repackager"
Defensive patterns
Strategy: validation
Validate before calling
const vals = doc.get('tools')?.flatMap(t => t.get('attested_by')).filter(Boolean);
const bad = vals.filter(s => s !== 'repackager');
if (bad.length) throw new Error('unsupported attested_by: ' + bad); Type guard
function isAttestedBy(v) { return v === 'repackager'; } Prevention
- Don't manually set attested_by; it's written by mise during locking.
- Keep mise versions aligned across the team.
- If you need a different attester, file an upstream feature request instead of editing the lockfile.
When it happens
Trigger: Parsing a mise.lock tool entry with `attested_by = "<value other than repackager>"` — written by a newer mise introducing a new attester, or set by hand.
Common situations: Downgrading mise after using a newer version that records a new attester; hand-editing lockfile provenance; sharing lockfiles across mise versions.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- unrecognized github_attestations status
- invalid lockfile format for tool
- unrecognized provenance table format in lockfile
- unsupported asset info format
- additional_artifacts must be an array in lockfile
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/17dced8d664ff784.
Report an issue: GitHub.
Appendix: source
Thrown at src/lockfile.rs:861
}
_ => None,
};
let provenance_verified = t
.remove("provenance_verified")
.and_then(|value| value.as_bool());
let github_attestations = if provenance.is_some() {
None
} else {
github_attestations
};
let signer = match t.remove("signer") {
Some(toml::Value::String(s)) => Some(s),
_ => None,
};
let attested_by = match t.remove("attested_by") {
Some(toml::Value::String(s)) if s == "repackager" => Some(s),
Some(toml::Value::String(s)) => {
bail!("unrecognized attested_by {s:?} in lockfile")
}
_ => None,
};
let additional_artifacts = match t.remove("additional_artifacts") {
Some(toml::Value::Array(values)) => values
.into_iter()
.map(|value| value.try_into().map_err(Report::from))
.collect::<Result<Vec<ArtifactInfo>>>()?,
Some(_) => bail!("additional_artifacts must be an array in lockfile"),
None => Vec::new(),
};
Ok(PlatformInfo {
install,
checksum,
size,
url,
url_api,
conda_deps,View on GitHub (pinned to 533346cc37)