Securevibes Scanner
Run AI-powered application security scans on codebases.
- Rating
- 5 (10 reviews)
- Downloads
- 42,024 downloads
- Version
- 1.0.0
Overview
Run AI-powered application security scans on codebases.
✨Key Features
Run an initial full scan (if not already done)
Bootstrap incremental state
Configure the cron
Verify
Complete Documentation
View Source →
SecureVibes Scanner
AI-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.
Prerequisites
- Install the CLI:
pipx install securevibes(preferred) oruv tool install securevibes. Avoidpip install— it can create stale shims if you have multiple Python environments. - Authenticate with Anthropic (one of):
- Max/Pro subscription (recommended): If you're authenticated via Claude Code or Claude CLI OAuth, no API key is needed. The Claude Agent SDK picks up your OAuth session automatically. When running inside OpenClaw, leave
ANTHROPIC_API_KEYunset or blank — the SDK handles auth. - API key:
export ANTHROPIC_API_KEY=your-key-here(from console.anthropic.com)
Security Notes
- Always use the
scripts/scan.shwrapper for full scans — it validates paths and rejects shell metacharacters before invokingsecurevibes. - Never interpolate unsanitized user input into shell commands.
- The wrapper uses
realpathto resolve paths safely and rejects any path containing;,|,&,$, backticks, or other metacharacters. - Scan targets must be local directories. Clone remote repos to a known safe location first, then pass the resolved path to the wrapper.
- DAST scans make network requests to the
--target-urlyou provide. Only use against apps you own or have permission to test.
Execution Model
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.
Full Scan (One-Shot)
Running a Scan
- Clone the target repo to a local directory
- Run the wrapper script:
bash scripts/scan.sh /path/to/repo --force --debug - Results appear in
/path/to/repo/.securevibes/
Background Execution (Recommended)
For OpenClaw users, schedule scans as cron jobs:
- Use
sessionTarget: "isolated"withpayload.kind: "agentTurn" - Set
payload.timeoutSeconds: 2700(45 minutes) to allow all phases to complete - Use
delivery.mode: "announce"to get notified when done
cdinto the repo andgit pullfor latest code- Clean previous
.securevibes/artifacts - Run
securevibes scan . --forcevia the wrapper script - Read and summarize the results from
.securevibes/scan_report.md
Incremental Scan (Continuous Monitoring)
The incremental scanner (ops/incremental_scan.py) tracks the last-scanned commit and only scans new commits. Designed for cron-driven continuous security monitoring.
How It Works
- Tracks an anchor commit in
.securevibes/incremental_state.json - On each run: fetches remote, compares HEAD to anchor
- If new commits exist: runs
securevibes pr-reviewon the diff - Updates anchor to new HEAD after successful scan
- If no new commits: exits cleanly (no scan, no cost)
Setup
#### Step 1: Run an initial full scan (if not already done)
The 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.
#### Step 2: Bootstrap incremental state
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".
#### Step 3: Configure the cron
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 with the installed skill path and with the target repo.
#### Step 4: Verify
# 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
Incremental Scanner Options
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) |
Operational Guarantees
- File lock at
.securevibes/.incremental_scan.lockprevents overlapping runs - Atomic state writes (
fsync+os.replace) prevent corruption - Structured logging at
.securevibes/incremental_scan.log - Run records saved to
.securevibes/incremental_runs/(one JSON per run)
Rewrite Policy
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 |
Full Scan Commands Reference
Scan
securevibes scan
| 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 |
Report
securevibes report — Display a previously saved scan report.
Mapping Requests to Actions
| User Says | Action |
|---|---|
| "Scan this for security issues" | Full scan: bash scripts/scan.sh |
| "Quick security check" | Full scan: bash scripts/scan.sh |
| "Threat model this project" | bash scripts/scan.sh |
| "Just review the code" | bash scripts/scan.sh |
| "Show only critical/high findings" | bash scripts/scan.sh |
| "Full audit with DAST" | bash scripts/scan.sh |
| "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 |
Subagent Pipeline
Runs sequentially. Each phase builds on the previous:
- assessment → Architecture & attack surface →
.securevibes/SECURITY.md - threat-modeling → STRIDE-based analysis →
.securevibes/THREAT_MODEL.json - code-review → Vulnerability detection →
.securevibes/VULNERABILITIES.json - report-generator → Consolidated report →
.securevibes/scan_report.md - dast (optional) → Dynamic validation against running app
Presenting Results
After a scan completes:
- Read
.securevibes/scan_report.md(or.securevibes/scan_results.jsonfor structured data) - Summarize: total findings by severity (Critical > High > Medium > Low)
- Highlight top 3 most critical with file locations and remediation
- Offer next steps: run DAST, fix specific issues, re-scan after changes
Links
- Website: https://securevibes.ai
- PyPI: https://pypi.org/project/securevibes/
- GitHub: https://github.com/anshumanbh/securevibes
Installation
openclaw install securevibes-scanner
💻Code Examples
securevibes scan <repo-path> --model sonnet
Skip this step if the repo already has a `.securevibes/` directory with these files.
#### Step 2: Bootstrap incremental state
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"`.
#### Step 3: Configure the cron
For OpenClaw users, create a cron job:--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.
#### Step 4: Verifyopenclaw 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."# 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.jsonTags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.