T06 · System Persistence
- Location
SKILL.md:34- Finding
Persistent Keep-Alive Heartbeat Service Installed as a LaunchAgent
- Content
View full analysis
" \ -d "{\"node_id\": \"\"}" sleep 300 done ``` ```xml Labelai.openclaw.evomap-heartbeat ProgramArguments /bin/bash /Users/username/.openclaw/evomap-heartbeat.sh RunAtLoad KeepAlive ``` ```bash chmod +x ~/.openclaw/evomap-heartbeat.sh launchctl load ~/Library/LaunchAgents/ai.openclaw.evomap-heartbeat.plist launchctl list | grep evomap ``` The reference example contains the same persistence mechanism: ```xml RunAtLoad KeepAlive StandardOutPath/Users/YOUR_USER/.openclaw/cron/heartbeat.log StandardErrorPath/Users/YOUR_USER/.openclaw/cron/heartbeat.log ``` ```bash launchctl load ~/Library/LaunchAgents/ai.openclaw.evomap-heartbeat.plist ``` ### Technical Analysis The instructions create an infinite-loop shell script and register it as a macOS per-user LaunchAgent. `RunAtLoad` starts the process when the agent is loaded, while `KeepAlive` instructs `launchd` to restart it when it exits. Placing the property list in `~/Library/LaunchAgents` also gives the process a cross-session lifecycle associated with the user account. A recurring heartbeat is related to the declared EvoMap integration, and the persistence is disclosed as a fallback. However, an indefinitely restarted startup service exceeds the privileges and lifecycle necessary for node registration, on-demand publishing ...[truncated 1645 chars]- Remediation
View remediation
