Communicating with a non sandboxed process inside the App Sandbox via IPC

A similar form of this question has been asked a few times on this forum, but the answers varied a lot, and things have changed since previous posts.*

My application is inside the 'App Sandbox', I want to communicate with another application which is not inside the sandbox at all.

The non-sandboxed application has an IPC file which is present in the following location: /var/folders/0x/h5vjdg1s1gb3s__gfr5mmx040000gn/T/discord-ipc-0

cbyrne@Conors-Air in ~
❯ echo $TMPDIR
/var/folders/0x/h5vjdg1s1gb3s__gfr5mmx040000gn/T/

My application can't see that file, and when I try to give it permission to see that file by using the NSOpenPanel dialog, swift-nio is unable to establish a connection to the socket:

connect(descriptor:addr:size:): Operation not permitted (errno: 1)

However, if I let my app out of the 'App Sandbox':

	<key>com.apple.security.app-sandbox</key>
	<false/>

It works fine, and my app is able to communicate with the non-sandboxed app.

So, can sandboxed apps not communicate with other non-sandboxed apps via IPC at all?

the answers varied a lot

That’s because the devil is in the details here.

Two quick questions:

  • Is the ‘client’ app sandboxed because you plan to deploy it via the Mac App Store?

  • Do you also control the ‘server’ app?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Communicating with a non sandboxed process inside the App Sandbox via IPC
 
 
Q