Vigilo
Vigilo is a fast, zero-configuration static security scanner for Python. It detects exploitable vulnerability patterns (CWEs) in first-party code using AST traversal combined with local data-flow analysis to minimize false positives.
Runs across Linux, macOS, and Windows — either via pip or as a standalone binary with no Python installation required.
Why Vigilo?
- High-Signal over High-Noise: Traditional linters (like Bandit) flag safe string constants and standard library calls indiscriminately. Vigilo uses local data-flow analysis to distinguish harmless constants from untrusted dynamic inputs.
- Zero Configuration: Drop it directly into your workflow or CI pipeline with
vigilo scan .orvigilo .. No YAML rule authoring or database setup required. - Zero Runtime Dependencies: Built strictly on Python's standard library. Lightweight and instantaneous.
- First-Party Code Focus: While tools like
pip-auditscan third-party dependencies for CVEs, Vigilo scans your code for logic and injection flaws.
Installation & Quickstart
Option A: Install via PyPI (Python 3.10+)
pip install vigilo
Option B: Standalone Executable (No Python Required)
Pre-built standalone single-file executables are available for Linux, macOS, and Windows on the Releases Page:
- Linux (x86_64):
vigilo-linux-x86_64 - macOS:
vigilo-macos - Windows (x86_64):
vigilo-windows-x86_64.exe
Verifying Checksums
Every release includes a SHA256SUMS.txt file to verify binary integrity:
# Verify checksum on Linux/macOS
sha256sum -c SHA256SUMS.txt
Note on Antivirus Alerts: Standalone executables are bundled with PyInstaller. Some heuristic antivirus engines or Windows SmartScreen may occasionally flag newly published PyInstaller binaries as unfamiliar. This is a known false positive with packed binaries. You can verify the integrity using the SHA256 checksum or install via
pip install vigiloto run from source.
Usage
Scan the current directory:
vigilo scan .
Or use the shortcut alias:
vigilo .
Generate structured JSON output for CI/CD pipelines:
vigilo scan . --format json
Filter by minimum severity:
vigilo scan . --min-severity high
Exclude specific directories or glob patterns:
vigilo scan . --exclude "tests/*" --exclude "migrations/*"
Python API
from vigilo import scan
findings = scan("src/")
for finding in findings:
print(f"[{finding.severity.upper()}] {finding.detector.id} {finding.detector.name}")
print(f" Location: {finding.location}")
print(f" Fix: {finding.fix_hint}")
Supported Detectors
| ID | CWE | Vulnerability | Severity | Target APIs |
|---|---|---|---|---|
VIGILO-001 |
CWE-89 | SQL Injection | HIGH |
db.execute(), cursor.execute(), text(), raw() |
VIGILO-002 |
CWE-78 | OS Command Injection | HIGH |
subprocess.*(shell=True), os.system(), os.popen() |
VIGILO-003 |
CWE-94 | Code Injection | HIGH |
eval(), exec(), compile() |
VIGILO-004 |
CWE-502 | Unsafe Deserialization | HIGH |
pickle.loads(), yaml.load(), marshal.loads() |
VIGILO-005 |
CWE-22 | Path Traversal | HIGH |
open(), os.open(), io.open() |
CLI Reference
usage: vigilo [-h] [--version] {scan} ... [target] [--format {text,json}]
[--min-severity {low,medium,high}] [--exclude EXCLUDE] [--no-color]
Options:
target Directory or file to scan (default: '.')
--format, -f Output report format: 'text' or 'json' (default: 'text')
--min-severity, -s Minimum severity threshold: 'low', 'medium', 'high' (default: 'low')
--exclude, -e Exclude path matching glob pattern (repeatable)
--no-color Disable ANSI terminal coloring
--version, -V Show version and exit
--help, -h Show help and exit
Exit Codes
| Code | Meaning |
|---|---|
0 |
Clean — no vulnerabilities found at or above --min-severity |
1 |
Vulnerabilities detected |
2 |
Execution or path error |
Contributing
We welcome contributions! Please review our Contributing Guide and Code of Conduct.
License
Distributed under the MIT License. Copyright (c) 2026 Sanjiv - Vigilo.
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 vigilo-0.1.1.tar.gz.
File metadata
- Download URL: vigilo-0.1.1.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87c1138c2eaeefe49b33535c91118a7fa69aac678c4a1f53566cfaba74271dbc
|
|
| MD5 |
befd404ec11a028171228331b40e20db
|
|
| BLAKE2b-256 |
a4016c15ad100788edb20a83aee895712d3750fe5e85a3f35de6711c628c00be
|
Provenance
The following attestation bundles were made for vigilo-0.1.1.tar.gz:
Publisher:
release.yml on Sanjiv215/VIGILO-Python-Package
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vigilo-0.1.1.tar.gz -
Subject digest:
87c1138c2eaeefe49b33535c91118a7fa69aac678c4a1f53566cfaba74271dbc - Sigstore transparency entry: 2723134050
- Sigstore integration time:
-
Permalink:
Sanjiv215/VIGILO-Python-Package@3fbd979d41ec21b75a87f4c81ffac4cd59d5ea3a -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Sanjiv215
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3fbd979d41ec21b75a87f4c81ffac4cd59d5ea3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file vigilo-0.1.1-py3-none-any.whl.
File metadata
- Download URL: vigilo-0.1.1-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
805230fea3c3dc7cf362d105ea22afb16ef85d8f335add0f4d36faefecfc890c
|
|
| MD5 |
31116035e7e9417a107506f271ac6140
|
|
| BLAKE2b-256 |
38a43a547ef8a72e8bfb1652c0884d01849d632f1aab36df2e643c412b967682
|
Provenance
The following attestation bundles were made for vigilo-0.1.1-py3-none-any.whl:
Publisher:
release.yml on Sanjiv215/VIGILO-Python-Package
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vigilo-0.1.1-py3-none-any.whl -
Subject digest:
805230fea3c3dc7cf362d105ea22afb16ef85d8f335add0f4d36faefecfc890c - Sigstore transparency entry: 2723134176
- Sigstore integration time:
-
Permalink:
Sanjiv215/VIGILO-Python-Package@3fbd979d41ec21b75a87f4c81ffac4cd59d5ea3a -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Sanjiv215
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3fbd979d41ec21b75a87f4c81ffac4cd59d5ea3a -
Trigger Event:
push
-
Statement type: