Hi,
Thank you for the clarification request. You are correct in your assumption.
1. "Daemon" Clarification
We are using the term "daemon" in the general sense of a persistent background helper process, not a system-wide launchd daemon (it is not registered in /Library/LaunchDaemons or managed by SMAppService).
2. Child Process (Python) Launch
The Python process is launched directly as a child process of the main Swift application.
As detailed in the "Python Daemon Launch" section of our document, we are using Swift's high-level Process API (which, as you noted, is layered on top of technologies like posix_spawn).
The specific code used is:
let process = Process()
process.executableURL = URL(fileURLWithPath: pythonExecutablePath)
// path is "AthenaSentry.app/Contents/Helpers/AthenaSentry.app/Contents/MacOS/AthenaSentry"
process.environment = /* ... */
try process.run()
3. Parent Process (Swift) Launch
The parent process is the main Swift wrapper application, AthenaSentry.app (Bundle ID com.athena.AthenaSentry). It is a standard macOS application deployed via ABM/App Store Connect and installed by JAMF. The user launches it normally from the /Applications folder, at which point it requests TCC permissions and then attempts to launch its child Python helper process.
Our central issue is that the TCC permissions (Screen Recording, Input Monitoring, Accessibility) granted by the user to the parent Swift AthenaSentry.app are not being inherited by the child Python process launched via this Process API method.
Topic:
App & System Services
SubTopic:
Processes & Concurrency
Tags: