jdx/mise · error
brew-cask:{}: no supported install artifact found
Error message
brew-cask:{}: no supported install artifact found What it means
After parsing all artifacts of a cask, cask_artifacts checks that at least one supported install artifact (app, pkg, installer, generic, font, completions, generated completions) was found. A cask whose stanzas yield nothing installable by this implementation bails with this error naming the token, because there is no way to represent or install the package state.
Source
Thrown at src/system/packages/brew/cask/artifacts.rs:71
continue;
}
bail!(
"brew-cask:{}: unsupported artifact type {}",
cask.token,
artifact_type
);
}
if artifacts.apps.is_empty()
&& artifacts.binaries.is_empty()
&& artifacts.command_wrappers.is_empty()
&& artifacts.pkgs.is_empty()
&& artifacts.installers.is_empty()
&& artifacts.generic.is_empty()
&& artifacts.fonts.is_empty()
&& artifacts.completions.is_empty()
&& artifacts.generated_completions.is_empty()
{
bail!(
"brew-cask:{}: no supported install artifact found",
cask.token
);
}
artifacts.pkg_ids.sort();
artifacts.pkg_ids.dedup();
if artifacts.pkgs.is_empty() {
artifacts.pkg_ids.clear();
} else if artifacts.pkg_ids.is_empty() {
bail!(
"brew-cask:{}: pkg artifacts require pkgutil ids in uninstall metadata",
cask.token
);
}
Ok(artifacts)
}
pub(super) fn validate_platform_support(cask: &Cask, artifacts: &CaskArtifacts) -> Result<()> {View on GitHub (pinned to afd2eddd3a)
Solutions
- Run `brew cat --cask <token>` and confirm the cask actually declares installable artifacts (app/pkg/binary/generic/font, etc.).
- Update the cask/tap: brew update (or tap update) so the cask definition is current, then retry.
- If the cask is stage-only or otherwise has no artifacts, install it directly with `brew install --cask <token>`; this library cannot manage it.
- If you wrote the cask, add a supported artifact stanza (e.g. `app "MyApp.app"`).
Example fix
// before: cask has no installable stanza cask "mytool" do version "1.0" url "https://example.com/mytool.zip" end // after cask "mytool" do version "1.0" url "https://example.com/mytool.zip" app "MyTool.app" end
Defensive patterns
Strategy: validation
Validate before calling
const hasInstallable = (caskJson) =>
(caskJson.artifacts || []).some(a =>
["app", "pkg", "binary", "generic", "font", "completions"].some(k => k in a));
if (!hasInstallable(brewInfoCask(token))) skipInstall(token); Try / catch
match cask_artifacts(&cask) {
Err(e) if e.to_string().contains("no supported install artifact") => {
eprintln!("{} is stage-only/uninstall-only; manage with brew directly", cask.token);
}
other => other?,
} Prevention
- Run `brew update` before batch cask operations so definitions are current.
- Filter cask lists to those with installable artifacts before automated installs.
- Skip stage_only / uninstall-only casks in tooling.
- Validate custom casks declare at least one artifact stanza.
When it happens
Trigger: Installing or querying package_state for a cask that declares no supported artifact — e.g. it only has `uninstall` stanzas, only `stage_only: true`, only zap stanzas, or an empty/blank artifact list, or all its artifacts were rejected earlier in the parse loop.
Common situations: Stage-only or auto-update-only casks that ship no artifacts to link; casks where every artifact type is unsupported so they were skipped and the list ended up empty; stale cask metadata from an outdated tap; typo'd custom casks with no artifact stanza at all.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- brew casks are installed at their current version ('{p}')
- brew-cask: requested token '{requested_token}' does not matc
- brew-cask:{}: pkg artifacts require pkgutil ids in uninstall
- brew-cask:{}: dependency cycle detected
- brew-cask:{}: Homebrew owns this cask; remove it with Homebr
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/e3ea8270b2801e9d.
Report an issue: GitHub.