Agentic AI component security scanner — detects AVE vulnerabilities
Project description
Bawbel Scanner
Agentic AI component security scanner — detects AVE vulnerabilities before they reach production.
Bawbel Scanner scans agentic AI components — SKILL.md files, MCP server manifests, system prompts, and agent plugins — for security vulnerabilities mapped to the AVE (Agentic Vulnerability Enumeration) standard.
Install
pip install bawbel-scanner
With optional engines:
pip install "bawbel-scanner[yara]" # YARA rules
pip install "bawbel-scanner[semgrep]" # Semgrep rules
pip install "bawbel-scanner[llm]" # LLM Stage 2 (any provider via LiteLLM)
pip install "bawbel-scanner[all]" # everything
Quick Start
# Check version and active detection engines
bawbel version
bawbel --version
# Scan a SKILL.md file
bawbel scan ./my-skill.md
# Scan a directory
bawbel scan ./skills/ --recursive
# Full report with remediation instructions
bawbel report ./my-skill.md
# Fail CI on high severity
bawbel scan ./skills/ --fail-on-severity high
# Watch for changes and re-scan automatically
bawbel scan ./skills/ --watch
# Output formats
bawbel scan ./skills/ --format json # JSON for tooling
bawbel scan ./skills/ --format sarif # SARIF for GitHub Security tab
Example output:
Bawbel Scanner v0.2.0
Scanning: malicious-skill.md
Type: skill
FINDINGS
🔴 CRITICAL AVE-2026-00001 External instruction fetch detected
Line 7 · pattern engine
OWASP: ASI01, ASI08
🟠 HIGH — Goal override instruction detected
Line 17 · pattern engine
OWASP: ASI01, ASI08
SUMMARY
Risk score: 9.4 / 10 CRITICAL
Findings: 2
Scan time: 5ms
Use as a Library
from scanner import scan
result = scan("/path/to/skill.md")
if result.is_clean:
print("Clean")
else:
for finding in result.findings:
print(f"[{finding.severity.value}] {finding.title}")
print(f"Risk score: {result.risk_score:.1f} / 10")
CI/CD Integration
GitHub Actions
- name: Bawbel scan
run: |
pip install bawbel-scanner
bawbel scan ./skills/ --recursive --fail-on-severity high
Pre-commit
Add to your .pre-commit-config.yaml:
repos:
- repo: local
hooks:
- id: bawbel-scan
name: Bawbel Scanner — agentic AI component security scan
entry: bawbel scan
language: system # uses your venv where bawbel-scanner is installed
pass_filenames: true
types: [markdown] # scans .md files on every commit
args: ["--fail-on-severity", "high"]
Then install:
pip install bawbel-scanner
pre-commit install
Detection Stages
| Stage | Engine | Requires | Coverage |
|---|---|---|---|
| 1a | Pattern matching | Nothing (stdlib) | 15 rules, always runs |
| 1b | YARA | yara-python |
Binary + text pattern matching |
| 1c | Semgrep | semgrep |
Structural pattern matching |
| 2 | LLM semantic | pip install "bawbel-scanner[llm]" + API key |
Nuanced injection, obfuscated payloads — any LiteLLM provider |
| 3 | Behavioral | Docker + eBPF | Runtime behaviour (v1.0) |
15 built-in pattern rules cover: goal override, jailbreak, hidden instructions, external fetch, tool call injection, permission escalation, credential exfiltration, PII exfiltration, shell injection, destructive commands, cryptocurrency drain, trust escalation, persistence, MCP tool poisoning, system prompt extraction.
AVE Standard
Every finding maps to an AVE record — the CVE equivalent for agentic AI components.
- Browse records: github.com/bawbel/bawbel-ave
- Report a new vulnerability: open an issue on bawbel-ave
Documentation
bawbel.io/docs · Getting Started · API Reference
License
Apache 2.0 — see LICENSE.
Built by Bawbel · bawbel.io@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bawbel_scanner-0.2.0.tar.gz.
File metadata
- Download URL: bawbel_scanner-0.2.0.tar.gz
- Upload date:
- Size: 38.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b696ae4107cca6148d04c3afcd2a9237648fc772d02bfda4340060ece5d8be43
|
|
| MD5 |
5ca7afaed3463a87694cf75a8c1a555b
|
|
| BLAKE2b-256 |
d2ad9e9d03318e3230b62a3c2e00cb396938f3f96b9053c3ba1fa94cd1ccfd98
|
Provenance
The following attestation bundles were made for bawbel_scanner-0.2.0.tar.gz:
Publisher:
publish.yml on bawbel/bawbel-scanner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bawbel_scanner-0.2.0.tar.gz -
Subject digest:
b696ae4107cca6148d04c3afcd2a9237648fc772d02bfda4340060ece5d8be43 - Sigstore transparency entry: 1342728687
- Sigstore integration time:
-
Permalink:
bawbel/bawbel-scanner@30bc5fc15a1933ed16b0e7f26a03920a022e31dc -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/bawbel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@30bc5fc15a1933ed16b0e7f26a03920a022e31dc -
Trigger Event:
release
-
Statement type:
File details
Details for the file bawbel_scanner-0.2.0-py3-none-any.whl.
File metadata
- Download URL: bawbel_scanner-0.2.0-py3-none-any.whl
- Upload date:
- Size: 42.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
802fb85d9482b7b4f2836bd6abd55cdba2d222166f31a171bd9b2393b2026ef7
|
|
| MD5 |
82d87e21120f8a0408c46f7f31a8b60f
|
|
| BLAKE2b-256 |
102aa2123e1d72c270e41e0c19695be77a95df5f69a274f30bad1631cc04517f
|
Provenance
The following attestation bundles were made for bawbel_scanner-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on bawbel/bawbel-scanner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bawbel_scanner-0.2.0-py3-none-any.whl -
Subject digest:
802fb85d9482b7b4f2836bd6abd55cdba2d222166f31a171bd9b2393b2026ef7 - Sigstore transparency entry: 1342728697
- Sigstore integration time:
-
Permalink:
bawbel/bawbel-scanner@30bc5fc15a1933ed16b0e7f26a03920a022e31dc -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/bawbel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@30bc5fc15a1933ed16b0e7f26a03920a022e31dc -
Trigger Event:
release
-
Statement type: