Install
openclaw skills install securevibes-scannerRun AI-powered application security scans on codebases. Use when asked to scan code for security vulnerabilities, generate threat models, review code for security issues, run incremental security scans, or set up continuous security monitoring via cron. Supports full scans (one-shot) and incremental scans (cron-driven, only new commits).
openclaw skills install securevibes-scannerAI-native security platform that detects vulnerabilities using Claude AI. Multi-subagent pipeline: assessment → threat modeling → code review → report generation → optional DAST. Supports incremental scanning for continuous monitoring.
pipx install securevibes (preferred) or uv tool install securevibes. Avoid pip install — it can create stale shims if you have multiple Python environments.ANTHROPIC_API_KEY unset or blank — the SDK handles auth.export ANTHROPIC_API_KEY=your-key-here (from console.anthropic.com)scripts/scan.sh wrapper for full scans — it validates paths and rejects shell metacharacters before invoking securevibes.realpath to resolve paths safely and rejects any path containing ;, |, &, $, backticks, or other metacharacters.--target-url you provide. Only use against apps you own or have permission to test.Full scans take 10-30 minutes across 4 phases. Run them as background jobs (cron or subagent), not inline.
Incremental scans take 2-10 minutes — they only scan commits since the last run.
bash scripts/scan.sh /path/to/repo --force --debug/path/to/repo/.securevibes/For OpenClaw users, schedule scans as cron jobs:
sessionTarget: "isolated" with payload.kind: "agentTurn"payload.timeoutSeconds: 2700 (45 minutes) to allow all phases to completedelivery.mode: "announce" to get notified when doneThe agentTurn message should instruct the subagent to:
cd into the repo and git pull for latest code.securevibes/ artifactssecurevibes scan . --force via the wrapper script.securevibes/scan_report.mdThe incremental scanner (ops/incremental_scan.py) tracks the last-scanned commit and only scans new commits. Designed for cron-driven continuous security monitoring.
.securevibes/incremental_state.jsonsecurevibes pr-review on the diffThe incremental scanner requires .securevibes/SECURITY.md and .securevibes/THREAT_MODEL.json to exist. These come from an initial full scan:
securevibes scan <repo-path> --model sonnet
Skip this step if the repo already has a .securevibes/ directory with these files.
Run the wrapper once to seed the anchor commit (no scan runs, just records current HEAD):
python3 ops/incremental_scan.py --repo <repo-path> --remote origin --branch main
This creates .securevibes/incremental_state.json with status: "bootstrap".
For OpenClaw users, create a cron job:
openclaw cron create \
--name "securevibes-incremental" \
--cron "*/30 * * * *" \
--tz "America/Los_Angeles" \
--agent main \
--session isolated \
--timeout-seconds 900 \
--announce \
--message "Run incremental security scan: python3 <skill-path>/ops/incremental_scan.py --repo <repo-path> --remote origin --branch main --model sonnet --severity medium --scan-timeout-seconds 600. Read .securevibes/incremental_scan.log for results. If new findings, summarize them."
Replace <skill-path> with the installed skill path and <repo-path> with the target repo.
# Check state
cat <repo-path>/.securevibes/incremental_state.json
# After first scheduled run, check logs
tail -10 <repo-path>/.securevibes/incremental_scan.log
# Check findings
cat <repo-path>/.securevibes/PR_VULNERABILITIES.json
python3 ops/incremental_scan.py [options]
| Option | Description |
|---|---|
--repo | Repository path (default: .) |
--branch | Branch to track (default: main) |
--remote | Git remote (default: origin) |
--model | Claude model: sonnet, haiku (default: sonnet) |
--severity | Minimum severity: critical, high, medium, low |
--scan-timeout-seconds | Timeout per scan command (default: 900) |
--git-timeout-seconds | Timeout for git operations (default: 60) |
--rewrite-policy | History rewrite handling: reset_warn, strict_fail, since_date |
--since | Override: scan commits since this date (ISO or YYYY-MM-DD) |
.securevibes/.incremental_scan.lock prevents overlapping runsfsync + os.replace) prevent corruption.securevibes/incremental_scan.log.securevibes/incremental_runs/ (one JSON per run)When last_seen_sha is not an ancestor of the new remote HEAD (e.g., force push):
| Policy | Behavior |
|---|---|
reset_warn | Reset anchor to new HEAD, continue |
strict_fail | Fail and keep current anchor |
since_date | Run a --since <today> scan for visibility, keep previous anchor |
securevibes scan <path> [options]
| Option | Description |
|---|---|
-f, --format | markdown (default), json, text, table |
-o, --output | Custom output path |
-s, --severity | Filter: critical, high, medium, low |
-m, --model | Claude model (e.g., sonnet, haiku) |
--subagent | Run one phase: assessment, threat-modeling, code-review, report-generator, dast |
--resume-from | Resume from a specific phase onwards |
--dast | Enable dynamic testing (requires --target-url) |
--target-url | URL for DAST (e.g., http://localhost:3000) |
--force | Skip prompts, overwrite existing artifacts |
--quiet | Minimal output |
--debug | Verbose diagnostics |
securevibes report <path> — Display a previously saved scan report.
| User Says | Action |
|---|---|
| "Scan this for security issues" | Full scan: bash scripts/scan.sh <path> --force |
| "Quick security check" | Full scan: bash scripts/scan.sh <path> -m haiku --force |
| "Threat model this project" | bash scripts/scan.sh <path> --subagent threat-modeling --force |
| "Just review the code" | bash scripts/scan.sh <path> --subagent code-review --force |
| "Show only critical/high findings" | bash scripts/scan.sh <path> -s high --force |
| "Full audit with DAST" | bash scripts/scan.sh <path> --dast --target-url <url> --force |
| "Set up continuous scanning" | Incremental setup: Steps 1-4 above |
| "Monitor this repo for security issues" | Incremental setup: Steps 1-4 above |
| "Show last scan results" | securevibes report <path> |
Runs sequentially. Each phase builds on the previous:
.securevibes/SECURITY.md.securevibes/THREAT_MODEL.json.securevibes/VULNERABILITIES.json.securevibes/scan_report.mdAfter a scan completes:
.securevibes/scan_report.md (or .securevibes/scan_results.json for structured data)