Skip to main content

blastcontain-verify

Pre-deployment compliance scanner for AI agents. 27 security checks across 14 categories. Outputs Markdown reports, signed JSON audit packets, and SARIF for GitHub Code Scanning.

pip install blastcontain-verify
blastcontain-verify --agent-id my-agent --env prod --search-path ./src

What it checks

Group Checks
Environment kernel isolation, egress restriction, model weight mutability
Filesystem workstation rootfs, container rootfs
Credentials secrets on disk, secrets in process env, wildcard API capability
Process running as root, dangerous Linux capabilities
Network DNS exfiltration channel, external listeners
Persistence writable startup/cron paths
Memory unmasked PII in context, vector store tenant isolation, viable PII exfil path
Skills exfiltration-capable tools, Cisco AI Skill Scanner findings
APIs destructive endpoints, unauthenticated endpoints
MCP unapproved tools, missing auth, dangerous tool combinations
Code dangerous execution patterns (eval/exec/pickle/yaml.load)
Supply chain unattested model weights
Transport plaintext HTTP endpoints
Local developer workstation indicators

Every check is mapped to the MIT AI Risk Repository taxonomy.

Two checks are conditional: SKILL-02 (Cisco AI Skill Scanner) needs the opt-in [cisco] extra — see Augmentation; MCP-01 (unapproved tools) is not yet implemented and currently SKIPs. The rest run out of the box.

The official image bundles [full] with the spaCy en_core_web_lg model. The image copies both verify/ and the sibling core/, so the build context is the blastcontain-oss repo root:

# from the blastcontain-oss/ root
podman build -t blastcontain-verify:latest -f verify/Containerfile .
podman run --rm \
  --read-only --cap-drop ALL --security-opt no-new-privileges \
  --network none --tmpfs /tmp:rw,noexec,nosuid,size=64m \
  -v "$PWD:/scan:ro,z" -v "$PWD/reports:/reports:rw,z" \
  blastcontain-verify:latest \
  --agent-id my-agent --env prod \
  --search-path /scan --report /reports/report.md \
  --output /reports/audit.json --sarif /reports/scan.sarif \
  --acknowledge-risk

CLI flags (most common)

--agent-id              Agent identifier (required)
--env                   dev | uat | staging | prod | local_developer_workstation
--search-path           Root walked for source/secret/code/TLS scanning
--skills-dir            Skill code directory (SKILL-01/02)
--api-spec              OpenAPI 3.0 YAML/JSON path (API-01/02)
--mcp-config            MCP server config JSON (MCP-01/02/03)
--model-dir             Model weights directory (ENV-03, SUP-01)
--context-file          Session context text for PII scanning (MEM-01)
--output PATH           Write signed JSON audit packet
--report PATH           Write Markdown report
--sarif PATH            Write SARIF 2.1.0 for GitHub Code Scanning
--skip-checks IDs       Comma-separated check IDs to suppress
--api-live-probe        Enable live OPTIONS probe in API-01 (off by default)
--egress-probe-target   host:port for ENV-02/NET-01 probes
--acknowledge-risk      Exit 0 even on CRITICAL
--require-signing       Exit 3 unless a real signing key is set (no advisory packet)

Usage guide & examples: docs/usage.md · Full spec: docs/spec.md · Design notes: docs/architecture.md · Custom checks: docs/plugins.md

GitHub Code Scanning integration

--agent-id should be a stable logical identifier for the agent being scanned (e.g. support-bot-prod), not the repository slug — it is the key your audit packets are attributed to over time, so it must stay constant even if the repo is renamed or forked. Store it as a repository or org Actions variable (Settings → Secrets and variables → Actions → Variables):

# .github/workflows/security.yml
- name: BlastContain Verify
  run: blastcontain-verify --sarif scan.sarif --agent-id "${{ vars.AGENT_ID }}"
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: scan.sarif

Augmentation

Verify works standalone; optional packages unlock deeper checks. Every augmentation — default and opt-in — is CVE-clean as of 2026-06.

Extra Adds Clean
[pii] Microsoft Presidio NER for MEM-01 ✅
[agt] Agent Governance Toolkit ✅
[full] [pii] + [agt] — the default supported set ✅
[skill] / [cisco] Cisco AI Skill Scanner (SKILL-02) ✅
pip install "blastcontain-verify[full]"          # default: Presidio + AGT
pip install "blastcontain-verify[full,cisco]"     # + SKILL-02 (Cisco skill scanner)

The Cisco MCP scanner (the MCP-01 backend) is not currently packaged — it still pins a CVE-bearing litellm and MCP-01 is dormant without a Charter. See SECURITY.md.

Without the relevant extra, the dependent check SKIPs with a hint on how to enable it.

Suppressing findings — .blastcontainignore

Drop a .blastcontainignore at the root of --search-path:

tests/fixtures/      # entire directory tree
*.mock.json          # filename glob
**/snapshots/**      # path glob

Honoured by CRED-01, CODE-01, TLS-01.

Verifying audit packets

import json
from blastcontain_core.signing import verify_packet

packet = json.load(open("audit.json"))
assert verify_packet(packet)

Ed25519 packets carry their public key inline — verification needs nothing else. HMAC packets require BLASTCONTAIN_SIGNING_KEY in the environment.

Be clear about what the default signature means: with no key configured, packets are signed with a built-in key and marked "advisory": true — that proves integrity (the packet wasn't modified), not attestation (anyone can produce one). Attestation requires an Ed25519 key you manage. CI pipelines that must never emit an advisory packet should pass --require-signing, which exits 3 before scanning if no real key is configured.

License

Apache 2.0. See NOTICE and THIRD_PARTY_NOTICES.txt.

Contributing

See CONTRIBUTING.md. All contributions require a DCO sign-off (git commit -s).

Metadata

Release files for blastcontain-verify 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for blastcontain-verify 0.4.1
File Size Uploaded Provenance Actions
blastcontain_verify-0.4.1.tar.gz 124.1 kB With provenance Details for blastcontain_verify-0.4.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for blastcontain-verify 0.4.1
File Interpreter ABI Platform Actions
blastcontain_verify-0.4.1-py3-none-any.whl Python 3 none any Details for blastcontain_verify-0.4.1-py3-none-any.whl

Total release size: 193.6 kB

Release files / blastcontain_verify-0.4.1.tar.gz

Download URL blastcontain_verify-0.4.1.tar.gz
Size 124.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d0f0672ac2a08d3769863d763058117e554a3cf55119b002aa3126b01fef88f4
BLAKE2b-256 checksum
How to use checksums
769b4b2fd2b8db2b7c3195d0fd3ed7ca1377d3e0d2600e48dda9d44a784a28da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Release files / blastcontain_verify-0.4.1-py3-none-any.whl

Download URL blastcontain_verify-0.4.1-py3-none-any.whl
Size 69.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7ce19fcfa4c736172014919e858a950e4b91ed8f52986ba8aa681ebca810fd97
BLAKE2b-256 checksum
How to use checksums
1e267006a35a78ff90e05d0009772438892487de30a83d3f327ba3c58a6dab9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Security for blastcontain-verify 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for blastcontain_verify-0.4.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page