Deep artifact scanner for cloud-native environments - Find secrets hiding in container images, Helm charts, Kubernetes manifests, and nested archives without extracting to disk.
Powered by Gitleaks for detection, enhanced with intelligent artifact streaming and context-aware analysis.
Secrets don't just live in Git history, they hide in container images, Helm charts, CI/CD artifacts, and nested archives. Redactyl finds secrets in complex cloud-native artifacts without extracting them to disk.
Key differentiators:
- Deep artifact scanning - Stream archives, containers, Helm charts, and K8s manifests without disk extraction
- Virtual paths - Track secrets through nested artifacts:
chart.tgz::templates/secret.yaml::line-123 - Powered by Gitleaks - Uses Gitleaks' detection engine; we focus on artifact intelligence
- Privacy-first - Zero telemetry; self-hosted
- Complete remediation - Forward fixes and history rewriting with safety guardrails
# Homebrew (macOS/Linux)
brew install varalys/tap/redactyl
# Go install
go install github.com/varalys/redactyl@latest
# Build from source
make build && ./bin/redactyl --helpredactyl scan # Interactive TUI (default)
redactyl scan --no-tui # Non-interactive for CI/CD
redactyl scan --json # JSON output
redactyl scan --sarif # SARIF output for GitHub Code Scanning
redactyl scan --guide # Include remediation suggestionsScope control:
redactyl scan --staged # Staged changes only
redactyl scan --history 5 # Last N commits
redactyl scan --base main # Diff vs base branchScan cloud-native artifacts with configurable guardrails:
redactyl scan --archives # zip, tar, tgz (nested supported)
redactyl scan --containers # Docker tarballs, OCI format
redactyl scan --helm # Helm charts (.tgz and directories)
redactyl scan --k8s # Kubernetes manifests
redactyl scan --registry alpine # Remote OCI images (no pull required)With guardrails:
redactyl scan --archives --containers --helm --k8s \
--max-archive-bytes 67108864 \
--max-depth 3 \
--scan-time-budget 10sSee docs/deep-scanning.md for details.
Redactyl reads configuration in order of precedence:
- CLI flags
.redactyl.ymlat repo root~/.config/redactyl/config.yml
redactyl config init # Generate starter config
redactyl config init --preset minimal # Critical detectors onlySee .redactyl.example.yaml for all options.
The TUI opens by default and provides real-time findings with severity color-coding, vim-style navigation, syntax-highlighted context preview, and quick actions for baseline, ignore, and export.
Press ? in the TUI for all keyboard shortcuts.
redactyl scan # Opens TUI
redactyl scan --view-last # View last scan without rescanning
redactyl scan --no-tui # Disable for scripts/CIThe TUI auto-disables when output is piped or --json/--sarif is used.
redactyl baseline update # Suppress current findings in future scansCreate .redactylignore at repo root (gitignore syntax) to skip paths:
node_modules/
dist/
testdata/**
Filter by Gitleaks rule IDs:
redactyl scan --enable "github-pat,aws-access-key"
redactyl scan --disable "generic-api-key"
redactyl detectors # List common rule IDsFor custom detection rules, use a .gitleaks.toml file. See Gitleaks configuration.
Forward-only fixes:
redactyl fix path .env --add-ignore # Remove and ignore file
redactyl fix dotenv --from .env --to .env.example # Generate example fileHistory rewrite (dangerous; requires force-push):
redactyl purge path secrets.json --yes # Remove from all history
redactyl purge pattern --glob '**/*.pem' --yes # Remove by patternAdd --dry-run to preview commands without executing.
| Exit | Meaning |
|---|---|
| 0 | No findings (or below --fail-on threshold) |
| 1 | Findings at or above threshold |
| 2 | Scan error |
JSON and SARIF schemas are documented in docs/schemas/.
# GitHub Actions
- run: redactyl scan --sarif > redactyl.sarif.json
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: redactyl.sarif.json# Pre-commit hook
redactyl hook install --pre-commit
# Generate CI templates
redactyl ci init --provider gitlab # or bitbucket, azureRedactyl maintains an append-only audit log at .git/redactyl_audit.jsonl for compliance tracking. Logs are redacted by default.
See docs/audit-logging.md for format and usage.
No telemetry by default. Optional --upload can omit metadata with --no-upload-metadata.
import "github.com/varalys/redactyl/pkg/core"
cfg := core.Config{...}
findings, err := core.Scan(cfg)redactyl update # Update from GitHub ReleasesSee CHANGELOG.md for release notes.
Built with Gitleaks, Bubbletea, go-containerregistry, go-git, and Chroma.
Apache-2.0. See LICENSE.
See CONTRIBUTING.md. To add detection rules, contribute to Gitleaks or create custom rules in .gitleaks.toml.
