SMAppService Error 108 "Unable to read plist" on macOS 15 Sequoia - Comprehensive Test Case
Summary
We have a fully notarized SMAppService implementation that consistently fails with Error 108 "Unable to read plist" on macOS 15 Sequoia, despite meeting all documented requirements. After systematic testing including AI-assisted analysis, we've eliminated all common causes and created a comprehensive test case.
Error: SMAppServiceErrorDomain Code=108 "Unable to read plist: com.keypath.helperpoc.helper"
📋 Complete Repository: https://github.com/malpern/privileged_helper_help
What We've Systematically Verified ✅
- Perfect bundle structure: Helper at Contents/MacOS/, plist at Contents/Library/LaunchDaemons/
- Correct SMAuthorizedClients: Embedded in helper binary via CREATE_INFOPLIST_SECTION_IN_BINARY=YES
- Aligned identifiers: Main app, helper, and plist all use consistent naming
- Production signing: Developer ID certificates with full Apple notarization and stapling
- BundleProgram paths: Tested both Contents/MacOS/helperpoc-helper and simplified helperpoc-helper
- Entitlements: Tested with and without com.apple.developer.service-management.managed-by-main-app
What Makes This Different
- Systematic methodology: Not a "help me debug" post - we've done comprehensive testing
- Expert validation: AI analysis helped eliminate logical hypotheses
- Reproduction case: Minimal project that demonstrates the issue consistently
- Complete documentation: All testing steps, configurations, and results documented
Use Case Context
We're building a keyboard remapper that integrates with https://github.com/jtroo/kanata and needs privileged daemon registration for system-wide keyboard event interception.
Key Questions
- Does anyone have a working SMAppService implementation on macOS 15 Sequoia?
- Are there undocumented macOS 15 requirements we're missing?
- Is Error 108 a known issue with specific workarounds?
Our hypothesis: This appears to be a macOS 15 system-level issue rather than configuration error, since our implementation meets all documented Apple requirements but fails consistently.
Has anyone encountered similar SMAppService issues on macOS 15, or can confirm a working implementation?