Skip to main content

Overview

zenveil scan is the primary command. It dispatches the appropriate scanners based on the target type and returns a prioritized list of findings.

Scan a local repository

Arguments

Flags

Examples

Sample output

What the secrets scanner checks

  • Hardcoded credentials — AWS keys, GitHub tokens, Slack tokens, private key blocks, hardcoded passwords, API keys, JWT tokens
  • Environment file hygiene.env files committed to the repo, missing .env* in .gitignore
  • OWASP patterns — XSS-accessible token storage, predictable JWT secrets, client-side admin gates, weak password hashing, debug mode, open redirects, long-lived sessions

What the supply chain scanner checks

  • Missing lockfilespackage-lock.json, yarn.lock, pnpm-lock.yaml, Pipfile.lock, poetry.lock
  • Floating npm versions^, ~, *, latest ranges that allow breaking updates
  • Dependency confusion — internal package names that could be squatted on public registries
  • Known CVEs — OSV.dev lookups for pinned versions (requires --check-cves)

Scan a GitHub repository

Scan any GitHub repository without cloning it. ZenVeil downloads the archive, scans it in a temporary directory, and deletes it — no code is stored. Progress is shown as an animated five-step panel in the terminal:

Arguments

Flags

Examples


Context-aware scanning

ZenVeil scans all files by default — including test, fixture, mock, and example directories. This is intentional. Some of the most damaging credential leaks in the industry originated in files developers considered “safe”:
Rather than ignoring these files and creating blind spots, ZenVeil classifies findings by context and adjusts severity accordingly.

How severity is downgraded

Context labels in output

Every finding includes a context badge so you know exactly where it came from:

Example output

The same pattern detected. Different context. Different severity. This reduces alert fatigue without blind-spotting real leaks.

When to use --exclude-tests

Use --exclude-tests only when:
  • You have already audited your test files and confirmed no real credentials exist
  • You want a tighter signal-to-noise ratio for a specific scan
The default (scan everything) is recommended. Credentials committed to test history are still in your git history — and still exploitable.

GitHub token permissions

Create a token with minimum required scopes at github.com/settings/tokens/new.

Rate limits

Without a token, GitHub allows ~60 requests/hour. With a token, this increases to ~5,000. For CI/CD pipelines, always set GITHUB_TOKEN.

Scan an API endpoint

Scan an HTTP API for security header misconfigurations.

Arguments

Flags

What it checks

  • Strict-Transport-Security — HSTS presence and configuration
  • X-Content-Type-Options — MIME sniffing protection
  • X-Frame-Options — clickjacking protection
  • Content-Security-Policy — XSS policy
  • Referrer-Policy — referrer information leakage
  • Permissions-Policy — browser feature control
  • X-XSS-Protection — legacy XSS filter header
  • CORS misconfiguration — wildcard Access-Control-Allow-Origin

Examples

Sample output

API scanning only tests publicly reachable endpoints. Private or localhost URLs are blocked (SSRF protection). Use scan repo for scanning application code.