Summary
To properly support cask distribution, the macOS binaries must be signed and notarized with an Apple Developer certificate. This issue tracks the requirements, implementation steps, and migration strategy.
1. Validation: Signing required for cask
Yes. Signing (and notarization) is required for distributing the Hookdeck CLI via a Homebrew cask.
- Gatekeeper: Casks install pre-built binaries. macOS applies quarantine to downloaded files; unsigned/unnotarized binaries trigger Gatekeeper and can be blocked (e.g. "damaged and cannot be opened").
- Homebrew policy: Homebrew is removing
--no-quarantine for casks. Support for casks that fail Gatekeeper checks ends September 1, 2026.
- Apple Silicon: Native arm64 code effectively requires a valid signature to run.
- Current state: The cask is disabled in
.goreleaser/mac.yml with a TODO: "Cask distribution causes Gatekeeper issues with unsigned binaries."
2. Requirements
Apple Developer setup
Build pipeline (GoReleaser)
Cask and tap
Tests and docs
3. Migration strategy: support formula during transition
- Phase 1: Implement signing + notarization. Re-enable cask. Publish both formula and cask.
- Phase 2: Document cask as recommended for macOS. Keep formula available.
- Phase 3: Overlap period of 6–12 months (or two major versions) where both are supported.
- Phase 4: Add
deprecate! to the formula with replacement_cask: "hookdeck/hookdeck/hookdeck", then optionally stop publishing the formula.
User migration: Existing formula users can run brew uninstall hookdeck then brew install --cask hookdeck/hookdeck/hookdeck when moving to the cask.
4. Workaround for users (temporary)
Until signing is implemented, users who hit Gatekeeper with an unsigned install can bypass quarantine by running:
xattr -d com.apple.quarantine $(which hookdeck)
This should be documented in troubleshooting guides only as a temporary workaround. Proper fix is code signing.
References
Summary
To properly support cask distribution, the macOS binaries must be signed and notarized with an Apple Developer certificate. This issue tracks the requirements, implementation steps, and migration strategy.
1. Validation: Signing required for cask
Yes. Signing (and notarization) is required for distributing the Hookdeck CLI via a Homebrew cask.
--no-quarantinefor casks. Support for casks that fail Gatekeeper checks ends September 1, 2026..goreleaser/mac.ymlwith a TODO: "Cask distribution causes Gatekeeper issues with unsigned binaries."2. Requirements
Apple Developer setup
.cer→ import to Keychain → export as.p12with password).p8) for notarizationBuild pipeline (GoReleaser)
notarizeblock to.goreleaser/mac.yml. The cross-platform (quill) method works for binaries (no.app/DMG).MACOS_SIGN_P12,MACOS_SIGN_PASSWORD,MACOS_NOTARY_KEY,MACOS_NOTARY_KEY_ID,MACOS_NOTARY_ISSUER_ID(base64-encoded where applicable).Cask and tap
homebrew_casksin.goreleaser/mac.yml. Cask goes inCasks/(default); formula stays inFormula/.contents: writeforhookdeck/homebrew-hookdeck(defaultGITHUB_TOKENmay not have access).xattr/--no-quarantineworkarounds in the cask; proper signing is the correct approach.Tests and docs
test-scripts/test-homebrew-build.shandtest-homebrew-build.yml.3. Migration strategy: support formula during transition
deprecate!to the formula withreplacement_cask: "hookdeck/hookdeck/hookdeck", then optionally stop publishing the formula.User migration: Existing formula users can run
brew uninstall hookdeckthenbrew install --cask hookdeck/hookdeck/hookdeckwhen moving to the cask.4. Workaround for users (temporary)
Until signing is implemented, users who hit Gatekeeper with an unsigned install can bypass quarantine by running:
xattr -d com.apple.quarantine $(which hookdeck)This should be documented in troubleshooting guides only as a temporary workaround. Proper fix is code signing.
References
--no-quarantine(#20755)