openclaw-audit-watchdog

Automated daily security audits for OpenClaw agents with DM delivery and optional email reporting. Runs deep audits, creates or updates a recurring cron job, and sends formatted reports to configured recipients.

By prompt-security · 745 installs

npx skills add prompt-security/clawsec --skill openclaw-audit-watchdog

Source repository · Upstream listing

Prompt Security Audit (openclaw) Vercel Skills Installation Install with the Vercel Skills CLI for this harness: Installation Options You can get openclaw audit watchdog in two ways: Option A: Bundled with ClawSec Suite (Recommended) If you've installed clawsec suite, you may already have this! Openclaw audit watchdog is bundled alongside ClawSec Suite to provide crucial automated security audit capabilities. When you install the suite, if you don't already have the audit watchdog installed, it will be deployed from the bundled copy. Advantages: Convenient no separate download needed Standard location installed to ~/.openclaw/skills/openclaw audit watchdog/ Preserved if you already have audit watchdog installed, it won't be overwritten Single verification integrity checked as part of suite package Option B: Standalone Installation (This Page) Install openclaw audit watchdog independently without the full suite. When to use standalone: You only need the audit watchdog (not other suite components) You want to install before installing the suite You prefer explicit control over audit watchdog installation Advantages: Lighter weight installation Independent from suite Direct control over installation process Standalone installation usually involves a network download from the published GitHub release. Verify the release source and archive integrity before installing it on production hosts. Continue below for standalone installation instructions. Release Artifact Verification For standalone installs, verify the signed release manifest before trusting SKILL.md , skill.json , or the archive. The skill.json file is the package metadata/SBOM source, and the release pipeline signs checksums.json with the ClawSec release key. Only install or extract the archive after this verification succeeds. Operational requirements Required runtime: openclaw node bash Optional runtime: sendmail for local MTA delivery SMTP relay via PROMPTSEC SMTP HOST / PROMPTSEC SMTP PORT git only if PROMPTSEC GIT PULL=1 This skill is not always on by default, but when invoked it creates or updates an unattended openclaw cron job. Review the configured DM/email recipients and the host's openclaw /SMTP environment before enabling it. Goal Create (or update) a daily cron job that: 1) Runs: openclaw security audit json openclaw security audit deep json 2) Summarizes findings (critical/warn/info + top findings) 3) Sends the report to: a user selected DM target (channel + recipient id/handle) an optional email recipient only when PROMPTSEC EMAIL TO is configured Default schedule: daily at 23:00 (11pm) in the chosen timezone. Delivery: DM to the configured target Optional email only when an explicit recipient is configured Persistence via openclaw cron (unattended recurring job) Usage Examples Example 1: Quick Start (Environment Variables) For automated/MDM deployments, set environment variables before invoking: The skill will automatically configure and create the cron job without prompts. If PROMPTSEC EMAIL TO is omitted, the job remains DM only. Example 2: Interactive Setup If environment variables aren't set, the skill will prompt minimally: Example 3: Updating Existing Job If a job already exists, the skill updates it instead of creating duplicates: Example 4: What Gets Delivered Each day at the scheduled time, you'll receive a report like: Example 5: Custom Schedule Want a different schedule? Set it before invoking: Example 6: Multiple Environments For managing multiple servers, use different host labels: Each will send reports with clear host identification. Example 7: Suppressing Known Findings To suppress audit findings that have been reviewed and accepted, pass the enable suppressions flag and ensure the config file includes the "enabledFor": ["audit"] sentinel: Suppressed findings still appear in the report under an informational section but are excluded from critical/warning totals. Suppression / Allowlist The audit pipeline supports an opt in suppression mechanism for managing reviewed findings. Suppression uses defense in depth activation: two independent gates must both be satisfied. Activation Requirements 1. CLI flag: The enable suppressions flag must be passed at invocation. 2. Config sentinel: The configuration file must include "enabledFor" with "audit" in the array. If either gate is absent, all findings are reported normally and the suppression list is ignored. Config File Resolution (4 tier) 1. Explicit config <path argument 2. OPENCLAW AUDIT CONFIG environment variable 3. ~/.openclaw/security audit.json 4. .clawsec/allowlist.json Config Format Sentinel Semantics "enabledFor": ["audit"] audit suppression active (requires enable suppressions flag too) "enabledFor": ["advisory"] only advisory pipeline suppression (no effect on audit) "enabledFor": ["audit", "advisory"] both pipelines honor suppressions Missing or empty enabledFor no suppression active (safe default) Matching Rules checkId: exact match against the audit finding's check identifier (e.g., skills.code safety ) skill: case insensitive match against the skill name from the finding Both fields must match for a finding to be suppressed Installation flow (interactive) Provisioning (MDM friendly): prefer environment variables (no prompts). Required env: PROMPTSEC DM CHANNEL (e.g. telegram ) PROMPTSEC DM TO (recipient id) Optional env: PROMPTSEC EMAIL TO (email recipient; if unset, email delivery stays disabled) PROMPTSEC TZ (IANA timezone; default UTC ) PROMPTSEC HOST LABEL (label included in report; default uses hostname ) PROMPTSEC INSTALL DIR (stable path used by cron payload to cd before running runner; default: ~/.config/security checkup ) PROMPTSEC GIT PULL=1 (runner will git pull ff only if installed from git) OPENCLAW AUDIT CONFIG (suppression config path to persist into the cron payload) PROMPTSEC SENDMAIL BIN (explicit sendmail path) PROMPTSEC SMTP HOST , PROMPTSEC SMTP PORT , PROMPTSEC SMTP HELO , PROMPTSEC SMTP FROM (SMTP relay settings) Path expansion rules (important): In bash / zsh , use PROMPTSEC INSTALL DIR="$HOME/.config/security checkup" (or absolute path). Do not pass a single quoted literal like '$HOME/.config/security checkup' . On PowerShell, prefer: $env:PROMPTSEC INSTALL DIR = Join Path $HOME ".config/security checkup" . If path resolution fails, setup now exits with a clear error instead of creating a literal $HOME directory segment. Interactive install is last resort if env vars or defaults are not set. Keep prompts minimal: DM target is required, email is optional, and the user should see a concise preflight review before persistence is enabled. Create the cron job Use the cron tool to create a job with: schedule.kind="cron" schedule.expr="0 23 " schedule.tz=<installer tz sessionTarget="isolated" wakeMode="now" payload.kind="agentTurn" payload.deliver=true Before creating or updating the job, print a preflight review that explicitly states: this action creates or updates an unattended recurring job, the required runtime ( openclaw , node , bash ), the configured DM target, whether email is enabled and to which recipient, the install directory and timezone used for execution. Payload message template (agentTurn) Create the job with a payload message that instructs the isolated run to: 1) Run the audits Prefer JSON output for robust parsing: openclaw security audit json openclaw security audit deep json 2) Render a concise text report: Include: Timestamp + host identifier if available Summary counts For each CRITICAL/WARN: checkId + title + 1 line remediation If deep probe fails: include the probe error line 3) Deliver the report: DM to the chosen user target using message tool Email delivery requirement Email delivery is optional. Only promise or attempt it when PROMPTSEC EMAIL TO is configured. If PROMPTSEC EMAIL TO is set, attempt delivery in this priority order: A) If a local sendmail compatible binary is available, use it first. B) Otherwise, fallback to the configured SMTP relay: PROMPTSEC SMTP HOST PROMPTSEC SMTP PORT optional PROMPTSEC SMTP HELO optional PROMPTSEC SMTP FROM If neither path is possible, still DM the user and include a line: "NOTE: could not deliver email to <PROMPTSEC EMAIL TO via configured sendmail/SMTP path" If PROMPTSEC EMAIL TO is not set, the cron payload must explicitly describe email as disabled rather than implying a default recipient. Idempotency / updates Before adding a new job: cron.list(includeDisabled=true) If a job with name matching "Daily security audit" exists, update it instead of adding a duplicate: adjust schedule tz/expr adjust DM target Suggested naming Job name: "Daily security audit (Prompt Security)" Minimal recommended defaults (do not auto change config) The cron’s report should suggest fixes but must not apply them. Do not run openclaw security audit fix unless explicitly asked.