Run 50+ OWASP security checks against codebases during development — detecting injection flaws, broken authentication, cryptographic misuse, prompt injection, SSRF, and supply-chain risks across web, API, and LLM applications — with automated fix generation and attack chain analysis
Given a list of security findings, identifies chains where one finding enables another and writes a plain-English attack narrative. Invoked after vulnerability-audit and design-review have returned.
Audits one code hotspot for a contract mismatch — a divergence between what callers assume the hotspot guarantees and what the hotspot body actually enforces. Returns hypotheses tagged VERIFIED, REFUTED, or NEEDS_MORE. Invoked once per hotspot per round by the contract-review orchestrator.
Audits a codebase for missing security controls — the gaps that pattern-matching auditors won't catch, like no timeout, no cost cap, no rate limit, prose-only guards. Invoked in parallel with vulnerability-audit calls.
Second-pass refutation filter for security-review findings. Reads each candidate finding's cited code and drops the ones with concrete refutation evidence (a guard, middleware, sanitizer, or correct API call at the cited location). Bias is toward keeping; uncertain findings pass through.
Finds security-sensitive code locations in a repository — the files and functions a reviewer should look at. Reads the threat model for context, then enumerates and ranks hotspots. Invoked after threat-modeling, before per-hotspot review.
Detects function-local misuse of memory and resource APIs in C, C++, and Rust unsafe — allocations whose return value is not checked, frees on error paths that race the success path, locks initialized incorrectly, file descriptors leaked across exec. Use when writing or modifying C or C++ code that calls malloc/calloc/realloc/free, mmap/munmap, pthread_mutex_*, fopen/open, or any kernel/library memory or resource primitive. Use when writing Rust code inside an unsafe block that calls a raw allocation or pointer API.
Detects LLM endpoints missing token caps, rate limits, or prompt-length bounds, enabling cost and resource exhaustion. Use when writing LLM API call handlers, setting up inference endpoints, implementing chatbot backends, or configuring token limits for LLM services. Also invoke when accepting user- provided prompts without length constraints.
Detects inference endpoints without authentication or throttling, allowing model weight reconstruction. Use when writing inference API endpoints, deploying LLM-serving infrastructure, implementing model access controls, or configuring rate limiting and authentication for model endpoints.
Detects agent-to-agent calls without authentication, authorization, or permission scoping. Use when writing code that calls other agents, spawns subagents, builds multi-agent pipelines, or passes messages between LLM agents. Also invoke when an orchestrator delegates tasks to worker agents or when agents share tools and permissions.
Detects MongoDB and other NoSQL queries that mix user input into operators or filters without validation. Use when writing MongoDB queries, Elasticsearch queries, or other NoSQL database operations that include user-supplied input. Also invoke when building query filters from request parameters or constructing aggregation pipelines with dynamic values.
Modifies files
Hook triggers on file write and edit operations
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Automated security checks for Claude Code. 52 skills covering injection, authentication, cryptography, access control, LLM-specific threats, and more — drawn from OWASP, CWE, and real-world vulnerability patterns. When Claude is about to write vulnerable code, the matching skill auto-invokes, prompts Claude to flag the issue and rewrite it safely, and hands the turn back.
claude plugin marketplace add thejefflarson/soundcheck
claude plugin install soundcheck
All 52 skills are active in every Claude Code session after install. To try without installing (current session only):
claude --plugin-dir /path/to/soundcheck
Soundcheck reviews every diff the moment Claude finishes writing it. When something looks risky, the findings surface to Claude as a system reminder once Claude Code wakes the session — usually within a turn or two, sometimes longer if the review queue is backed up. From there Claude can fix the code, push back, or note the issue for you. The review happens in the background; you never block on it.
A one-shot haiku triage decides whether the diff warrants a full
review, so most turns cost ~$0.003. Only diffs that plausibly introduce
a vulnerability trigger the full pr-review — a few cents when it
fires.
Enabled by default. To disable, export SOUNDCHECK_AUTO_REVIEW=false
in your shell before launching Claude Code. See
docs/auto-review.md for the staged flow, full
cost table, and limitations.
When you want to scan existing code — a PR diff, a whole repo before a release, or a deep audit before shipping — reach for one of these:
| Mode | When | Time | Cost | Catches |
|---|---|---|---|---|
/pr-review | Every pull request, in CI | 1–2 min | a few cents | Critical/High OWASP in the diff |
/security-review | Nightly CI or monthly audit | ~10 min on haiku, ~25 min on sonnet | ~$4 on sonnet | All severities, whole repo, attack chains |
/contract-review | Pre-release or after big refactor | ~30 min | ~$15–20 per repo on opus | Bugs where a function does less than callers assume |
Rule of thumb: gate every PR on pr-review, schedule security-review
nightly or weekly, and add contract-review on a slower cadence once
the obvious bugs are out of the way.
pr-review — the CI gateSecurity note:
pr-reviewpasses untrusted repository content into an LLM context. Prompt-injection mitigations are instruction-level only — a crafted file in the PR could influence the model's output. Treat a clean gate result as "no obvious Critical/High findings," not as a guarantee of correctness. Do not usepr-reviewoutput as the sole gate for high-stakes merges; pair it with human review for security-sensitive changes.
Use the Soundcheck GitHub Action:
name: Security Review
on: [pull_request]
# contents:write is only required when autofix is enabled (apply-rewrites: 'true').
# For read-only review, downgrade to contents:read.
# Do NOT trigger on fork PRs — GITHUB_TOKEN from a fork cannot write back to the
# base repo, and untrusted fork code runs with write permissions.
permissions:
contents: write # needed only for autofix commits; use contents:read otherwise
pull-requests: write # needed to post the findings comment
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: thejefflarson/soundcheck-action@v1
with:
anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
github-token: ${{ secrets.GITHUB_TOKEN }}
The action posts a severity-ranked findings table to the PR. Auto-fix
(committing LLM-generated changes back to the branch) stays off by
default; opt in with apply-rewrites: 'true'. Before turning it on in
CI, gate the resulting commits behind branch-protection rules and human
review — the action ships no approval gate of its own. To preview the
changes without committing, run the script locally:
python scripts/security-review-action.py --repo-dir . --diff-base main
This dry-run prints findings without writing any files.
security-review — full repo auditIn a Claude Code session:
/security-review
Or from a checkout:
python scripts/security-review-action.py --repo-dir . --full-repo --model sonnet
contract-review — deep audit for subtler bugsFor caller/callee invariant gaps — bugs where two functions each look fine alone but break together (an auth helper named like an identity check but matching only by name; a "verified" predicate that fails open on null input).
In a Claude Code session:
/contract-review
Or headless from a checkout:
python scripts/contract-review.py --repo-dir . --model opus
npx claudepluginhub thejefflarson/soundcheck --plugin soundcheckAgentic-Security is a powerful Claude Code plugin that automatically performs Application Security Testing (SAST, SCA, secrets detection, and more). Think of it as the easy button for making your Claude-generated code safe and secure.
Open-source cybersecurity analysis agent. Scans any local project for vulnerabilities: code security (SAST), dependency CVEs (SCA), secret leaks, authentication/authorization flaws, cryptographic weaknesses, misconfigurations, supply chain risks, and CI/CD security. Covers all OWASP 2025 Top 10 and CWE Top 25 categories. Generates prioritized reports with remediation guidance. Invoke with /cyber-neo [path].
Check OWASP Top 10 compliance
AI-powered cybersecurity code review with 8 specialist agents, OWASP Top 10:2021, CWE Top 25:2024, MITRE ATT&CK v15, and framework-aware false-positive suppression
Security scanning, dependency CVE audits, and exposure-aware risk prioritization.
AI-powered security auditing with interactive skills, automated agents, web dependency scanning, and supply chain hardening for comprehensive vulnerability detection and reporting