Hello,
I recently had my Electron app notarized by Apple and then performed the following steps:
Stapling the Notarization Ticket:
xcrun stapler staple "appPath/Aiparalegal.app"
Zipping the App for Distribution:
ditto -c -k --keepParent "appPath/Aiparalegal.app" theAIParalegal.zip
However, after unzipping and attempting to launch the app, macOS displays the following message:
Apple could not verify "theAIParalegal" is free of malware that may harm your Mac or compromise your privacy.
Yet, when I run validation using:
xcrun stapler validate "theAIParalegal.app"
I receive confirmation:
The validate action worked!
spctl -a -vvv -t install "theAIParalegal.app"
theAIParalegal.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: NIPartnership LLC (M92N2796Q9)
Could you help me understand why the notarization validation appears successful, yet macOS still displays this security warning? Any advice on how to resolve this would be greatly appreciated.
Thank you!
Demystify code signing and its importance in app development. Get help troubleshooting code signing issues and ensure your app is properly signed for distribution.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello,
I recently had my Electron app notarized by Apple and then performed the following steps:
Stapling the Notarization Ticket:
xcrun stapler staple "appPath/Aiparalegal.app"
Zipping the App for Distribution:
ditto -c -k --keepParent "appPath/Aiparalegal.app" theAIParalegal.zip
However, after unzipping and attempting to launch the app, macOS displays the following message:
Apple could not verify "theAIParalegal" is free of malware that may harm your Mac or compromise your privacy.
Yet, when I run validation using:
xcrun stapler validate "theAIParalegal.app"
I receive confirmation:
The validate action worked!
I then tried restarting my computer but the problem persist
Could you help me understand why the notarization validation appears successful, yet macOS still displays this security warning? Any advice on how to resolve this would be greatly appreciated.
Thank you!
We had an issue with IDrive Online Backup which has started discussing on the Developer forum at https://developer.apple.com/forums/thread/756904 and as suggested raised a technical support ticket Case-ID: 7747625. At last the old legacy bundle ID prefix changed to to the new Team ID prefix. As a result one-time loss of keychain data occurs, however we requested and were granted an additional keychain capability that allowed access to keychain data stored under the old legacy prefix, even after transitioning to the new Team ID prefix.
We are currently facing a similar challenge with our other application, IBackup. As with the earlier case, we had a mismatch between the App ID prefix and the Team ID, which we resolved by updating the prefix to match the Team ID.
Again now encountered a blocker with Keychain data recovery. We have already requested the additional Keychain capability that would allow access to keychain data stored under the old legacy prefix, even after transitioning to the new Team ID prefix. Unfortunately, the team responsible for this has some uncertainty about the process.
Please review the details under case 102398017929 and extend this capability to our application to ensure a seamless user experience.
Topic:
Code Signing
SubTopic:
Entitlements
Hi everyone,
I applied for CarPlay Entitlements on [Date 04. 26, 2024] using CarPlay is Case ID "13045151".
I haven't received any updates or responses regarding my application yet. It's been 7 days since the application.
My service requires CarPlay integration with a Black Box device. The primary purpose of this integration is to allow users to configure device settings through CarPlay.
Furthermore, we plan to utilize the "Communication" category of Entitlements to notify users of parking incidents detected by the Black Box device while parked. This functionality is crucial for alerting drivers to potential issues affecting their vehicles.
Could anyone share their experience with the typical turnaround time for CarPlay Entitlements, especially for applications involving device integration and the "Communication" category? Is this delay normal?
Is there any way to check the application status or contact the appropriate team to inquire about its progress?
Thank you for any insights or advice you can provide!
Sincerely,
When building to macOS on GameMaker, I get the error "this identity cannot be used for signing code" when using the Developer ID Installer certificate. The certificate was neither expired nor revoked, but nonetheless I created new certificates to start fresh but am still getting that error. I don't get issues building to iOS via GameMaker, just to macOS.
If it makes any difference, I only noticed this issue started happening after I converted my Apple Developer Program account from an individual account to an organizational account, although it was weeks to months before I built to macOS via GameMaker before then, so I don't know if it correlates with that.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Hello everyone,
I’m currently developing an Electron application, and I’m trying to properly sign and notarize it for macOS. The notarization process itself seems to complete successfully—the file is accepted without issues. However, when I attempt to staple the notarization ticket to the executable, I consistently get Error 65 with TheStableAndValidateActionFailed.
The issue is puzzling because the executable does not change at any point during the process. After facing this issue multiple times in my own project, I decided to test it on a more controlled setup. I followed the steps from this https://www.youtube.com/watch?v=hYBLfjT57hU and the instructions from this macos-code-signing-example which have previously worked for others. Yet, even with this setup, I still get the same Error 65.
Below, I have attached the verbose logs for reference. I’m trying to understand what could be causing this issue—whether it’s related to certificates, the signing process, or something else entirely.
Has anyone encountered a similar problem, and if so, how did you resolve it? Any insights would be greatly appreciated!
I’ve developed a macOS app, but I’ve had trouble using a script to fully codesign it and package it into a .dmg file. I was only able to complete codesigning using the third-party app itself—not via command-line scripts.
Is it possible to write a script that automates the entire process of codesigning the app?
To provide the best user experience for those downloading the app outside of the Mac App Store, is it correct to first package it as a .app and then wrap that into a .dmg file for distribution?
Currently, the app is available on the web as a .dmg. When downloaded, it appears in a folder and can be double-clicked to launch. However, macOS displays a warning that it was downloaded from the internet. Can I use a script to remove that quarantine warning?
If possible, I’d appreciate a step-by-step explanation and a sample command-line script to:
Codesign the app properly
Package it into a signed .dmg
Remove the quarantine attribute for local testing or distribution
Is the reason I was only able to codesign it inside the third-party app due to how that app was built, or can this always be done from the command line?
Topic:
Code Signing
SubTopic:
General
I'm new to notarizing applications. I'm building an Electron application using electron-packager. The signing looks solid:
codesign -vvv --deep --strict path/to/app.app
# satisfies its Designated Requirement
But checking notarization, looks like it didn't work.
spctl --assess -vv path/to/app.app
# source=Unnotarized Developer ID
# origin=Developer ID Application: Tyson XXXX (XXXXX)
I'm wondering how to fix the "Unnotarized Developer ID".
Thanks!
Topic:
Code Signing
SubTopic:
Notarization
Hi there,
We've discovered a problem with our iOS app. We've been attempting to add a Driverkit driver to it, but any time we run the app through Testflight, the driver installs fine, but when we go to enable the driver toggle in the app's settings, the toggle stays on, but in the device logs I can see:
could not insert bundle at <private> into manager: <private>
As you would expect - this means the driver is not actually enabled and does not respond to a device being connected to the iPad.
This does not happen when building & running the app locally, nor does it happen when installing an Ad Hoc build.
We also have a different app, not yet shipped. We are able to add the driver to that app without issue. It works after going through Testflight.
What we have discovered now is that everything works fine even if we just create an entirely new app with it's own bundle IDs. I should point out that in all cases, we're keeping the capabilities the same for each of these apps/IDs - including the managed capabilities.
The bundle IDs that have this problem are older (5 years old or more). It seems like any newer ID will work, but trying to add the driver (and the associated managed capabilities) to an older app/ID results in this vague error message, with no further details.
If we inspect the resulting dexts, we can also see that the "Internal requirements code size" is different on the ones that fail. The failing ones have a size of 204 bytes, whereas the working ones all have a size of 220 bytes. Not sure if that's related but it's strikingly consistent.
Does this mean there is an issue with older app IDs, and we need Apple to manually refresh them in some way before the driverkit capabilities will work after going through Testflight? We have two apps in this state, both are of the same vintage (~5 years+).
We've been battling this issue for months on and off, so would appreciate some help.
I'm working on a build system similar to Bazel where each build action runs in a sandbox. The sandbox contains only the files that the user defined as input to ensure that the build action doesn't have any implicit dependencies. Bazel achieves this by creating a "symlink forest" to the original source files. This works, but I have observed fseventsd using significant CPU during a Bazel build, presumably because of all the symlinks that get created.
Is there a way to disable file events for a directory or a volume? The "File System Events Programming Guide" in the Documentation Archive mentions placing an empty file named no_log in the .fseventsd directory at the root of the volume, but when testing on macOS 15.5 with APFS that appears to no longer work.
Related, is a "symlink forest" the best way to create a sandbox like this? Or is there a different method one can use to provide a view of a subset of the files in a directory tree? I read up on the App Sandbox but that seems too coarse grained. Something like Linux's overlayfs would work well, and maybe one can achieve a similar functionality with firmlinks? Curious about folks thoughts here.
Thanks in advance!
I have an app that only crashes once it's been notarised. I read a few posts that essentially said before trying to identify issues by reviewing the crash report I should ensure signing and notarisation has happened correctly.
I've worked through the document "Resolving common notarization issues"
spctl -vvv --assess --type exec: gives no errors and correctly returns my developer id.
codesign -dvv: returns a timestamp
My app uses a hardened runtime.
My app shows up in Xcode as a macOS Archive (e.g not a Generic Xcode Archive)
Here is the crash report.
Translated Report (Full Report Below)
Process: Scene Finder [44479]
Path: /Users/USER/Downloads/Scene Finder.app/Contents/MacOS/Scene Finder
Identifier:
Version: 0.9 (20250206.1)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2025-02-11 13:09:03.7786 +1000
OS Version: macOS 15.3 (24D60)
Report Version: 12
Anonymous UUID: EE8B1269-0A8A-3AB6-516B-C752E8A18B5A
Sleep/Wake UUID: 436CD7CF-7B13-4A9C-9425-7EF94CC007A9
Time Awake Since Boot: 98000 seconds
Time Since Wake: 9524 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process: Scene Finder [44479]
I have a binary which I have signed with a valid developer certificate.
Here is how I verify the signature was correctly applied:
% codesign -dvv ./test_program.exe
Executable=/Users/REDACTED/code_signing/test_program.exe
Identifier=com.REDACTED.hello_world
Format=Mach-O thin (arm64)
CodeDirectory v=20500 size=489 flags=0x10000(runtime) hashes=9+2 location=embedded
Signature size=9071
Authority=Mac Developer: REDACTED NAME (REDACTED_ID)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Timestamp=Apr 16, 2025 at 11:26:43 AM
Info.plist=not bound
TeamIdentifier=REDACTED
Runtime Version=14.2.0
Sealed Resources=none
Internal requirements count=1 size=192
==============================
Additionally, I have confirmed in keychain access that my certificate is valid. Here is the output from the GUI:
Issued by: Apple Worldwide Developer Relations Certification Authority
Expires: Wednesday, April 15, 2026 at 3:50:14 PM Eastern Daylight Time
This certificate is valid
==============================
When I zip then send the executable for notarization, I get an "Invalid" response. Here is the log from that response:
% xcrun notarytool submit ./test_program.zip --keychain-profile REDACTED --wait
Conducting pre-submission checks for test_program.zip and initiating connection to the Apple notary service...
Submission ID received
id: 0d64c285-eb59-4b34-b911-0e6cbb1dbc16
Upload progress: 100.00% (6.39 KB of 6.39 KB)
Successfully uploaded file
id: 0d64c285-eb59-4b34-b911-0e6cbb1dbc16
path: /Users/REDACTED/code_signing/test_program.zip
Waiting for processing to complete.
Current status: Invalid.........
Processing complete
id: 0d64c285-eb59-4b34-b911-0e6cbb1dbc16
status: Invalid
===============================
And here is the log indicating the reason for the notarization failure:
xcrun notarytool log "0d64c285-eb59-4b34-b911-0e6cbb1dbc16" --keychain-profile REDACTED "./log_file.txt"
{
"logFormatVersion": 1,
"jobId": "0d64c285-eb59-4b34-b911-0e6cbb1dbc16",
"status": "Invalid",
"statusSummary": "Archive contains critical validation errors",
"statusCode": 4000,
"archiveFilename": "test_program.zip",
"uploadDate": "2025-04-16T16:23:38.993Z",
"sha256": "9e3bd03301f4930a0e4015873b435c8d64c291e7c63d0552f17652dc7ce16195",
"ticketContents": null,
"issues": [
{
"severity": "error",
"code": null,
"path": "test_program.zip/test_program.exe",
"message": "The binary is not signed with a valid Developer ID certificate.",
"docUrl": "https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolving_common_notarization_issues#3087721",
"architecture": "arm64"
}
]
}
==============================
The notarization server saying that it's not signed by a valid developer certificate, but to the best of my ability I have confirmed that a valid developer certificate is being used.
Topic:
Code Signing
SubTopic:
Notarization
When I first tried to sign my local unit test with the identity generated by Xcode, it failed because the intermediate certificate was missing. In that case, the error message explained that the trust chain could not be completed. But after installing the correct intermediate, codesign still fails, but no longer gives any explanation:
codesign -f -s '0EFE7E591A4E690842094B8EC5AFDFE059637D3C' build/Darwin-Xcode-arm64_obf/bin/Release/UNITTEST
build/Darwin-Xcode-arm64_obf/bin/Release/UNITTEST: replacing existing signature
build/Darwin-Xcode-arm64_obf/bin/Release/UNITTEST: errSecInternalComponent
It's the same error line "errSecInternalComponent". Is there a log somewhere that might explain what exactly is the error?
Topic:
Code Signing
SubTopic:
General
Background
I've repeatedly run into codesigning (and missing provisioning profile) issues for my Ruby/Glimmer app and am looking for ways to troubleshoot this outside of Xcode. The app structure is as follows:
PATHmanager.app
└── Contents
├── Info.plist
├── MacOS
│ └── PATHmanager
├── PkgInfo
├── Resources
│ └── AppIcon.icns
├── _CodeSignature
│ └── CodeResources
└── embedded.provisionprofile
Architecture
I have a Mac mini Apple M2 Pro with macOS Ventura 13.4. Xcode is not used directly, but the underlying command line tools (e.g., codesign, productbuild, pkgutil, xcrun) are run from a custom Ruby script.
xcodebuild -version
Xcode 14.3.1
Build version 14E300c
Questions
Is the .app directory and file structure/naming sufficient? If not, can you point me in the direction of a minimal example that does not use Xcode?
Info.plist is an XML text document (not binary), which I believe is in an acceptable format, but how do I lint this file and determine if it contains all of the necessary key/value pairs?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>PATH manager</string>
<key>CFBundleExecutable</key>
<string>PATHmanager</string>
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
<key>CFBundleIdentifier</key>
<string>com.chipcastle.pathmanager</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>PATHmanager</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.15</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1.15</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>LSMinimumSystemVersion</key>
<string>12.0</string>
<key>LSUIElement</key>
<false/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSHumanReadableCopyright</key>
<string>© 2025 Chip Castle Dot Com, Inc.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
PATHmanager is a Mach-O 64-bit executable arm64 file created by using Tebako. Does this executable need to be codesigned, or is codesigning the .app folder sufficient?
Does the .app directory need an entitlements file? Here's how I codesign it:
codesign --deep --force --verify --verbose=4 --options runtime --timestamp --sign 'Apple Distribution: Chip Castle Dot Com, Inc. (BXN9N7MNU3)' '/Users/chip/Desktop/distribution/PATHmanager.app'
Does the PATHmanager binary need an entitlements file? Here's how I codesign it:
codesign --deep --force --verify --verbose=4 --options runtime --timestamp --entitlements '/Users/chip/Desktop/PATHmanager.entitlements' --sign 'Apple Distribution: Chip Castle Dot Com, Inc. (BXN9N7MNU3)' '/Users/chip/Desktop/distribution/PATHmanager.app/Contents/MacOS/PATHmanager'
How can I verify what entitlements, if any, are required for codesigning the binary? The PATHmanager.entitlements file is an XML text file containing only the following:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
Is the embedded.provisionprofile necessary, and if so, how do I know determine if it matches the certificate or entitlements that I'm using? Additionally, is it named and located properly?
I submitted this to the AppStore several weeks ago and the reviewer reported that the executable would not load on their machine (even though it worked on mine.) Is it better for me to release via TestFlight for testing, and if so, do I need to following a separate process for codesigning (i.e., using different entitlements, profiles, certs, etc) when doing so?
I've been playing whack-a-mole with this for too long to mention and am hoping to nail down a better deployment flow, so any suggestions for improvement will be greatly appreciated. Thank you in advance.
Topic:
Code Signing
SubTopic:
General
Hello everyone,
I'm encountering significant delays with the notarization process for our Electron application using a newly created developer account. The process is taking an unusually long time (1-2 days), which is disrupting our workflow.
Details:
We've attempted notarization multiple times over the past 2 weeks.
The process consistently takes 8+ hours before I typically abort it. (due going offline etc)
Interestingly, when I check the notary history later, it shows the notarization was actually successful.
Our application package is relatively large, which might be contributing to the delay (archive: 226 mb, app:800mb)
Recent Examples:
Current submission (still in progress): 52db12c3-4a54-4e14-9d77-e141d7f28227
Previous successful submission: 49273be6-3e13-4f3f-83a4-945114d899b9
Has anyone else experienced similar issues with notarizing applications? Are there any optimizations or best practices I should implement to reduce these processing times? I'm using the default notarization feature that comes with electron forge.
Any suggestions or insights would be greatly appreciated!
Yes, this is very likely the completely wrong way to do things but I would like to ask regardless.
Currently with windows/linux I can perform an in-situ upgrade of an application by performing a download of the binary 'foo' and then doing a rename-and-replace and subsequently requesting the licencee to restart the program and all is good.
With macOS, as the binary is within the foo.app ( Contents/macOS/foo ) I imagine I cannot perform a similar operation without breaking the signing of the foo.app itself?
....or, can I individually sign the binary foo for macOS and perform the same type of operation?
Download new foo as foo.new
rename current foo.app/Content/macOS/foo -> foo.old
rename foo.new -> foo
Restart application
Again, I know this is very likely an un-macOS way of performing the task but as you can imagine with supporting cross-platform development it's usually easier to maintain a consistent method even if it's "not ideal".
Topic:
Code Signing
SubTopic:
General
Hello,
I’m facing an issue with enabling In-App Purchases (IAP) for my iOS app, and it’s causing provisioning errors during the build process.
Issue:
• In Apple Developer Portal → Certificates, Identifiers & Profiles, the In-App Purchase capability is checked but grayed out, so I can’t modify it.
• In Xcode, under Signing & Capabilities, I don’t see In-App Purchase listed.
• When trying to build, I get the following error:
Provisioning profile “BillionMines_Dev_Profile” doesn’t include the com.apple.developer.in-app-purchase entitlement.
• Automatic signing in Xcode fails with:
Xcode failed to provision this target.
What I Have Tried:
1. Verified that my App ID is explicitly defined (not a wildcard ID).
2. Regenerated and downloaded a new Provisioning Profile, ensuring it matches my app.
3. Confirmed that In-App Purchase is enabled in App Store Connect under Features.
4. Cleaned the build folder and restarted Xcode.
5. Manually added com.apple.developer.in-app-purchase to my .entitlements file.
Questions:
• Why is the In-App Purchase option grayed out in Certificates, Identifiers & Profiles?
• How can I ensure my provisioning profile includes the com.apple.developer.in-app-purchase entitlement?
• Are there additional steps required to fully activate In-App Purchases?
Any help would be greatly appreciated!
Thanks in advance.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Tags:
Bundle ID
In-App Purchase
Provisioning Profiles
Hi,
I have a project that integrates the Firebase SDK via SPM as a dependency of an internal Swift Package:
My app ⟶ My Library ⟶ Firebase SDK
The project builds successfully and can be archived locally ✅. The uploaded .ipa is valid and gets published 🚀.
However, we are now trying to automate the release process using Xcode Cloud, but the iOS Archive action is failing ❌ on Xcode Cloud.
The logs show the following error ⬇️:
error: exportArchive codesign command failed (/Volumes/workspace/tmp/XcodeDistPipeline/XcodeDistPipeline.~~~oomCvM/Root/Payload/base-ios.app/Frameworks/FirebaseAnalytics.framework: replacing existing signature
/Volumes/workspace/tmp/XcodeDistPipeline/XcodeDistPipeline.~~~oomCvM/Root/Payload/base-ios.app/Frameworks/FirebaseAnalytics.framework: invalid or corrupted code requirement(s)
Requirement syntax error(s):
line 1:178: unexpected token: <COMPANY_NAME>
)
** EXPORT FAILED **
I have been researching this issue for a while and have tried several solutions to fix it, but with no luck. Even though the error points to a specific library—the Firebase SDK—I don’t believe Firebase is the root cause. There were related issues in the past, but those were already fixed by the Firebase team, and as I mentioned, the project archives correctly when built locally.
On the other hand, the error states:
line 1:178: unexpected token: <COMPANY_ACRONYM>
This makes me wonder if there’s an issue parsing our Team Name during the re-signing process, as it contains special characters ":
"name": "Apple Distribution: Company Full Name "COMPANY_ACRONYM""
All libraries are getting rejected with errors like:
not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs
Topic:
Code Signing
SubTopic:
General
Thanks in advance for any hint to solve the following account problem:
I tried to store credentials for notarizing.
Presumably with the wrong combination of entries (similar to signing) – using the name of my university instead of my Apple Account.
xcrun notarytool store-credentials "notarytool-password" --apple-id "Berliner Hochschule fuer Technik" --team-id "8YAW3HL2QP" --password "my Apple-Account-pw"
.. retried assuming a syntax error (like missing ").
Got the error message:
This process stores your credentials securely in the Keychain. You reference these credentials later using a profile name.
Validating your credentials...
`Error: HTTP status code: 401. Your Apple ID has been locked. Visit iForgot to reset your account (https://iforgot.apple.com), then generate a new app-specific password. Ensure that all authentication arguments are correct.`
Happy to see: Signing is not affected and I still an can log in to my account on developer.apple.com. So notarizing “only” seems to be affected.
But how to reset the account to resolve the issue?
The iforgot.apple.com link does not help - I provided my iPhone-number but did not receive further messages – neither on the iPhone nor on my “developer” macbook.
Many thanks in advance
All the best
Florian