jdx/mise · error · eyre::Report
brew prune is not supported on windows
Error message
brew prune is not supported on windows
What it means
The Windows build of mise compiles run_brew as a stub (cfg(not(unix))) that always bails, because Homebrew pruning is only implemented for unix. Any `mise bootstrap packages prune --manager brew` on Windows fails unconditionally — nothing is inspected first.
Source
Thrown at src/cli/system/prune.rs:146
.iter()
.map(|candidate| format!("{}@{}", candidate.token, candidate.version))
.collect::<Vec<_>>();
if !self.yes && !Settings::get().yes && console::user_attended_stderr() {
let msg = format!("brew-cask: prune {}?", remove.join(", "));
if !prompt::confirm(msg)? {
info!("brew-cask: skipped");
return Ok(());
}
}
let removed = brew::apply_cask_prune_plan(&plan, false)?;
info!("brew-cask: pruned {removed} casks");
Ok(())
}
#[cfg(not(unix))]
async fn run_brew(self) -> Result<()> {
let _ = self.manager;
bail!("brew prune is not supported on windows")
}
#[cfg(not(unix))]
async fn run_brew_cask(self) -> Result<()> {
let _ = self.manager;
bail!("brew-cask prune is not supported on windows")
}
}
static AFTER_LONG_HELP: &str = color_print::cstr!(
r#"<bold><underline>Examples:</underline></bold>
$ <bold>mise bootstrap packages prune --manager brew</bold>
$ <bold>mise bootstrap packages prune --manager brew --dry-run</bold>
$ <bold>mise bootstrap packages prune --manager brew --yes</bold>
$ <bold>mise bootstrap packages prune --manager brew-cask --dry-run</bold>
"#
);View on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Skip brew prune on Windows: guard the call with an OS check (e.g. `if [ "$(uname)" != "Darwin" ] && [ "$(uname)" != "Linux" ]; then ... fi` or in PowerShell check $IsWindows)
- Use WSL for brew-based workflows on Windows
- Manage Windows packages with a native manager (winget/choco/scoop) instead
Example fix
# before
$ mise bootstrap packages prune --manager brew # on Windows PowerShell
# error: brew prune is not supported on windows
# after
# bootstrap.ps1
if (-not $IsWindows) { mise bootstrap packages prune --manager brew } Defensive patterns
Strategy: validation
Validate before calling
# PowerShell
if (-not $IsWindows) { mise bootstrap packages prune --manager brew }
# bash
[ "$(uname)" != "_NT-"* ] && [ "$(uname -s 2>/dev/null || uname)" != MINGW* ] && mise bootstrap packages prune --manager brew Try / catch
mise bootstrap packages prune --manager brew || { echo 'brew prune unsupported on this platform' >&2; true; } Prevention
- Make bootstrap scripts platform-aware from day one rather than catching the error
- Keep brew workflows in WSL on Windows developer machines
When it happens
Trigger: Running `mise bootstrap packages prune --manager brew` on any Windows host (native or MSVC toolchain build of mise).
Common situations: Shared mise config/bootstrap script executed on Windows CI runners; developers on Windows running a setup script written for macOS colleagues.
Related errors
- brew-cask prune is not supported on windows
- brew import is not supported on windows
- manager '{}' is excluded by the system_packages.managers set
- brew is not available: {}
- brew-cask is not available: {}
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/c33fa2abb504009d.
Report an issue: GitHub.