secretscan-report
A personal security-hygiene tool: scans your own machine for accidentally exposed secrets (API keys, tokens, passwords, private keys), audits what's installed and what's exposed (Docker containers, listening ports, Chrome browser cookies), and can optionally check your local network and internet connectivity.
Everything runs locally. No secrets ever leave your machine.
Install
pip install secretscan-report[all]
The [all] extra installs websocket-client, which is used only to talk
to Chrome's DevTools Protocol on localhost:9222 for headless browser auditing
(the same mechanism as chromedp in Go).
It never makes outbound network connections.
Without [all]:
pip install secretscan-report
This installs the core scanner (filesystem, shell history, keychain, processes,
network, Docker). Chrome headless auditing is skipped if websocket-client is
not installed.
Usage
# Full scan — all modules including Chrome, LAN, Internet
# Generates HTML + JSON reports with a progress bar
secretscan fullscan
# Default scan (home dir, default modules)
secretscan run
# Scan a specific directory, filesystem module only
secretscan run --paths ~/Projects --modules filesystem
# Full scan with custom output directory
secretscan fullscan --output-dir ./report
# List all detection rules
secretscan rules list
Modules
| Module | Default | What it does |
|---|---|---|
filesystem |
yes | Scans files under --paths (default $HOME) for secret patterns |
shell-history |
yes | Scans .zsh_history, .bash_history, and other history files |
keychain |
yes | Audits macOS Keychain metadata (never decrypts values) |
process-env |
yes | Inspects your own running processes' command lines |
installed-tools |
yes | Inventories security/dev tools and packages |
network |
yes | Lists TCP/UDP ports this machine is listening on |
docker |
yes | Lists running containers, checks for exposed Docker API |
chrome |
yes | Audits Chrome browser: launches headless, reads cookies via CDP, takes screenshots |
lan |
opt-in | Probes other devices on your local network (--yes-lan) |
internet |
opt-in | Tests outbound connectivity to public endpoints |
Output formats
table— colored terminal output (default)json— machine-readable{meta, findings}documenthtml— self-contained HTML report with dark/light themecsv— flat CSV of findings
Detection
15 built-in rules covering AWS, GitHub, GitLab, Slack, Stripe, Google, npm, PEM private keys, and generic password/secret/token assignments. Each rule uses regex matching with optional Shannon entropy scoring and keyword pre-filtering for performance.
Values that look like placeholders ({{password}}, changeme, your_api_key_here)
are detected and downgraded rather than competing with real findings.
Security & privacy
- No outbound network calls from secret-detection modules — ever.
- The
chromemodule connects tolocalhost:9222(Chrome DevTools Protocol) to audit your own browser. This is the same protocol used by Selenium, Playwright, Puppeteer, and chromedp. It copies essential Chrome profile files to a temp directory, launches headless Chrome against the copy, reads cookies and takes a screenshot, then deletes the copy. - The optional
lanmodule sends pings to your local subnet (requires--yes-lan). - The optional
internetmodule makes TCP connections to well-known public endpoints (e.g.google.com:443) to test connectivity. - All scan results stay on disk in the output directory you choose.
Cross-platform
Works on macOS, Linux, and Windows. Platform-specific features:
- macOS: Keychain audit, Chrome cookie decryption via Keychain
- Linux:
/proc-based process inspection - Windows:
netstat/wmic/ipconfigfallbacks
What this tool does NOT do
- No git-history scanning (use Gitleaks/TruffleHog for that)
- No live credential verification
- No bypassing macOS security prompts
- No outbound transmission of findings
- Secret detection modules never make outbound network calls
Dependencies
pyyaml— for loading rules YAML fileswebsocket-client(optional, via[all]) — localhost-only CDP communication for Chrome auditingcryptography(optional, via[crypto]) — macOS Chrome cookie decryption from SQLite fallback
Metadata
Release files for secretscan-report 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| secretscan_report-0.1.2.tar.gz | 38.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| secretscan_report-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 84.0 kB
Release files / secretscan_report-0.1.2.tar.gz
| Download URL | secretscan_report-0.1.2.tar.gz |
|---|---|
| Size | 38.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0aedc0963b9d5159e5ac9e1568abffba973f2e68a279084320d1e24827e0849b
|
|
BLAKE2b-256 checksum How to use checksums |
e83f4700eb2a38c17cf934791eeb13305f692b95ae39a6dee5ae97376b472191
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.6
|
Release files / secretscan_report-0.1.2-py3-none-any.whl
| Download URL | secretscan_report-0.1.2-py3-none-any.whl |
|---|---|
| Size | 46.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2911c756f7028d1d9cdd5283dc3d7e1cab708d1a535f5fbfdcc69d2ac0be3b82
|
|
BLAKE2b-256 checksum How to use checksums |
2b5f325bc688f38ab34e261b100b60ae4e0f7e5d38f2954ed63667e3f435a39f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.6
|