computer, laptop, tech, blue computer, blue laptop, blue tech, computer, laptop, tech, tech, tech, tech, tech

vbsec: A Security Scanning Skill for Claude Code, Codex and Antigravity

AI coding assistants write code that works, and that’s exactly the problem: a login route that decodes a JWT without verifying it, or a search query built by string concatenation, passes every manual click-through. vbsec is a free, open-source skill for Claude Code, OpenAI Codex CLI and Google Antigravity that reads your code like a reviewer and reports the 21 most common vulnerability types, with a fix for each.

It lives at tanviet12/vbsec, MIT licensed, written by Bui Tan Viet and Phan Quoc Hien (the team behind SePay and 123HOST in Vietnam). I’ve read the README and docs rather than running it across a range of codebases, so this is an overview, not a benchmark of my own.

What vbsec does

  • Finds 21 common vulnerability types: hardcoded secrets, SQL and command injection, XSS, SSRF, path traversal, broken access control, IDOR, mass assignment, JWT misuse, weak password hashing, CSRF, missing rate limits, race conditions, unrestricted file upload, outdated dependencies and more.
  • Explains each issue in plain language: why it’s dangerous, how an attacker would exploit it step by step, the current code, and the fixed code.
  • Goes deep on five languages: Go, PHP, TypeScript and JavaScript, Python, and .NET (C#), including frameworks such as Express, NestJS, Next.js, Django, FastAPI, Laravel and ASP.NET Core.
  • Scans exactly what you ask: the whole repo, uncommitted changes, one commit, one pull request, or the last N days of commits. It also works without git.

Why it isn’t just grep

Pattern-based scanners flag every query( call as possible SQL injection, so people learn to ignore them. vbsec traces where data comes from before deciding. The same line, db.query(`SELECT * FROM products WHERE name = '${x}'`), is flagged if x comes from a search box and left alone if it’s a constant or a config value.

To do this it sorts data into four trust levels, from “sent by a stranger” (forms, URLs, headers, uploads) to “produced by the system” (constants, environment variables). Only stranger-supplied data that reaches a dangerous call uncleaned gets reported. It also knows library traps: Prisma.sql is safe but $queryRawUnsafe is not, and Angular’s bypassSecurityTrustHtml switches XSS protection off.

How to install it

You need Claude Code, Codex CLI or Antigravity already installed. Then:

git clone https://github.com/tanviet12/vbsec ~/vbsec
~/vbsec/scripts/install.sh

The script detects which of the three tools you have and installs the skill for each. To update later, run git pull in the folder.

How to run it

  • Claude Code: /vbs-scan-security
  • Codex CLI: $vbs-scan-security
  • Antigravity: say “scan security for this repo”

Useful variations in Claude Code:

/vbs-scan-security lang=en                       # whole folder, English report
/vbs-scan-security uncommitted lang=en           # uncommitted changes only
/vbs-scan-security pr id 42 lang=en              # pull request #42
/vbs-scan-security commit within 7days lang=en   # last 7 days of commits

Reports default to Vietnamese, so add lang=en for English. They’re saved to vbsec-reports/scan-<timestamp>.md in the scanned folder, ending with a JSON summary a CI job can read. Add vbsec-reports/ to your .gitignore. Running the uncommitted-changes scan before every commit is the habit worth building.

Large repos and how well it works

Repos under about 20 code files are scanned directly in roughly 30 to 60 seconds. Larger ones are split up: Claude Code runs up to three agents in parallel, while Codex and Antigravity scan the parts one by one.

The project ships eight sample apps with planted bugs and deliberate “looks dangerous but safe” traps. Its latest reported run caught 54 of 55 bugs with no false alarms on the traps. Those are the authors’ own figures, and since AI output varies between runs you can reproduce them with ./scripts/run-fixtures.sh. The scan spends tokens, so expect it to use some of your quota on bigger repos.

Limitations

  • It’s a first line of defence. The project says plainly that it doesn’t replace a professional review or guarantee finding every issue.
  • Dependency checks are limited by default. Use npm audit, pip-audit, govulncheck or composer audit for known CVEs. The roadmap also describes an opt-in --sca mode that looks up OSV.dev, which needs network access.
  • Language coverage. Ruby, Java and Rust aren’t covered yet. Other languages get the general rules only.
  • It reads your code with an AI model. Your source goes to whichever provider your tool uses, so check your policy before scanning private or client code.
  • Read the skill first. As with any third-party skill, review the files before installing them, since they’re instructions your agent will follow.

Where it fits

vbsec is a defensive companion to the offensive-skills libraries: instead of attacking a target, it reviews the code your own assistant just wrote. It’s most useful for solo developers and small teams shipping AI-generated code with no security reviewer in the loop. If you’re building out your Claude setup, my Claude MCP hub collects the servers, skills and plugins I’ve covered so far.


Leave a Reply