Repository navigation
fix(vm): macOS openshell-driver-vm release artifact missing com.apple.security.hypervisor entitlement #3506
Description
User Story
As a macOS user downloading openshell-driver-vm-aarch64-apple-darwin.tar.gz from a GitHub release,
I want the binary to work without manual codesigning,
so that VM sandbox creation succeeds out of the box regardless of install method.
Problem Statement
The macOS openshell-driver-vm binary in the GitHub release tarball is shipped unsigned — without the com.apple.security.hypervisor entitlement required by Apple's Hypervisor.framework. The entitlement is only applied at Homebrew install time via the formula's post_install hook, not during the CI build that produces the release artifact.
Impact / Why This Matters
When this happens, any non-Homebrew install path (direct tarball download, install.sh pre-release mode, CI environments) gets a binary that fails at runtime when it tries to create a microVM through libkrun.
This results in a confusing runtime crash with no clear indication that codesigning is the issue.
This matters because:
- The workaround is to manually run
codesign --entitlements <plist> --force -s - openshell-driver-vm, which requires knowing about macOS entitlements. - If Homebrew's
post_installis skipped (--skip-post-install) or fails, the binary is silently broken even for Homebrew users. - Codesigning logic (writing a plist, shelling out to
/usr/bin/codesign) does not belong in a package manager formula — it should be part of the build pipeline that produces the artifact.
Acceptance Criteria
-
openshell-driver-vm-aarch64-apple-darwin.tar.gzin GitHub releases contains a binary ad-hoc signed withcom.apple.security.hypervisor(verifiable viacodesign -d --entitlements - openshell-driver-vm) - The generated Homebrew formula no longer writes an entitlements plist or calls
codesigninpost_install -
install.shno longer containspatch_homebrew_formula()(dead code once formula codesigning is removed) - Existing Homebrew upgrade path works — a redundant
post_installcodesign from a cached older formula is harmless against a pre-signed binary -
crates/openshell-driver-vm/entitlements.plistremains the single source of truth for the entitlement
Reproduction Steps
- Download
openshell-driver-vm-aarch64-apple-darwin.tar.gzfrom a GitHub release - Extract:
tar -xzf openshell-driver-vm-aarch64-apple-darwin.tar.gz - Verify missing signature:
codesign -d --entitlements - openshell-driver-vm→ shows no entitlements - Attempt to create a VM sandbox — fails because Hypervisor.framework rejects the unsigned caller
Environment
- OS: macOS (Apple Silicon / aarch64-apple-darwin)
- Install method: direct GitHub release tarball download (non-Homebrew path)
Activity
fix(vm): codesign macOS driver-vm with hypervisor entitlement in CI
fix(vm): codesign macOS driver-vm with hypervisor entitlement in CI
fix(vm): codesign macOS driver-vm with hypervisor entitlement in CI (N…
github-actions commentedon Oct 15, 2026
This issue has had no activity for 14 days and is now marked stale. It may be closed in 14 days if there is no further activity. Comment or remove the state:stale label to keep it open.
benoitf commentedon Oct 16, 2026
fixed by #3507