Install
openclaw skills install eva-security-auditRun a non-interactive OpenClaw security audit that produces a structured BLUF report with posture rating, ranked findings, and one-line fix commands.
openclaw skills install eva-security-auditNon-interactive security snapshot for OpenClaw deployments.
Runs openclaw security audit --deep, parses the output, and formats a
structured BLUF report that can be sent to memory, Telegram, or stdout.
This skill is a single SKILL.md file. You are reading its entire source right now.
openclaw security audit --deep locallyYou can verify by running: openclaw security audit --deep yourself — this skill only formats that output.
Designed to be called by automation, agents, or cron — not a wizard.
For interactive hardening (firewall, SSH, OS updates), use the healthcheck skill instead.
openclaw security audit --deep
Capture full output. If running in background:
openclaw security audit --deep > /tmp/audit-$(date +%Y%m%d-%H%M).txt 2>&1
Extract every finding and classify by severity:
| Severity | Condition |
|---|---|
| CRITICAL | Immediate risk — data exposure, auth bypass, writable secrets |
| WARN | Escalate if unmitigated >7 days |
| INFO | Context only — no action required |
| Rating | Criteria |
|---|---|
| 🟢 GREEN | 0 critical, ≤1 warn |
| 🟡 YELLOW | 1–2 critical OR ≤3 warn |
| 🔴 RED | ≥3 critical OR unmitigated persistence detected |
Produce this exact structure — fill in real values, omit empty sections:
SECURITY AUDIT — YYYY-MM-DD HH:MM
POSTURE: [GREEN/YELLOW/RED] — X critical · Y warn · Z info
BLUF: [One sentence: overall risk and the single most important action.]
CRITICAL
1. [finding-id] [Description — blast radius]
Fix: [exact command or config change]
2. ...
WARN
1. [finding-id] [Description]
Fix: [exact command or config change]
INFO
- [finding-id] [Context note]
NEXT STEPS
1. Apply fixes above (copy-paste ready).
2. Re-run: openclaw security audit --deep
3. Log findings: append to memory/YYYY-MM-DD.md
Audit complete. Re-run after each fix to confirm POSTURE GREEN.
Rules for the report:
Choose one or more delivery targets based on user context:
Memory (default for scheduled runs):
# Append to today's memory file
echo "[audit result]" >> memory/$(date +%Y-%m-%d).md
Telegram (if BOT_TOKEN and CHAT_ID are in environment):
import os, requests
requests.post(
f"https://api.telegram.org/bot{os.getenv('TELEGRAM_BOT_TOKEN')}/sendMessage",
json={"chat_id": os.getenv('MASTER_TELEGRAM_ID'), "text": report}
)
Stdout only: print the report and exit.
These are the most common findings and their fixes. Apply and re-run to confirm:
| Finding ID | Fix |
|---|---|
fs.config.perms_writable | chmod 600 ~/.openclaw/openclaw.json |
skills.code_safety | Review flagged skill source — remove if untrusted |
gateway.nodes.deny_commands_ineffective | Update denyCommands to use exact node command IDs (e.g. canvas.present not canvas) |
gateway.sandbox_disabled | Set sandbox.mode to "on" in openclaw.json for untrusted skill execution |
gateway.auth_missing | Set gateway.auth.enabled: true and configure allowed origins |
Apply all CRITICAL fixes first, then re-run before addressing WARNs.
To run this audit automatically (e.g. daily at 04:00):
openclaw cron add --name "security-audit:daily" --cron "0 4 * * *" --prompt "Run the eva-security-audit skill and send the report to memory and Telegram."
Check scheduled jobs:
openclaw cron list
--fix (applies OpenClaw safe defaults automatically): openclaw security audit --deep --fix
Confirm impact before running --fix in production.openclaw security audit --deep --jsonhealthcheck skill.