BigPizzaV3/CodexPlusPlus · error
macOS bundle binary is unavailable at {}: {error}
Error message
macOS bundle binary is unavailable at {}: {error} What it means
During macOS app-bundle installation, the installer validates that the source binary to copy into the bundle exists at the expected path before copying and chmod-ing it. The bail fires when that source binary is absent, so the bundle would otherwise be written without a usable executable.
Source
Thrown at crates/codex-plus-core/src/install/macos.rs:141
let mut permissions = fs::metadata(&target)?.permissions();
permissions.set_mode(0o755);
fs::set_permissions(target, permissions)?;
} else {
anyhow::bail!("macOS bundle is missing its binary source");
}
let executable = macos.join(executable_name_from_plist(&bundle.info_plist));
fs::write(&executable, &bundle.launch_script)?;
let mut permissions = fs::metadata(&executable)?.permissions();
permissions.set_mode(0o755);
fs::set_permissions(executable, permissions)?;
copy_icon(&resources)?;
Ok(())
}
#[cfg(target_os = "macos")]
fn validate_binary_source(path: &Path) -> anyhow::Result<()> {
let metadata = fs::metadata(path).map_err(|error| {
anyhow::anyhow!(
"macOS bundle binary is unavailable at {}: {error}",
path.display()
)
})?;
if !metadata.is_file() {
anyhow::bail!(
"macOS bundle binary is not a regular file: {}",
path.display()
);
}
if metadata.len() < 1024 {
anyhow::bail!(
"macOS bundle binary is unexpectedly small: {}",
path.display()
);
}
let mut header = [0_u8; 2];
let mut file = fs::File::open(path)?;View on GitHub (pinned to f2074595a2)
Solutions
- Verify the release archive extracted completely and contains the binary
- Check the bundle source directory layout matches what write_bundle expects
- Re-download or reinstall the package
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/codex-plus-core/src/install/macos.rs:141 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23).
Data as JSON: /api/errors/c37f7f8d9b10e3fa.
Report an issue: GitHub.