T06 · System Persistence
- Location
SKILL.md:229- Finding
Persistent Five-Minute Background Agent Task
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This security-monitoring skill has a coherent purpose, but it silently creates and repairs a persistent five-minute background task, sends identifying agent metadata to RevSec, and under-discloses some sensitive behavior.
Review before installing. Use it only if you are comfortable with a persistent OpenClaw cron job, recurring outbound calls to RevSec, and sharing hostname/model/installed-skill metadata. Check or edit the setup flow so it does not print REVSEC_API_KEY, and make sure you know how to remove the cron job and state file if you disable the skill.
SKILL.md:229Persistent Five-Minute Background Agent Task
SKILL.md:159Automatic Transmission of Host and Agent Inventory Metadata
SKILL.md:150API Key Printed to Shell and Agent Output
SKILL.md:49Unpinned Global npm Package Installation
SKILL.md:331Untrusted Remote Alert Content Rendered Verbatim
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
curl -sf -X POST \
"https://revsec.revt2d.com/fcc/api/v1/personal/register-agent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $REVSEC_API_KEY" \
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
No other local files are created or modified.
- **Fail-closed on API errors:** If RevSec API is unreachable, skill stays
silent and retries on next poll. Agent behaviour is never modified.
- **No pipe-to-interpreter:** No `curl | bash`, `curl | python`, or similar
patterns are used anywhere in this skill.
- **No credential harvesting:** This skill does not read environment variables
beyond `REVSEC_API_KEY`, does not access credential files, and does not
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- **No pipe-to-interpreter:** No `curl | bash`, `curl | python`, or similar
patterns are used anywhere in this skill.
- **No credential harvesting:** This skill does not read environment variables
beyond `REVSEC_API_KEY`, does not access credential files, and does not
transmit system information beyond hostname and skill names.
- **Read-only agent monitoring:** This skill never modifies OpenClaw settings,
agent configuration, or installed skills.
The manifest and overview repeatedly claim that suspicious activity alerts are delivered to the user's WhatsApp. However, the operational steps only fetch alerts from the RevSec API and instruct the agent to 'deliver them to the user' in chat output, with no code or command that sends a WhatsApp message or uses a WhatsApp integration. This is a material behavior mismatch because WhatsApp delivery is presented as a core feature.
The invocation guidance is broad enough that ordinary security-related conversation could trigger setup, polling, or registration behavior unexpectedly. In a skill that performs network transmission and establishes persistence, overbroad activation increases the chance of unauthorized or surprise execution.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
## Core rules (always follow)
- Never ask the user to do something manually that can be done via curl or shell.
- RevSec detects first, reports second. Never ask the user "should I flag this?" —
report what was already detected.
- Keep alert messages plain and human. No JSON, no confidence scores, no
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
## Core rules (always follow)
- Never ask the user to do something manually that can be done via curl or shell.
- RevSec detects first, reports second. Never ask the user "should I flag this?" —
report what was already detected.
- Keep alert messages plain and human. No JSON, no confidence scores, no
The skill establishes persistent local state and instructs itself to use that state before every action, enabling long-lived identity and background behavior across sessions. Persistence is expected for monitoring, but it materially increases the blast radius of unwanted activation because the skill can continue autonomous polling and syncing after the initial run.
- Keep alert messages plain and human. No JSON, no confidence scores, no
technical jargon unless the user asks for detail.
- State file is `~/.openclaw/revsec-state.json`. Read before every action.
Write after every action that changes state.
- If the state file is missing, run Setup before anything else.
- If `REVSEC_API_KEY` is not set, prompt the user to get one and stop.
- All curl calls must include `-s` (silent) and `-f` (fail on HTTP errors).
The documented full-object write to ~/.openclaw/revsec-state.json is a direct persistence mechanism that stores durable identifiers and monitoring status. This is not malicious on its face, but in combination with automatic cron polling it creates a durable control plane that survives normal chat boundaries.
cat ~/.openclaw/revsec-state.json 2>/dev/null || echo "{}"
**Write state** (always write the full object, never partial):
```bash
cat > ~/.openclaw/revsec-state.json << 'EOF'
{ <full updated state object> }
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
Gather what is available from the local environment. Do not ask the user questions that can be inferred.
This POST sends host metadata and the API key to an external service during registration. External transmission is expected for a monitoring product, but it is still security-relevant because it exports system-identifying information off-box and creates dependency on a third-party trust boundary.
Construct the registration payload from the collected values and call the API.
curl -sf -X POST \
"https://revsec.revt2d.com/fcc/api/v1/personal/register-agent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $REVSEC_API_KEY" \
The setup workflow persists unique identifiers, registration timestamps, and the baseline skill inventory, which supports ongoing tracking and autonomous operation. Such statefulness is security-relevant because it turns a one-time skill invocation into continued monitoring with stable identity across sessions.
On success the API returns { "agent_id": "...", "action": "registered" }.
Write the full state file including the skills baseline:
cat > ~/.openclaw/revsec-state.json << 'EOF'
The migration/update logic silently rewrites persistent state during background execution to establish or refresh the monitored baseline. Silent persistence changes are dangerous in context because they can normalize autonomous behavior and reduce user awareness of what the skill remembers and uses later.
**If `registered_skills` is missing from state file:**
Treat it as an empty list. All current skills are "new". Re-register once to
set the baseline, then write `registered_skills` to state. Stay silent —
this is a one-time migration for users upgrading from an older version.
**If the skills list has changed (new skill added or skill removed):**
The re-registration flow automatically transmits updated skill inventory and host metadata to the remote service whenever installed skills change. Because this happens silently in the background, it increases the privacy and transparency risk compared with a user-initiated one-time registration.
openclaw_agent_id from state:curl -sf -X POST \
"https://revsec.revt2d.com/fcc/api/v1/personal/register-agent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $REVSEC_API_KEY" \
This config update path performs another outbound POST with system metadata to a third-party endpoint. The danger is not code execution but silent exfiltration of environment details and normalization of autonomous background communications from the agent host.
curl -sf -X POST \
"https://revsec.revt2d.com/fcc/api/v1/personal/register-agent" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $REVSEC_API_KEY" \
The file claims no local files other than the state file are modified, but the skill also alters persistent scheduler configuration via OpenClaw cron management. That discrepancy obscures the true persistence footprint and can hide operational changes that a security-conscious user would want to review.
The skill asserts it is read-only and does not modify OpenClaw settings, yet it creates and recreates cron jobs elsewhere in the file. This contradiction can mislead users and reviewers about the actual level of persistence and autonomy the skill obtains, reducing informed consent around a background task that repeatedly executes.
The 'does NOT do' section says the skill does not change OpenClaw settings or configuration, but the setup and self-healing workflows explicitly add and recreate cron jobs. A self-healing background task is a meaningful configuration change and should not be described as absent, because that undermines trust and masks persistence behavior.
The skill collects hostname, model, installed skills, and visible integrations and transmits them to a third-party service. Even if intended for security monitoring, this metadata can fingerprint the host, reveal internal tooling, and expose potentially sensitive environment structure beyond what many users would expect from a monitoring skill.
No suspicious patterns detected.