Document security scoped bookmark fails with helper app

I have a macOS app with a helper tool that communicates via an XPC connection. In 10.15 Beta 4, a document-based security scoped bookmark fails when it is passed from the main macOS app to the helper app.



In the sample code below from the main app, a bookmark is created from a URL and the attribute is saved on “/Users/tperfitt/passing”:



NSURL *wimURL=[NSURL fileURLWithPath:@"/Users/tperfitt/Desktop/test.winclone/Windows.wim"];

NSError *error;

NSData *bookmark = [wimURL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope

includingResourceValuesForKeys:nil

relativeToURL:[NSURL fileURLWithPath:@"/Users/tperfitt/passing"]

error:&error];



If I resolve this in the main app, it resolves fine. However, if I pass the NSData to the helper app over an XPC connection and attempt to resolve it, it resolves as nil and error is set. The system log shows:



2019-07-23 18:02:03.577313-0500 localhost com.twocanoes.WincloneHelper[3026]: (CoreServicesInternal) the ScopedBookmarkAgent service could not be found (configuration error)



I verified that the NSData is being passed from the main app to the helper app:



NSURL *url = [NSURL URLByResolvingBookmarkData:data

options:NSURLBookmarkResolutionWithSecurityScope

relativeToURL:[NSURL fileURLWithPath:@"/Users/tperfitt/passing"]

bookmarkDataIsStale:NULL

error:&error];



This returns nil and the error is set as :



Error Domain=NSCocoaErrorDomain Code=256 "ScopedBookmarksAgent did not return error domain during resolution" UserInfo={NSDebugDescription=ScopedBookmarksAgent did not return error domain during resolution}



The file has an xattr on it:



root@MacBook-Pro ~ # xattr passing

com.apple.security.private.scoped-bookmark-key



I expected that the helper tool could resolve the URL and have access to the file. Instead, it returned nil.

Replies

I forgot to mention that this is not a sandboxed app, but is hardened (both main and helper app).

This thread keeps coming up in my Google searches. Did you ever find an answer/solution?