jdx/mise · error
mas list --json returned no parseable app objects
Error message
mas list --json returned no parseable app objects
What it means
Parse consistency check in parse_mas_json: `mas list --json` returned a non-empty JSON array but none of its objects could be parsed into an InstalledApp (missing adam_id/bundle_id/versionString fields), suggesting an unexpected mas output schema version rather than an empty list.
Source
Thrown at src/system/packages/mas.rs:101
"versionString",
],
)?;
Some(InstalledApp {
adam_id,
bundle_id,
version,
})
}
fn parse_mas_json(output: &str) -> EyreResult<Vec<InstalledApp>> {
let output = output.trim();
if output.is_empty() {
return Ok(vec![]);
}
if let Ok(Value::Array(values)) = serde_json::from_str::<Value>(output) {
let apps: Vec<_> = values.iter().filter_map(parse_mas_json_value).collect();
if apps.is_empty() && !values.is_empty() {
bail!("mas list --json returned no parseable app objects");
}
return Ok(apps);
}
let mut apps = vec![];
for line in output
.lines()
.map(str::trim)
.filter(|line| !line.is_empty())
{
let value = serde_json::from_str::<Value>(line)
.map_err(|err| eyre!("mas list --json returned invalid JSON: {err}"))?;
match parse_mas_json_value(&value) {
Some(app) => apps.push(app),
None => bail!("mas list --json returned an app object without an ID and version"),
}
}
Ok(apps)
}View on GitHub (pinned to afd2eddd3a)
Solutions
- Run `mas list --json` manually and inspect the object schema
- Update the parser to the fields emitted by the installed mas version
- Ensure mas is up to date (`mas self-update` or brew upgrade mas)
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at src/system/packages/mas.rs:101 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/bac2be129a3b3fc7.
Report an issue: GitHub.