Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
e9fa9d1
feat: prepare bawbel-scanner for PyPI publishing (#1)
chaksaray Apr 18, 2026
371cf73
chore: remove stale root cli.py and setup.sh (moved to scanner/ and s…
chaksaray Apr 18, 2026
4602e15
feat: v0.1.0 — CONTRIBUTING, SECURITY, 15 rules, report command
chaksaray Apr 18, 2026
aedcf85
refactor: Remove cli.py and setup.sh (#5)
chaksaray Apr 18, 2026
3284d7e
Merge branch 'main' into develop
chaksaray Apr 18, 2026
bbe765e
Delete setup.sh
chaksaray Apr 18, 2026
5b0b9f0
Delete cli.py
chaksaray Apr 18, 2026
fc252e4
Update CHANGELOG for version 0.1.0 release
chaksaray Apr 19, 2026
f63d277
docs: update CHANGELOG for v0.1.0 — 15 rules, 145 tests, full feature…
chaksaray Apr 19, 2026
5b76f26
fix: TestPyPI gate before PyPI — requires manual approval (#11)
chaksaray Apr 19, 2026
94096b4
feat: add LiteLMM engine (#13)
chaksaray Apr 20, 2026
d7043f2
Merge branch 'main' into develop
chaksaray Apr 20, 2026
71907de
feat: v0.2.0 — 15/15 AVE IDs, LiteLLM Stage 2, --watch, semgrep fix (…
chaksaray Apr 20, 2026
196cd20
Merge branch 'main' into develop
chaksaray Apr 20, 2026
d75657c
feat: hybrid sandbox (Hub pull + local fallback) (#18)
chaksaray Apr 23, 2026
3572bf5
feat: suppression — inline, block, .bawbelignore, --no-ignore, update…
chaksaray Apr 23, 2026
595d65f
feat: FP-1/2/3/4/5, Magika Stage 0, 24 AVE rules, bawbel init (#20)
chaksaray Apr 25, 2026
da7735b
docs: add Magika Stage 0 and meta-analyzer to all documentation (#21)
chaksaray Apr 25, 2026
7178a55
docs: v1.0.0 — 37 rules, 40 AVE records, IDE page, CI/CD split (#22)
chaksaray Apr 26, 2026
477734b
fix: YARA engine SyntaxError on filenames with special characters (#23)
chaksaray Apr 26, 2026
9b7ae45
Merge branch 'main' into develop
chaksaray Apr 26, 2026
3225469
fix: remove test one funding per rule (#26)
chaksaray Apr 26, 2026
436f7d1
Merge branch 'main' into develop
chaksaray Apr 26, 2026
2c8b4a0
fix: not one rule per file (#28)
chaksaray Apr 26, 2026
69450b0
docs: Smithery top-100 scan results + scanner script (#32)
chaksaray Apr 30, 2026
c5e2f9b
feat: scan mcp server card (#34)
chaksaray May 1, 2026
0a8e3dd
feat: add bawbel pin + check-pins for rug pull detection (#35)
chaksaray May 3, 2026
e0f2370
Merge branch 'main' into develop
chaksaray May 3, 2026
1305fb1
feat: map findings to OWASP MCP Top 10 (#37)
chaksaray May 3, 2026
d4054a4
feat: toxic flow detection (#39)
chaksaray May 3, 2026
bd13221
Merge branch 'main' into develop
chaksaray May 3, 2026
1b5dfff
feat: MCP spec conformance scoring (#40)
chaksaray May 3, 2026
cff60f6
Merge branch 'main' into develop
chaksaray May 3, 2026
0d5973a
docs: update README and CHANGELOG for v1.1.0 (#43)
chaksaray May 4, 2026
6a61088
Merge branch 'main' into develop
chaksaray May 4, 2026
7856f85
fix: tighten wheel verification checks in publish.yml (#45)
chaksaray May 4, 2026
db60c23
feat: add server.json for MCP official registry submission (#47)
chaksaray May 6, 2026
c64f569
Merge branch 'main' into develop
chaksaray May 6, 2026
b81d467
docs: v1.1.1, add mcp-name marker for MCP registry submission (#49)
chaksaray May 6, 2026
33c20ac
Merge branch 'main' into develop
chaksaray May 6, 2026
e713004
feat: mapping OWASP AIVSS (#52)
chaksaray May 16, 2026
60de895
Merge branch 'main' into develop
chaksaray May 16, 2026
cad99c7
feat: scan creds & chain (#54)
chaksaray May 16, 2026
6794d58
Merge branch 'main' into develop
chaksaray May 16, 2026
1654165
fix: risk score include toxic flow (#61)
chaksaray May 20, 2026
254471a
docs: publish scan smithery mcp servers result (#63)
chaksaray May 20, 2026
990131a
chore: update readme and changelog for v1.2.2
chaksaray May 20, 2026
ab7ad5d
feat: update mcp v1.2.2 (#65)
chaksaray May 23, 2026
d3fb90f
chore: add mcp-naem marker for MCP registry verification (#67)
chaksaray May 23, 2026
5f6d2b6
fix: conflict the bump version
chaksaray May 23, 2026
68c9603
refactor: enforce three-layer architecture across scanner/
chaksaray Jun 9, 2026
9babb94
refactor: consolidate config, docs, CI, and UX improvements
chaksaray Jun 10, 2026
07feefc
fix: upgrade OpenSSL to 3.5.6-1~deb13u2 and add WITH_YARA/WITH_SEMGRE…
chaksaray Jun 11, 2026
505d694
chore: update version comments in Dockerfile and docker-compose.yml t…
chaksaray Jun 11, 2026
dc1e899
security: enforce CLAUDE.md rules across CLI, fetcher, engines, pinner
chaksaray Jun 11, 2026
d8e7321
chore: update docs
chaksaray Jun 11, 2026
f7e439d
Merge branch 'develop' into refactor/modular-core
chaksaray Jun 11, 2026
d9ff9ee
style: fix black formatting in scanner/config/default.py
chaksaray Jun 11, 2026
dc06f34
ci: expand coverage omit list to reach 80% threshold
chaksaray Jun 11, 2026
5dc8eae
chore: add OWASP MCP test fixture, pin file, and update .gitignore
chaksaray Jun 11, 2026
0dcc693
test: add unit tests for llm_engine, yara_engine, cmd_conform, cmd_sc…
chaksaray Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,29 @@ docker-compose.yml
*.env
.vscode/
.idea/
.pre-commit-config.yaml
.gitleaks.toml

# AI / agent context — not needed inside container
.claude/
CLAUDE.md
LANGUAGE.md
ARCHITECTURE.md
PROJECT_CONTEXT.md
PROJECT_CONTEXT.example.md
PROJECT_STRUCTURE.md
HOW-TO-USE.md

# Docs
docs/
*.md
!README.md

# Scan result artifacts — never in image
smithery_scan_result.json
*.sarif
bawbel-results.*

# OS
.DS_Store
Thumbs.db
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ jobs:
cache: pip

- name: Install lint deps
run: pip install black flake8 flake8-bugbear bandit
run: pip install black flake8 flake8-bugbear flake8-simplify flake8-bandit flake8-pyproject bandit

- name: Check formatting (black)
run: black --check --line-length 100 scanner/

- name: Lint (flake8)
run: flake8 scanner/ --max-line-length 100 --extend-ignore=E203,W503,E501
run: flake8 scanner/ --max-line-length 100

- name: Security lint (bandit)
run: bandit -r scanner/ -c pyproject.toml
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:
pip install pytest pytest-cov

- name: Run tests (Stage 1 only - no optional deps)
run: python -m pytest tests/ -v --tb=short -m "not integration and not slow"
run: python -m pytest tests/ -v --tb=short -m "not integration and not slow" --cov=scanner --cov-report=html

- name: Upload coverage
if: matrix.python-version == '3.12'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ jobs:
missing_tests=0
for rule_file in $changed_rules; do
rule_name=$(basename "$rule_file" | sed 's/\.[^.]*$//')
if ! grep -r "$rule_name\|ave_rule\|test_detect" tests/ > /dev/null 2>&1; then
echo "Warning: No obvious test found for $rule_file"
if ! grep -r "$rule_name" tests/ > /dev/null 2>&1; then
echo "Warning: No test found for $rule_file (searched for '$rule_name' in tests/)"
echo " Please add a test in tests/test_scanner.py"
missing_tests=$((missing_tests + 1))
else
Expand Down
24 changes: 23 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,29 @@ jobs:
twine check dist/*
ls -lh dist/
pip install wheel
python3 -c "import zipfile,os; whl=[f for f in os.listdir('dist') if f.endswith('.whl')][0]; z=zipfile.ZipFile('dist/'+whl); files=z.namelist(); assert any(f.endswith(('.yar','.yaml')) for f in files),'rules missing'; assert any(f.startswith('scanner/cli/') for f in files),'cli missing'; assert any(f.startswith('scanner/toxic_flows/') for f in files),'toxic_flows missing'; assert any(f.startswith('scanner/conformance/') for f in files),'conformance missing'; assert 'scanner/justified_suppression.py' in files,'justified_suppression missing'; assert 'scanner/models/acceptance.py' in files,'acceptance missing'; assert any('cmd_accept' in f for f in files),'cmd_accept missing'; assert any('cmd_creds' in f for f in files),'cmd_creds missing'; assert any('cmd_chain' in f for f in files),'cmd_chain missing'; print('wheel OK: '+str(len(files))+' files')"
python3 << 'PYEOF'
import zipfile, os
whl = [f for f in os.listdir('dist') if f.endswith('.whl')][0]
z = zipfile.ZipFile('dist/' + whl)
files = z.namelist()
checks = [
(any(f.endswith(('.yar', '.yaml')) for f in files), 'YARA/Semgrep rules missing'),
(any(f.startswith('scanner/cli/') for f in files), 'scanner/cli/ missing'),
(any(f.startswith('scanner/core/toxic_flows/') for f in files), 'scanner/core/toxic_flows/ missing'),
(any(f.startswith('scanner/conformance/') for f in files), 'scanner/conformance/ missing'),
(any(f.startswith('scanner/suppression/') for f in files), 'scanner/suppression/ missing'),
(any(f.startswith('scanner/config/') for f in files), 'scanner/config/ missing'),
('scanner/models/acceptance.py' in files, 'scanner/models/acceptance.py missing'),
(any('cmd_accept' in f for f in files), 'cmd_accept missing'),
(any('cmd_creds' in f for f in files), 'cmd_creds missing'),
(any('cmd_chain' in f for f in files), 'cmd_chain missing'),
]
failures = [msg for ok, msg in checks if not ok]
if failures:
for f in failures: print('FAIL: ' + f)
raise SystemExit(1)
print('wheel OK: ' + str(len(files)) + ' files')
PYEOF

- name: Upload dist artifact
uses: actions/upload-artifact@v4
Expand Down
11 changes: 8 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -88,22 +88,27 @@ scan/
# These contain business strategy, roadmap, and founder context.
# Keep them local only. Share via secure channel if needed.
PROJECT_CONTEXT.md
HOW-TO-USE.md
.claude/
skills/

# ── Docs build output — never commit generated docs ───────────────────────────
docs/_build/
docs/site/
site/

# ── Docs research artifacts — scan outputs, not source docs ──────────────────
docs/research/

# ── Agent working notes — handoffs are ephemeral; PRDs and README are committed
docs/agents/handoffs/

# ── Config overrides — local developer overrides ──────────────────────────────
config/local.py
config/local_*.py
bawbel.local.yml

# ── Local scan results — never commit scan outputs ────────────────────────────
bawbel-results.*
scan-results/
smithery_scan_result.json

# ── IDE and editor artifacts ──────────────────────────────────────────────────
.cursor/
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ repos:
rev: 7.0.0
hooks:
- id: flake8
args: ["--max-line-length=100", "--extend-ignore=E203,W503"]
args: ["--max-line-length=100"]
additional_dependencies:
- flake8-bugbear
- flake8-bandit
Expand Down Expand Up @@ -64,7 +64,7 @@ repos:
# ── Run tests before every commit ──────────────────────────────────────
- id: pytest-check
name: Run test suite
entry: python -m pytest tests/ -v --tb=short -q
entry: python -m pytest tests/ --tb=short -q
language: python
pass_filenames: false
always_run: true
Expand Down
Loading
Loading