Skip to content

fix(install): strip macOS Gatekeeper quarantine xattrs (#313)#319

Merged
ajianaz merged 1 commit into
developfrom
fix/313-macos-gatekeeper
Jun 17, 2026
Merged

fix(install): strip macOS Gatekeeper quarantine xattrs (#313)#319
ajianaz merged 1 commit into
developfrom
fix/313-macos-gatekeeper

Conversation

@ajianaz

@ajianaz ajianaz commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes #313 — macOS binary release killed by Gatekeeper quarantine (com.apple.quarantine / com.apple.provenance).

Prebuilt macOS binaries are not Apple-notarized. When downloaded directly (gh release download, browser, curl), macOS attaches quarantine xattrs and kills the binary on first launch with Killed: 9 and no error output, making it look like a cora crash.

Changes

install.sh

After chmod +x, on macOS run best-effort:

xattr -dr com.apple.quarantine "${INSTALL_DIR}/${BINARY_NAME}"
xattr -dr com.apple.provenance "${INSTALL_DIR}/${BINARY_NAME}"

Non-fatal on failure (binary may already be clean). Logs Stripped macOS quarantine attributes (Gatekeeper workaround).

README.md

Added a prominent <details> block under the Install section explaining:

  • The Killed: 9 symptom,
  • The manual xattr -dr workaround for direct-download users,
  • The cargo / Homebrew alternatives that sidestep Gatekeeper entirely.

CHANGELOG.md

Entry under ## [0.6.1] -> Fixed — Install (macOS).

What this does NOT do

The real fix is Apple notarization (codesign + xcrun notarytool submit) in .github/workflows/release.yml, which requires an Apple Developer ID certificate + App Store Connect API key. This PR is the minimum-cost stopgap explicitly suggested in the issue. A follow-up issue can track notarization once credentials are available — the install.sh strip will remain useful even after notarization (defensive, covers direct-download paths).

Tests

  • sh -n install.sh — syntax OK.
  • cargo build / cargo clippy -- -D warnings / cargo fmt --check all clean (no Rust changes).

Versioning

Patch bump 0.6.00.6.1 (shares the release with #316 and #312).

⚠️ Merge note: CHANGELOG and Cargo.toml will conflict with #317 and #318. Suggested merge order: #317#318this PR. Conflicts are confined to the ## [0.6.1] block of CHANGELOG.md and the version line in Cargo.toml/Cargo.lock.

Checklist

  • cargo build passes
  • cargo clippy -- -D warnings clean
  • cargo fmt applied
  • sh -n install.sh passes
  • CHANGELOG entry under ## [0.6.1]### Fixed — Install (macOS)
  • Version bumped in Cargo.toml + Cargo.lock

Prebuilt macOS binaries are not Apple-notarized. When a user downloads
the `aarch64-apple-darwin` tarball directly (via `gh release download`,
browser, or curl), macOS attaches `com.apple.quarantine` and
`com.apple.provenance` extended attributes and then kills the binary on
first launch with signal 9 — producing `Killed: 9` and **no error output**.
This makes the failure look like a cora crash rather than a distribution
gap.

Changes
- install.sh: after `chmod +x`, on macOS run best-effort
  `xattr -dr com.apple.quarantine` and `xattr -dr com.apple.provenance`
  on the installed binary. Non-fatal on failure (binary may already be
  clean).
- README: add a prominent <details> block under the Install section
  explaining the `Killed: 9` symptom, the manual `xattr -dr` workaround
  for direct-download users, and the `cargo` / Homebrew alternatives.
- CHANGELOG entry under `## [0.6.1] -> Fixed — Install (macOS)`.

Note: the real fix is Apple notarization (codesign + notarytool), which
requires an Apple Developer ID certificate. This PR is the minimum-cost
stopgap documented in the issue. A follow-up can add notarization to
`.github/workflows/release.yml` once credentials are available.

Bump 0.6.0 -> 0.6.1 (patch).
@ajianaz ajianaz force-pushed the fix/313-macos-gatekeeper branch from 27f817f to b43dbaf Compare June 17, 2026 06:22
@ajianaz ajianaz merged commit dc4a667 into develop Jun 17, 2026
10 checks passed
@ajianaz ajianaz deleted the fix/313-macos-gatekeeper branch June 17, 2026 06:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: macOS binary release killed by Gatekeeper quarantine (com.apple.quarantine/provenance)

1 participant