octopusgarage-heat-guard
A macOS system-health guardian. Each invocation is one tick: run the
deterministic script (which already auto-cleaned safe junk), then YOU (the AI)
review the remaining candidates, and notify-and-confirm before terminating
anything ambiguous. How this skill is scheduled is the operator's concern.
Setup
cd "$SKILL_DIR/scripts" && uv sync --quiet
Tick workflow
- Run the scan (auto-clean happens inside; it only kills zombies + leaked shells):
Useuv run python -m heat_guard.cli scan--dry-runto observe without killing. - Read the JSON. If
candidatesis empty andsystem_flagsis empty → report "healthy" and stop. This is the cheap common path. - For each candidate, judge expected vs anomalous using its
command,cpu_time_s,etime_s,pcpu,rss_mb,tripped, and the decision state in~/.heat-guard/state.json:- Known-good (a build/encode you recognize, an agent session the user already acknowledged, THIS session or sibling loop/bot sessions) → skip.
- Previously marked keep/snooze and still valid → skip.
- Genuinely anomalous and unacknowledged → notify.
If you need a candidate's working directory or owner to judge it (e.g. which project an agent session belongs to), fetch it on demand:
lsof -a -p <pid> -d cwdandps -o user= -p <pid>.
- Notify + confirm (never auto-kill): send the user a concise message —
what, why it's suspicious, your recommendation — and ask them to confirm
termination. Prefer the live Telegram channel (
reply); if unavailable, use the fallback inheat_guard/telegram.py. Record the candidate aspendingin~/.heat-guard/state.json. - On the user's reply: confirm → terminate (SIGTERM, then SIGKILL if it survives) and report; keep/snooze → record it so you stop nagging.
Hard rules
- The script NEVER kills anything but zombies + leaked shells. You NEVER kill a candidate without explicit user confirmation.
- Never touch this session or its ancestors (the script already protects them).
- See
references/triage-guidance.mdfor how to judge anomalies and message copy.