Back to skill

Security audit

Workspace Audit

Security checks across malware telemetry and agentic risk

Overview

This skill is a coherent workspace audit tool, but it also tells agents to change or delete local workspace and Hermes agent data without consistently requiring user approval.

Review this before installing if you expect a read-only audit. Use it only when you want an agent to perform active workspace maintenance, and require explicit approval before any move, rewrite, cron change, config change, database maintenance, archive compression with source removal, or log/session deletion. Treat the Hermes procedure as high-impact because it touches local agent memory, session history, cron delivery state, and security-sensitive configuration.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (14)

Lp3

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding
The skill clearly instructs the agent to read workspace files, generate reports, and update files, yet it declares no permissions. This creates a policy/behavior mismatch that can cause silent overreach: operators may assume the skill is read-only or tightly scoped when it actually performs file reads and writes across the workspace.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The skill is presented as an audit procedure, but it crosses from read-only diagnosis into operational modification by moving session artifacts and prescribing retention changes. In an agent context, instructions framed as routine maintenance can cause non-reversible workspace state changes or conceal evidence without explicit user approval, which exceeds a safe audit-only scope.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
These instructions direct modification of security-sensitive configuration and direct database maintenance from within an audit playbook. Changing pruning behavior or vacuuming a live state database can alter retention, destroy forensic value, or affect running services, which is not justified by a diagnosis-only skill and is especially risky when executed by an autonomous agent.

Context-Inappropriate Capability

Medium
Confidence
99% confidence
Finding
This section instructs compression, deletion, and cleanup of archives, session files, cron artifacts, and logs, all of which can remove operational history and evidence. In an auditing skill, destructive cleanup unrelated to pure diagnostics creates a real risk of data loss, incident-response blind spots, and accidental deletion of still-needed workspace content.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The reference document normalizes making direct workspace modifications during an 'audit' run, including moving files and adding front matter, which exceeds a purely diagnostic scope. This is dangerous because an agent following the skill may perform non-user-approved state-changing actions on user data under the benign label of maintenance or auditing.

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The statement that moving files is 'safe' and needs no user approval directly encourages autonomous data-changing behavior without consent. Even reversible moves can break references, indexing, workflows, or user expectations, making this a meaningful integrity and availability risk in a workspace-management skill.

Vague Triggers

Medium
Confidence
78% confidence
Finding
The trigger condition includes subjective language such as when the workspace feels stale, bloated, or inconsistent, which is broad enough to activate during ordinary use. Overbroad triggers increase the chance the skill runs unnecessarily and initiates file inspection or modification without a clear user-driven need.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The command removes the entire archive directory after compression with only an integrity spot-check, but without an explicit user-facing warning that the originals will be permanently deleted. If the archive is incomplete, corrupted, or mis-scoped, important session history can be lost and recovery may be difficult.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The guidance deletes session checkpoint files after archival without a clear warning that deletion is irreversible and that resumability or local recovery may be affected. Even if data is believed redundant, redundancy assumptions can be wrong in edge cases, making silent loss plausible.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The direct delete of old cron session files omits an explicit warning that historical execution context and troubleshooting artifacts will be lost. In practice, this can impede debugging or retrospective analysis, especially if a cron-related issue is discovered later.

Missing User Warnings

Low
Confidence
92% confidence
Finding
The log cleanup commands remove rotated and diagnostic logs without clearly warning that operational and incident diagnostics will be lost. While lower impact than deleting primary data, it still weakens auditability and can hinder root-cause analysis after failures or abuse.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The document instructs that file moves may occur without warning or user approval despite being a destructive-in-practice state change. In this skill context, that is especially risky because the tool operates over broad workspace content, so a mistaken heuristic or false positive could silently reorganize or hide important files.

Session Persistence

Medium
Category
Rogue Agent
Content
- **False-positive duplicates (pre-v1.1):** The original baseline script flat-listed `memory/*.md` + `memory/archive/*.md` + `memory/clawcast/*.md` together and computed duplicate dates across the union. This reported 48 "duplicates" when only 3 were real file-name collisions — the rest were a daily log and a same-day clawcast note legitimately coexisting. Fixed in v1.1: duplicates are now detected per-category and tagged `category:date`. If you ever adapt this script to a new workspace, keep the per-category isolation; do not collapse back to a flat list.
- **"Same FM date" ≠ "duplicate file".** A daily log and a topical note (travel, reading, study) can share a date because multiple things happen in a day. Check filename *and* content type before merging — if the filenames differ meaningfully, they are almost certainly not duplicates.
- **Subdirectory FM coverage is intentionally low.** `archive/`, `diary/`, `agent-productivity/` historically have little or no front matter. This is expected and not a P0. Chase the `toplevel` FM coverage to 100% first; subdirectory FM is a P3/P4 cleanup at best.
- **execute_code blocked under cron profile.** When running this audit from a cron job (or any session with `approvals.cron_mode: approve`), `execute_code` is denied. Write ad-hoc Python to `/tmp/script.py` and run it via `terminal` instead — the baseline/diagnose/validate scripts already work this way.
- **Session archive ≠ state.db.** Files under `~/.hermes/sessions/` (`.jsonl` transcripts, `session_*.json` checkpoint dumps) are raw exports that `session_search` never reads — search uses FTS on `state.db`. Before deleting or compressing old session files, verify they overlap with state.db's date range; if so, they're 100% redundant. The default cleanup is `tar.gz` compress (~80% reduction), not `rm`.
- **Dead cron vs stale cron.** A cron job with `last_status: ok` but `last_delivery_error: [99992402]` = **delivery** problem (fixable, clear stale thread_id). A cron job whe
...[truncated 25 chars]
Confidence
90% confidence
Finding
Write ad-hoc Python to `/tmp/script.py` and run it via `terminal` instead — the baseline/diagnose/validate scripts already work this way. - **Session archive ≠ state.db.** Files under `~/.hermes

Session Persistence

Medium
Category
Rogue Agent
Content
## Tools Note

- `execute_code` is blocked in cron sessions — write a standalone Python
  script to `/tmp/` and run it via `terminal` instead.
- Multi-line terminal commands with heredocs or long pipes may get truncated
  by the terminal tool. Use single-line commands or short scripts.
Confidence
88% confidence
Finding
write a standalone Python script to `/tmp/` and run it via `terminal` instead. - Multi-line terminal commands with heredocs or long pipes may get truncated by the terminal tool. Use single-line co

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.