Thanks Quinn - answering your questions and sharing what we've since found.
The alert is the standard macOS login keychain prompt, here's an example from an unrelated app to our app:
Regarding the crash report: yes, Apple Support captured a securityd crash on an affected machine (securityd-2026-08-20-105000.ips). The key frames:
`Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
(Security) [com.apple.security:seckey] SecKeyCreateSignature failed:
Error Domain=NSOSStatusErrorDomain Code=-67680
"CSSM Exception: -2147413942 CSSMERR_DL_INVALID_DB_HANDLE"
(Security) [com.apple.securityd:integrity] dbBlobVersion() failed
for a CssmError: 1 unknown error 1=1`
Here are two example .ips crash files after reproducing the issue on my own machine.
securityd-2026-09-02-113000.ips
securityd-2026-09-01-160001.ips
We believe we identified the root cause and would like you to confirm.
Our cert-lookup code used the legacy CSSM APIs: SecKeychainOpen (and SecKeychainCreate in one path) to open keychains by file path, then queried with kSecMatchSearchList. The opened keychain refs were never released (no CFRelease), so each lookup leaked a DL/DB handle into securityd.
Our theory is that those leaked/stale DB handles are what surface as CSSMERR_DL_INVALID_DB_HANDLE and eventually crash securityd. Once securityd is down, macOS falls back to prompting for the login keychain password - which explains why unrelated apps got hit too (they weren't the cause, they were just the next thing to touch the keychain after the crash).
This lines up with our two workarounds: a clean reinstall resets the state and delays the buildup, and setting the item ACL to "allow all applications" removes the repeated per-app access checks that were driving the lookups.
We believe this issue is tied to 26.6.x specifically because it's the same binary, unchanged for a long time - we only started seeing this after machines moved to 26.6.x. That also matches Apple's release notes on macOS 26.6 mentioning Keychain CVEs specifically. On earlier macOS the same code didn't crash securityd.
To be clear on your endpoint-security question: we're a network/VPN agent (with a system/network extension), not doing anything that should be poking securityd on a loop - the keychain calls are only our own client-cert lookups.
We currently applied a fix that migrated every cert-lookup path off SecKeychain*/CSSM to SecItemCopyMatching. Where we still need user-vs-system scoping, we build the search list via SecKeychainCopyDomainSearchList rather than opening keychains by path, so no keychain refs are held or leaked. After this, the leak is gone and we no longer reproduce the crash or the prompts.
What we'd like confirmed:
Is our root cause plausible from your side? Do the leaked legacy SecKeychain* DB handles driving CSSMERR_DL_INVALID_DB_HANDLE / the securityd SIGSEGV, made fatal by the macOS 26.4/26.6 keychain changes?
Is fully moving to SecItem* (default keychain, no SecKeychain*) the right long-term direction, or is there extra guidance for apps that still need to scope lookups to a specific keychain?
Thanks again.