Skip to content

Fix OSX quick-enroll: stop osqueryd before unload#807

Merged
javuto merged 2 commits into
jmpsec:mainfrom
kimjune01:fix/osx-quick-enroll-reload
May 11, 2026
Merged

Fix OSX quick-enroll: stop osqueryd before unload#807
javuto merged 2 commits into
jmpsec:mainfrom
kimjune01:fix/osx-quick-enroll-reload

Conversation

@kimjune01
Copy link
Copy Markdown
Contributor

Re-enrolling an OSX node with osqueryd already running fails because launchctl unload returns an error when the service is still active. The stopOsquery function on Darwin needs to stop the service before unloading it.

This adds a launchctl stop call before the unload, matching the pattern used on other platforms where the service is stopped before removal.

Fixes #57

kimjune01 added 2 commits May 11, 2026 12:06
When re-enrolling an OSX node where osqueryd is already running,
the quick-add script would fail with "service already loaded" error.

The issue was that launchctl unload alone doesn't stop a running
service - it only marks it for removal. This caused the subsequent
launchctl load to fail.

Fixed by adding launchctl stop before unload, ensuring the service
is fully stopped before attempting to reload it.

Fixes jmpsec#57
launchctl list without sudo only shows user-session services. osqueryd
runs as a system LaunchDaemon, so the conditional check always fails
for non-root users, leaving the daemon running during re-enrollment.

Replace conditional check with unconditional sudo launchctl unload that
tolerates failure. Guarantees system-level unload regardless of shell
domain.
@javuto javuto merged commit b294579 into jmpsec:main May 11, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Quick-enroll for OSX does not reload osqueryd

2 participants