Skip to main content

Agentic AI component security scanner — detects AVE vulnerabilities

Project description

Bawbel Scanner

Agentic AI component security scanner — detects AVE vulnerabilities before they reach production.

PyPI version License Python AVE Standard

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.


Documentation

bawbel.io/docs · Getting Started · API Reference


License

Apache 2.0 — see LICENSE.

Built by Bawbel · bawbel.io@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bawbel_scanner-0.2.0.tar.gz (38.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bawbel_scanner-0.2.0-py3-none-any.whl (42.8 kB view details)

Uploaded Python 3

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

Hashes for bawbel_scanner-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b696ae4107cca6148d04c3afcd2a9237648fc772d02bfda4340060ece5d8be43
MD5 5ca7afaed3463a87694cf75a8c1a555b
BLAKE2b-256 d2ad9e9d03318e3230b62a3c2e00cb396938f3f96b9053c3ba1fa94cd1ccfd98

See more details on using hashes here.

Provenance

The following attestation bundles were made for bawbel_scanner-0.2.0.tar.gz:

Publisher: publish.yml on bawbel/bawbel-scanner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for bawbel_scanner-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 802fb85d9482b7b4f2836bd6abd55cdba2d222166f31a171bd9b2393b2026ef7
MD5 82d87e21120f8a0408c46f7f31a8b60f
BLAKE2b-256 102aa2123e1d72c270e41e0c19695be77a95df5f69a274f30bad1631cc04517f

See more details on using hashes here.

Provenance

The following attestation bundles were made for bawbel_scanner-0.2.0-py3-none-any.whl:

Publisher: publish.yml on bawbel/bawbel-scanner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page