mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
Rewires @LVT382009's disk-guardian (PR #12212) from a skill-plus-script into a plugin that runs entirely via hooks — no agent compliance needed. - post_tool_call hook auto-tracks files created by write_file / terminal / patch when they match test_/tmp_/*.test.* patterns under HERMES_HOME - on_session_end hook runs cmd_quick cleanup when test files were auto-tracked during the turn; stays quiet otherwise - /disk-guardian slash command keeps status / dry-run / quick / deep / track / forget for manual use - Deterministic cleanup rules, path safety, atomic writes, and audit logging preserved from the original contribution - Protect well-known top-level state dirs (logs/, memories/, sessions/, cron/, cache/, etc.) from empty-dir removal so fresh installs don't get gutted on first session end The plugin system gains a bundled-plugin discovery path (<repo>/plugins/ <name>/) alongside user/project/entry-point sources. Memory and context_engine subdirs are skipped — they keep their own discovery paths. HERMES_DISABLE_BUNDLED_PLUGINS=1 suppresses the scan; the test conftest sets it by default so existing plugin tests stay clean. Co-authored-by: LVT382009 <levantam.98.2324@gmail.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| disk_guardian.py | ||
| plugin.yaml | ||
| README.md | ||
disk-guardian
Auto-tracks and cleans up ephemeral files created during Hermes Agent
sessions — test scripts, temp outputs, cron logs, stale chrome profiles.
Scoped strictly to $HERMES_HOME and /tmp/hermes-*.
Originally contributed by @LVT382009 as a
skill in PR #12212. Ported to the plugin system so the behaviour runs
automatically via post_tool_call and on_session_end hooks — the agent
never needs to remember to call a tool.
How it works
| Hook | Behaviour |
|---|---|
post_tool_call |
When write_file / terminal / patch creates a file matching test_*, tmp_*, or *.test.* inside HERMES_HOME, track it silently as test / temp / cron-output. |
on_session_end |
If any test files were auto-tracked during this turn, run quick cleanup (no prompts). |
Deletion rules (same as the original PR):
| Category | Threshold | Confirmation |
|---|---|---|
test |
every session end | Never |
temp |
>7 days since tracked | Never |
cron-output |
>14 days since tracked | Never |
| empty dirs under HERMES_HOME | always | Never |
research |
>30 days, beyond 10 newest | Always (deep only) |
chrome-profile |
>14 days since tracked | Always (deep only) |
| files >500 MB | never auto | Always (deep only) |
Slash command
/disk-guardian status # breakdown + top-10 largest
/disk-guardian dry-run # preview without deleting
/disk-guardian quick # run safe cleanup now
/disk-guardian deep # quick + list items needing prompt
/disk-guardian track <path> <category> # manual tracking
/disk-guardian forget <path> # stop tracking
Safety
is_safe_path()rejects anything outsideHERMES_HOMEor/tmp/hermes-*- Windows mounts (
/mnt/cetc.) are rejected - The state directory
$HERMES_HOME/disk-guardian/is itself excluded $HERMES_HOME/logs/,memories/,sessions/,skills/,plugins/, and config files are never tracked- Backup/restore is scoped to
tracked.json— the plugin never touches agent logs - Atomic writes:
.tmp→ backup → rename