| Crates.io | secretscout |
| lib.rs | secretscout |
| version | 3.1.0 |
| created_at | 2025-11-01 06:48:27.166939+00 |
| updated_at | 2025-11-01 06:48:27.166939+00 |
| description | Blazingly fast Rust CLI for detecting secrets, passwords, API keys, and tokens in git repositories |
| homepage | https://github.com/globalbusinessadvisors/SecretScout |
| repository | https://github.com/globalbusinessadvisors/SecretScout |
| max_upload_size | |
| id | 1911764 |
| size | 208,775 |
A blazingly fast, memory-safe CLI tool for detecting secrets, passwords, API keys, and tokens in git repositories. Built with Rust for maximum performance and safety.
SecretScout is a complete Rust rewrite of the gitleaks-action open source project, delivering 10x faster performance with 60% less memory usage while maintaining 100% backward compatibility. It leverages the Gitleaks secret scanning engine with a high-performance Rust wrapper.
# Install globally
npm install -g secretscout
# Verify installation
secretscout --version
The npm package automatically downloads the correct binary for your platform (Linux, macOS Intel, macOS ARM, Windows).
# Install from crates.io
cargo install secretscout
# Verify installation
secretscout --version
# Clone the repository
git clone https://github.com/globalbusinessadvisors/SecretScout.git
cd SecretScout
# Build the CLI tool
cargo build --release
# The binary will be at: target/release/secretscout
./target/release/secretscout --version
# If installed via npm:
secretscout detect
secretscout detect --source /path/to/repo
secretscout protect --staged
secretscout version
# If built from source:
./target/release/secretscout detect
./target/release/secretscout detect --source /path/to/repo
./target/release/secretscout protect --staged
./target/release/secretscout version
# Build SecretScout
cargo build --release
# Scan the SecretScout repository itself
./target/release/secretscout detect --source . --verbose
# Output formats: sarif (default), json, csv, text
./target/release/secretscout detect --report-format json --report-path findings.json
secretscout detectScan a repository for secrets:
secretscout detect [OPTIONS]
Options:
-s, --source <PATH> Path to git repository [default: .]
-r, --report-path <PATH> Path to write report [default: results.sarif]
-f, --report-format <FORMAT> Report format (sarif, json, csv, text) [default: sarif]
--redact Redact secrets in output
--exit-code <CODE> Exit code when leaks detected [default: 2]
--log-opts <OPTS> Git log options (e.g., "--all", "main..dev")
-c, --config <PATH> Path to gitleaks config file
-v, --verbose Enable verbose logging
Examples:
# Basic scan
secretscout detect
# Scan with custom config
secretscout detect --config .gitleaks.toml
# JSON output with verbose logging
secretscout detect -f json -r report.json --verbose
# Scan specific git range
secretscout detect --log-opts "main..feature-branch"
# Full repository scan (all commits)
secretscout detect --log-opts "--all"
secretscout protectScan staged changes (pre-commit hook):
secretscout protect [OPTIONS]
Options:
-s, --source <PATH> Path to git repository [default: .]
--staged Scan staged changes only [default: true]
-c, --config <PATH> Path to gitleaks config file
-v, --verbose Enable verbose logging
Examples:
# Scan staged changes
secretscout protect --staged
# Use in pre-commit hook
secretscout protect --config .gitleaks.toml
secretscout versionPrint version information:
secretscout version
Create .git/hooks/pre-commit:
#!/bin/bash
./target/release/secretscout protect --staged
exit $?
Make it executable:
chmod +x .git/hooks/pre-commit
Add to .pre-commit-config.yaml:
repos:
- repo: local
hooks:
- id: secretscout
name: SecretScout
entry: ./target/release/secretscout protect --staged
language: system
pass_filenames: false
SecretScout auto-detects gitleaks configuration files:
--config.gitleaks.toml in repository root.github/.gitleaks.tomlCreate .gitleaks.toml:
title = "My Gitleaks Config"
[[rules]]
description = "AWS Access Key"
id = "aws-access-key"
regex = '''AKIA[0-9A-Z]{16}'''
[[rules]]
description = "Generic API Key"
id = "generic-api-key"
regex = '''(?i)api[_-]?key['\"]?\s*[:=]\s*['\"]?[a-z0-9]{32,45}['\"]?'''
[allowlist]
paths = [
"vendor/",
"node_modules/",
"*.test.js"
]
SecretScout can also run as a GitHub Action:
name: Secret Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: globalbusinessadvisors/SecretScout@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
See docs/GITHUB_ACTIONS.md for advanced GitHub Actions configuration.
Standards-compliant SARIF 2.1.0 format:
secretscout detect --report-format sarif --report-path results.sarif
Machine-readable JSON:
secretscout detect --report-format json --report-path findings.json
Tabular format for spreadsheets:
secretscout detect --report-format csv --report-path secrets.csv
Human-readable text output:
secretscout detect --report-format text --report-path report.txt
0 - No secrets found (success)1 - Error occurred2 - Secrets detected (configurable with --exit-code)# Debug build
cargo build
# Release build (optimized)
cargo build --release
# Run tests
cargo test --all-features
# Run linter
cargo clippy --all-features
# Format code
cargo fmt --all
Choose one of the following methods:
# Install from npm registry
npm install -g secretscout
# Use from anywhere
secretscout detect --source ~/projects/my-repo
# Install from crates.io registry
cargo install secretscout
# Use from anywhere
secretscout detect --source ~/projects/my-repo
# Install from local source directory
cargo install --path secretscout
# Use from anywhere
secretscout detect --source ~/projects/my-repo
SecretScout is built for speed:
| Metric | JavaScript v2 | Rust v3 | Improvement |
|---|---|---|---|
| Cold start | ~25s | ~8s | 3x faster |
| Warm start | ~12s | ~5s | 2.4x faster |
| Memory usage | 512 MB | 200 MB | 60% less |
| Binary size | N/A | 4.6 MB | Optimized |
Built-in security protections:
To report security issues: GitHub Security Advisories
If you see "gitleaks binary not found", SecretScout will download it automatically on first run. This may take 30-60 seconds.
Make sure the binary is executable:
chmod +x target/release/secretscout
Install Rust via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
Contributions welcome! Please:
cargo test and cargo clippyMIT License - see LICENSE for details.
SecretScout is an independent Rust rewrite of the gitleaks-action project, created to provide:
The original gitleaks-action is available at: https://github.com/gitleaks/gitleaks-action
This project maintains the same functionality while adding significant performance improvements and new features through a modern Rust implementation.
Made with Rust
SecretScout v3 - Fast, Safe, Simple Secret Detection