/mutate
[experimental] Security mutation testing -- weaken security controls and check if the scanner detects the resulting vulnerability
$ npx -y skills add allsmog/vuln-scout --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/mutate
Context preview
What this command does when you run it.
[experimental] Security mutation testing -- weaken security controls and check if the scanner detects the resulting vulnerability
Command definition
mutate.mdname: mutate
description: "[experimental] Security mutation testing -- weaken security controls and check if the scanner detects the resulting vulnerability"
argument-hint: "[path] [--dry-run] [--format md|json]"
allowed-tools:
- Bash
- Glob
- Read
- Write
Security Mutation Testing
Identifies security controls (sanitizers, auth middleware, parameterized queries) in your code, temporarily removes them, and checks if the scanning pipeline detects the resulting vulnerability. Undetected mutations represent **detection gaps** in your security tooling.
Usage
/vuln-scout:mutate
/vuln-scout:mutate src/ --dry-run
Flags
| Flag | Effect | |------|--------| | `path` | Directory to scan for mutations (default: current directory) | | `--dry-run` | List possible mutations without applying them | | `--format` | Output format: `md` or `json` |
Mutation Types
| Type | What It Removes | |------|----------------| | `remove-parameterization` | SQL parameter binding → string concatenation | | `remove-auth-middleware` | Authentication middleware from route handlers | | `remove-csrf-check` | CSRF token validation | | `enable-shell` | Changes `shell=False` to `shell=True` in subprocess calls | | `remove-sanitizer` | Input sanitization/validation function calls | | `remove-rate-limit` | Rate limiting middleware |
Workflow
Step 1: Discover mutations
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/run_mutations.py" \
<path> \
--dry-runLists all security-weakening mutations found in the codebase.
Step 2: Test mutations (unless `--dry-run`)
For each mutation: 1. Apply the mutation (replace the security control with the weakened version) 2. Re-scan the mutated file with Semgrep 3. Check if the mutation was detected as a vulnerability 4. Revert the mutation
Step 3: Report
- **Detected mutations**: scanner caught the weakened code (good)
- **Undetected mutations**: scanner missed the vulnerability (detection gap)
- **Kill rate**: detected / total (higher is better)
Undetected mutations indicate places where removing a security control would go unnoticed by your scanning pipeline.
Read more
name: mutate description: "[experimental] Security mutation testing -- weaken security controls and check if the scanner detects the resulting vulnerability" argument-hint: "[path] [--dry-run] [--format md|json]" allowed-tools: - Bash - Glob - Read - Write
Security Mutation Testing
Identifies security controls (sanitizers, auth middleware, parameterized queries) in your code, temporarily removes them, and checks if the scanning pipeline detects the resulting vulnerability. Undetected mutations represent **detection gaps** in your security tooling.
Usage
/vuln-scout:mutate /vuln-scout:mutate src/ --dry-run
Flags
| Flag | Effect | |------|--------| | `path` | Directory to scan for mutations (default: current directory) | | `--dry-run` | List possible mutations without applying them | | `--format` | Output format: `md` or `json` |
Mutation Types
| Type | What It Removes | |------|----------------| | `remove-parameterization` | SQL parameter binding → string concatenation | | `remove-auth-middleware` | Authentication middleware from route handlers | | `remove-csrf-check` | CSRF token validation | | `enable-shell` | Changes `shell=False` to `shell=True` in subprocess calls | | `remove-sanitizer` | Input sanitization/validation function calls | | `remove-rate-limit` | Rate limiting middleware |
Workflow
Step 1: Discover mutations
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/run_mutations.py" \
<path> \
--dry-runLists all security-weakening mutations found in the codebase.
Step 2: Test mutations (unless `--dry-run`)
For each mutation: 1. Apply the mutation (replace the security control with the weakened version) 2. Re-scan the mutated file with Semgrep 3. Check if the mutation was detected as a vulnerability 4. Revert the mutation
Step 3: Report
- **Detected mutations**: scanner caught the weakened code (good)
- **Undetected mutations**: scanner missed the vulnerability (detection gap)
- **Kill rate**: detected / total (higher is better)
Undetected mutations indicate places where removing a security control would go unnoticed by your scanning pipeline.
AI-powered whitebox penetration testing plugin for Claude Code. 9 languages, 22 skills, 7 autonomous agents. STRIDE threat modeling, OWASP 2025 coverage, polyglot monorepo support.
Repo: allsmog/vuln-scout
Other commands on vuln-scout.
- /auto-fix
[experimental] Auto-remediate verified findings by generating patches and optionally creating a PR
Open command - /create-rule
[experimental] Create a custom Semgrep detection rule from a confirmed vulnerability pattern
Open command - /diff
[stable] Compare security posture between two git refs to find new/fixed vulnerabilities and track regression
Open command - /full-audit
[stable] End-to-end security audit with hotspot-aware framework pivots, shared findings.json schema, and CI-friendly workflow flags
Open command - /mobile-audit
[beta] Audit a decompiled Android target — scans jadx_out/sources + apktool_out together and merges findings
Open command - /org-memory-compile
[experimental] Compile human-reviewed scan history into local organization memory
Open command

