Secret Scanner

io.github.GuardBeePublished by GitHub account GuardBeev1.1.1Updated Nov 3, 2026

Scans files for leaked secrets and API keys

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Local MCP server that scans text, files, directories, git history and coding-agent transcripts for exposed secrets and API keys.

What you can do
  • Scan a text string or code snippet for exposed secrets and API keys
  • Scan a single file, or recursively scan a directory while skipping node_modules, .git, dist and binary files
  • Scan a git repository's staged changes or every commit's added lines to find keys deleted from files but still in history
  • Scan local coding-agent transcripts (Claude Code, Codex, Gemini CLI, Continue) for secrets pasted into chats or printed by commands
  • List the secret patterns the scanner can detect
When to use it
Useful when you want an assistant to check a project, a config file or a snippet for leaked credentials before committing or sharing, or to audit git history and agent transcripts for keys that were already exposed and should be rotated.
Requirements
Runs as a local stdio process, installed from the npm package @guardbee/mcp-secret-scanner (Node.js, typically via npx). No accounts, API keys or headers are declared. It reads local files, directories, git repositories and agent transcript folders on the machine.
Before you install
Scan results only partially redact matches (first 4 and last 4 characters), so findings still reveal fragments of real secrets. Live verification of keys against providers exists only in the CLI, not in the MCP tools. Optional telemetry is off by default; setting GUARDBEE_TELEMETRY=1 sends server, tool, success, duration and short parameter values such as file paths to a third party. Scanning agent transcripts surfaces secrets that were already sent to a model provider and should be rotated.

Installation

In SourceWeft

  1. Open Secret Scanner in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@guardbee/mcp-secret-scanner

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

[npm version] [npm downloads] [License: MIT]

An MCP server that scans your source files, directories, and environment configs for exposed API keys, passwords, tokens, and other secrets. Ask Claude directly whether your project is leaking secrets.

Telemetry is off by default. With GUARDBEE_TELEMETRY=1 it sends the server, tool, success, duration and short parameter values such as a file path; longer strings and fields like content, token or password are replaced with a placeholder. See @guardbee/mcp-telemetry.


Features

  • 76 Secret Patterns — AWS, Azure, GCP, GitHub, GitLab, Stripe, OpenAI, Anthropic, OpenRouter, Groq, Hugging Face, Slack, Twilio, SendGrid, DigitalOcean, Cloudflare, Supabase, Vault, PyPI, Shopify, Linear, Notion, Atlassian and more — plus the Turkish providers iyzico, PayTR, Netgsm and İleti Merkezi, matched on their variable names since their keys have no prefix. The rules live in @guardbee/guard-core, so @guardbee/mcp-security-proxy masks the same formats in tool results at runtime
  • File & Directory Scanning — a single file or an entire project tree
  • Git History & Staged Scanning — --history scans every line any commit added, so a key deleted from the files but still in the repository is found, reported once at the commit that added it (with author and date); --staged scans only what you are about to commit
  • Baseline — --write-baseline records today's findings as hashes (never the secrets, safe to commit); --baseline then reports only new ones, so an existing repo can adopt the scanner in CI without fixing everything first. SARIF results carry a stable partialFingerprints value
  • High-Entropy Values — a random-looking value assigned to a secret-like name (WEBHOOK_SIGNING_SECRET=… in .env, client_secret: in YAML, "internalApiKey" in JSON) is reported even when no provider rule knows its format. Randomness is measured as Shannon entropy (hex values need 32+ characters; values without digits need more bits, so a camel-case passphrase does not count); public/publishable, *_hash, *_id and *_url names, placeholders and ${VAR} references are left alone, and a value a provider rule already reported is not reported twice. Medium severity, low in test files; --no-entropy (or entropy: false in the MCP tools) turns it off
  • Agent Transcripts — scan --agent-history (MCP: scan_agent_history) scans what coding agents keep on your machine: Claude Code (~/.claude/projects, ~/.claude.json), Codex (~/.codex), Gemini CLI (~/.gemini/tmp) and Continue (~/.continue/sessions). A key pasted into a chat or printed by a command the agent ran stays there — and was already sent to the model provider, so rotate it. Each secret is reported once per agent with how often it appears; the entropy check is off here unless --entropy, since transcripts are full of code the agent read
  • Large Line Files — .jsonl, .ndjson, .ipynb and .log files over 1 MB (transcripts, notebooks with outputs, logs) are read line by line instead of being skipped
  • Live Verification (CLI only) — --verify asks each provider whether a found key still works, through a read-only identity endpoint (GitHub /user, OpenAI /models, Slack auth.test, …): GitHub, GitLab, OpenAI, Anthropic, Slack, Stripe, Hugging Face, npm, SendGrid, Groq, OpenRouter and DigitalOcean. Each key goes only to its own provider, once, and never appears in the output; findings are marked live / invalid / unknown and live ones are listed first. --fail-on=live fails CI only for keys that still work. The MCP tools never verify, so an agent cannot send your secrets anywhere on its own
  • Smart Skipping — directories like node_modules, .git, dist, build, .next are skipped automatically
  • Safe Redaction — matches are shown as first 4 + stars + last 4 characters
  • Allowlist Support — allowlist known test/fake values
  • 71 Unit Tests — 100% passing test suite

Quick Start

bash
npm install -g @guardbee/mcp-secret-scanner

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "guardbee-secret-scanner": {      "command": "npx",      "args": ["-y", "@guardbee/mcp-secret-scanner"]    }  }}

MCP Tools

ToolDescription
scan_textScans the given text for secrets
scan_fileScans a single file
scan_directoryRecursively scans a directory and its subdirectories
scan_gitScans a git repository's staged changes or every commit's added lines (history)
scan_agent_historyScans coding agents' transcripts on this machine (Claude Code, Codex, Gemini CLI, Continue)
list_patternsLists all active secret patterns

Example Usage

You can ask Claude:

"Scan my project for secrets: /Users/me/my-app"

"Are there any secrets in this .env file?"

"Is this text safe: export API_KEY=sk-abc123..."


Detected Secret Types

CategoryExamples
CloudAWS Access Key, AWS Secret, GCP API Key
Source ControlGitHub PAT, GitLab Token
PaymentsStripe Secret/Publishable Key
AIOpenAI API Key, Anthropic API Key, HuggingFace Token
CommunicationSlack Bot Token, Twilio Auth Token, SendGrid Key
DatabasePostgreSQL URL, MySQL URL, MongoDB URI, Redis URL
CryptographyRSA Private Key, EC Private Key, OpenSSH Key, PGP Key
WebJWT Token, Bearer Token
Package/Platformnpm Token, Docker Hub Token, Vercel Token
GenericSECRET=, PASSWORD=, API_KEY= patterns

Security Note

This tool partially redacts matched values in scan results (e.g. sk_live_abc1...xyz9). Full values are never logged or exported.


CLI — CI/CD Integration

In addition to MCP server mode, this can also be used directly as a CLI:

bash
# Scan a project directorynpx @guardbee/mcp-secret-scanner scan ./my-project
# Scan a single filenpx @guardbee/mcp-secret-scanner scan .env
# Fail only on critical/highnpx @guardbee/mcp-secret-scanner scan . --fail-on=high
# JSON output (for CI reporting)npx @guardbee/mcp-secret-scanner scan . --format=json# Secrets pasted into Claude Code / Codex / Gemini CLI / Continue sessions on this machinenpx @guardbee/mcp-secret-scanner scan --agent-history# Which of the found keys still work? (sends each key to its own provider)npx @guardbee/mcp-secret-scanner scan . --history --verify --fail-on=live# Pre-commit: only the lines you are about to commitnpx @guardbee/mcp-secret-scanner scan --staged
# Every commit on every branch (finds keys deleted from the files)npx @guardbee/mcp-secret-scanner scan . --historynpx @guardbee/mcp-secret-scanner scan . --history=main..HEAD   # just this branch
# Adopt an existing repo: record known findings once, then fail only on new onesnpx @guardbee/mcp-secret-scanner scan . --history --write-baseline=.guardbee-secrets-baseline.jsonnpx @guardbee/mcp-secret-scanner scan . --history --baseline=.guardbee-secrets-baseline.json

Exit codes: 0 = no secrets found · 1 = secrets found · 2 = error

GitHub Actions

yaml
name: Secret Scanon: [push, pull_request]
jobs:  secret-scan:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4        with:          fetch-depth: 0   # full history for --history      - name: Scan for exposed secrets        run: npx @guardbee/mcp-secret-scanner scan . --history --baseline=.guardbee-secrets-baseline.json --fail-on=high

GitLab CI

yaml
secret-scan:  image: node:20  script:    - npx @guardbee/mcp-secret-scanner scan . --fail-on=high  only:    - merge_requests    - main

Pre-commit Hook

bash
# .git/hooks/pre-commitnpx @guardbee/mcp-secret-scanner scan --staged --fail-on=high || exit 1

Development

bash
npm installnpm test          # 71 unit testsnpm run build     # TypeScript compile

License

MIT — GuardBee

Feedback

Questions, ideas, or a false positive? Start a thread in GitHub Discussions or open an issue. If GuardBee is useful to you, a ⭐ on the repository helps others find it.

Source: packages/secret-scanner/README.md at commit bc5997d

Tools

6

scan_text

Scan a text string or code snippet for exposed secrets and API keys

Parameterslabelcontentrequiredentropy

scan_file

Scan a single file for exposed secrets and API keys

Parameterspathrequiredentropy

scan_directory

Recursively scan a directory for exposed secrets and API keys. Automatically skips node_modules, .git, dist, and binary files.

ParameterspathrequiredentropyexcludeincludebaselinemaxFiles

scan_git

Scan a git repository for secrets in what git says was added: the staged changes (before a commit) or every commit's added lines (history). History finds secrets that were deleted from the files but are still in the repository.

ParametersmoderequiredpathrequiredrangeentropybaselinemaxCommits

scan_agent_history

Scan the transcripts coding agents keep on this machine (Claude Code, Codex, Gemini CLI, Continue) for secrets that were pasted into a chat or printed by a command. Such a secret was already sent to the model provider and should be rotated. Each secret is reported once with how often it appears.

Parametersentropy

list_patterns

List all secret patterns that the scanner can detect

Takes no parameters.

Version history

12
  1. v1.1.1LatestOct 30, 2026
  2. v1.0.2Oct 22, 2026
  3. v0.6.11Oct 21, 2026
  4. v0.6.10Oct 20, 2026
  5. v0.6.8Oct 19, 2026
  6. v0.6.7Oct 16, 2026
  7. v0.6.6Oct 15, 2026
  8. v0.6.4Oct 14, 2026
  9. v0.6.3Oct 14, 2026
  10. v0.6.1Oct 13, 2026
  11. v0.6.0Oct 11, 2026
  12. v0.3.0Oct 9, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts