Codex Power can build a local ad-hoc DMG without Apple credentials. For a public release that opens cleanly on other Macs, Apple expects a Developer ID-signed app and a notarized DMG.
- Apple Developer Program membership.
- A Developer ID Application certificate.
- Notary credentials for
xcrun notarytool.
Official references:
- Signing Mac software with Developer ID
- Create a certificate signing request
- Notarizing macOS software before distribution
Run:
./Scripts/apple_signing_status.shIt checks local signing identities, the codex-power notary profile, and the GitHub secrets needed for signed CI release artifacts. It prints secret names only, never secret values.
- Create a CSR:
./Scripts/create_developer_id_csr.shThe script writes signing material under ~/.codex/codex-power/apple-signing/ by default.
-
In Apple Developer, create a Developer ID Application certificate and upload the generated
.certSigningRequest. -
Download the
.cerfile from Apple, then import it:
./Scripts/import_developer_id_certificate.sh ~/Downloads/developerID_application.cer-
Create an app-specific password for your Apple ID.
-
Store local notarization credentials:
./Scripts/configure_notary_profile.shUse the app-specific password when notarytool prompts. After this, local signed/notarized builds use:
export CODEX_POWER_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export CODEX_POWER_DMG_SIGN_IDENTITY="$CODEX_POWER_SIGN_IDENTITY"
export CODEX_POWER_NOTARY_KEYCHAIN_PROFILE="codex-power"
./Scripts/package_dmg.shAfter the Developer ID identity is visible in Keychain Access, run:
./Scripts/configure_github_apple_secrets.shThat exports the local Developer ID identity to a temporary .p12, uploads it to GitHub Actions secrets, uploads the Apple ID/team/notary secrets, then deletes the temporary .p12.
The workflow uses these secrets when present:
APPLE_CERTIFICATE_BASE64APPLE_CERTIFICATE_PASSWORDAPPLE_SIGNING_IDENTITYAPPLE_IDAPPLE_TEAM_IDAPPLE_APP_SPECIFIC_PASSWORD
Without those secrets, CI still builds an ad-hoc DMG artifact. With all secrets present, CI imports the Developer ID certificate, signs with hardened runtime, submits the DMG to Apple's notary service, staples the ticket, and uploads the notarized DMG artifact.
- Apple Developer Program enrollment and license agreements.
- Apple account two-factor prompts.
- Creating or downloading the Developer ID certificate from Apple's portal.
- Creating the Apple ID app-specific password.
- macOS Keychain prompts when importing/exporting private keys.