Prototype stable macOS permission identity without Developer ID#74
Draft
IgorArkhipov wants to merge 6 commits into
Draft
Prototype stable macOS permission identity without Developer ID#74IgorArkhipov wants to merge 6 commits into
IgorArkhipov wants to merge 6 commits into
Conversation
IgorArkhipov
marked this pull request as draft
July 13, 2026 01:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
EN
Summary
Entropy v0.1.5 and v0.2.0 use ad-hoc signatures.
Each changed binary gets a different
cdhash-only designated requirement, so macOS can show Accessibility as enabled whileAXIsProcessTrusted()rejects the updated app.Release builds embed an explicit requirement anchored to that certificate plus
com.ergohaven.entropy.No Apple Developer account or notarization credentials are required.
Limits and security
Validation
.app, ZIP, and DMG build succeeds with temporary self-signed identity.codesignverification and failsspctlas expected.shellcheck,actionlint, andgit diff --checkpass.Repository owner steps before Ready for review
Green PR checks do not prove that upstream signing credentials exist.
A repository owner/admin must complete steps below first:
On a Mac, open Keychain Access > Certificate Assistant > Create a Certificate.
Create one identity with exact settings:
Entropy Open Source Release SigningSelf Signed RootCode SigningExport certificate and private key together as an encrypted
.p12file.Store
.p12and its password in maintainer-controlled offline backup. Never commit or upload private material as a release artifact.Copy base64-encoded P12 value:
base64 -i entropy-release-signing.p12 | pbcopyIn upstream repository Actions secrets settings, create these repository secrets with exact names:
MACOS_CERTIFICATE_P12_BASE64: complete base64 value copied aboveMACOS_CERTIFICATE_PASSWORD:.p12export passwordConfirm secrets are stored in upstream
ergohaven/entropy. Secret values cannot be viewed again after saving.Use this same P12 for every release. Key loss or rotation changes app identity and forces users to grant permissions again.
Produce two different signed builds with this identity and complete manual TCC test below on Apple Silicon and Intel.
Click Ready for review only after both machines retain Accessibility/Input Monitoring without re-adding Entropy.
Manual release gate
Keep PR Draft. Before merge or release:
/Applications/Entropy.app.If TCC still requests permissions, do not ship this path. Fall back to ad-hoc artifacts plus explicit permission-reset UX.
RU
Кратко
https://t.me/c/1464748383/37027/131541
PR использует постоянный self-signed release certificate. Он создаёт одинаковый certificate-anchored designated requirement для разных бинарников и потенциально сохраняет TCC identity без Apple account.
Ограничения: Apple не рекомендует shipping self-signed apps, Gatekeeper продолжит отклонять artifact, приватный ключ нужно хранить как release secret, а реальное сохранение Accessibility/Input Monitoring ещё нужно проверить двумя последовательными builds на Apple Silicon и Intel.
Что должны сделать владельцы репозитория до Ready for review
Зеленые PR checks не подтверждают наличие signing credentials.
Оставшиеся необходимые шаги для создания сертификата подписи:
Entropy Open Source Release Signing: Self Signed Root, Code Signing, с большим сроком действия..p12..p12и пароль в защищенную резервную копию. Не коммитить и не прикладывать эти данные к релизу.base64 -i entropy-release-signing.p12 | pbcopy.MACOS_CERTIFICATE_P12_BASE64: полный base64 из предыдущего шагаMACOS_CERTIFICATE_PASSWORD: пароль экспорта.p12ergohaven/entropy, а не только в fork.До этого PR остается Draft. Bundle-ID-only requirement не используется: это небезопасно для Accessibility grants.
Related: #6
Related: #58