disk-cleanup
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 |
|---|---|
pre_tool_call |
Snapshot which paths named in the call's arguments do not exist yet, keyed by the owning task/session plus tool_call_id (the id alone is not unique: llama.cpp reuses one constant id). |
post_tool_call |
When write_file / terminal / patch creates a file matching test_*, tmp_*, or *.test.* inside HERMES_HOME — a path named in the call that did not exist before it — track it silently as test / temp / cron-output. Existing files the call edits, runs or lists are never tracked, and neither is any path the call's own snapshot did not cover (e.g. one another plugin's modify hook swapped in). Calls without a tool_call_id (execute_code RPC) are not tracked. |
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-cleanup status # breakdown + top-10 largest
/disk-cleanup dry-run # preview without deleting
/disk-cleanup quick # run safe cleanup now
/disk-cleanup deep # quick + list items needing prompt
/disk-cleanup track <path> <category> # manual tracking
/disk-cleanup 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-cleanup/is itself excluded $HERMES_HOME/logs/,memories/,sessions/,skills/,plugins/, and config files are never tracked- User project trees (
workspace/,projects/,plans/,home/,patches/,skins/,themes/,contributors/,profiles/,backups/) andkanban/(task attachments/workspaces) are never tracked or swept, even for files namedtest_*/tmp_* - A tracked directory under a protected top level (e.g.
cache/, which holds terminal snapshots) is never removed; only its files age out. Stale entries are logged asSKIPPEDand dropped - Backup/restore is scoped to
tracked.json— the plugin never touches agent logs - Atomic writes:
.tmp→ backup → rename