Prompt Leak Scanner

io.github.GuardBee由 GitHub 帳號 GuardBee 發布v1.1.1更新於 Nov 3, 2026

Catches leaked credentials and PII in outbound LLM prompts

已驗證STDIO僅桌面安全與監控AI 與機器學習

概覽

AI 產生的概覽

掃描送往大型語言模型的提示詞、聊天請求內容、檔案與目錄,找出外洩的憑證與個資,並以遮蔽形式回傳結果。

可以做什麼
  • 掃描原始文字字串,例如即將送給模型的提示詞,檢查憑證與個資
  • 掃描 OpenAI/Anthropic 風格的聊天請求內容,包含 messages 內容與 system 欄位
  • 掃描單一檔案,支援純文字或 JSON 請求內容樣本,並自動辨識格式
  • 遞迴掃描存放提示詞日誌或請求內容樣本的目錄
  • 列出掃描器支援的所有憑證與個資樣式,並依類別分組
適用情境
適合在助理依使用者輸入組裝或轉送提示詞時,於內容送往模型供應商之前先做一次檢查。也適合審查儲存庫中的提示詞日誌或請求內容樣本,或把掃描接入 CI。
執行需求
以 stdio 方式在本機執行,通常透過 npx 從 npm 套件啟動。未宣告驗證、環境變數或標頭。除非將 GUARDBEE_TELEMETRY 設為 1,否則遙測預設關閉。
安裝前請注意
結果雖已遮蔽,但工具會讀取你指定的提示詞文字、檔案與目錄,請只掃描你願意曝露的範圍。偵測以樣式與檢查碼為基礎,自由文字中的人名或地址不會被發現。選用遙測在 GUARDBEE_TELEMETRY=1 時會傳送工具名稱、成功狀態、耗時以及檔案路徑等短參數值。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Prompt Leak Scanner,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@guardbee/mcp-prompt-leak-scanner

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

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

An MCP (Model Context Protocol) server — and a standalone reverse proxy — that catches leaked credentials and PII in outbound LLM prompts, before they leave your application.

secret-scanner finds secrets sitting in your codebase. This package finds secrets and PII that made it into a runtime prompt — a support agent that pastes a customer's ticket (email, card number) straight into a system prompt, a debugging session where someone pastes an API key into a chat, an internal tool that forwards raw user input to an LLM without ever checking what's in it. That's a different moment in the pipeline, and a different failure mode than a leaked .env file.

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.

Your app ──► prompt-leak-scanner (proxy) ──► Real LLM API (OpenAI/Anthropic/...)                    │                    ├─ monitor: forward unchanged, log findings                    ├─ redact:  forward with matches replaced by [REDACTED:<id>]                    └─ block:   reject the request before it ever reaches the model

Two ways to use it

1. On-demand scanning (MCP tools) — scan_text/scan_messages/scan_file/scan_directory. Ask Claude to check a prompt, a chat-request-body fixture, or a directory of prompt logs before you ship something that builds prompts from user input.

2. A live reverse proxy (proxy CLI command) — sits between your application and the real LLM API. It buffers and inspects only the outbound request body (message/system text), then streams the upstream response straight back unmodified — so SSE/streaming completions pass through untouched; only the prompt going out is ever parsed. Point your app's baseURL at the proxy instead of the real API and nothing else in your integration needs to change.

bash
guardbee-prompt-leak-scanner proxy --upstream=https://api.openai.com --port=8788 --mode=redact# your app: baseURL = http://localhost:8788 instead of https://api.openai.com

Detection quality: checksums, not just regex

A bare regex for "11 digits" or "16 digits" would flag order numbers, phone extensions, and timestamps constantly. Every PII pattern that has a real checksum algorithm uses it:

  • TC Kimlik No — the actual 11-digit Turkish national ID checksum algorithm (not just a digit-count regex)
  • Credit card numbers — Luhn checksum
  • IBAN — ISO 7064 MOD97-10 checksum

A random 11-digit number has roughly a 1-in-10 chance of passing the TC Kimlik checksum by coincidence — regex alone would be far noisier. Credential patterns (API keys, JWTs, private keys) are matched against real provider-specific prefixes/structure (sk-, AKIA, ghp_, -----BEGIN...PRIVATE KEY-----, JWT's three-segment base64url shape), the same low-false-positive approach secret-scanner uses. The checksum validators come from @guardbee/guard-core, shared with @guardbee/mcp-security-proxy.

Findings never echo the real value. A finding's maskedMatch shows only the first 3 and last 2 characters (sk-…wx) — logging or displaying the very thing you just caught would defeat the point. The proxy's audit events go further: they record which pattern fired and where, never the matched text itself.


Features

  • 13 patterns, 4 categories: credential (9), financial-pii (2, checksum-validated), national-id (1, checksum-validated), contact-pii (2)
  • Chat-body aware — understands OpenAI/Anthropic-style messages[].content (string or content-block array) and system fields, not just flat text
  • Live reverse-proxy mode with monitor/redact/block policies — request-only inspection, response streamed through untouched
  • Masked findings and credential-free audit events — the tool never becomes a second copy of the leak
  • SARIF 2.1.0 output — CI/CD integration (GitHub Code Scanning, etc.)
  • Config file support via guardbee.yml
  • 29 unit tests — checksum validators verified against known-good/known-bad test vectors, proxy tested against a real local HTTP client/server round trip (not just in-process mocks) in all three modes

Quick Start

Claude Desktop / MCP Client

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

CLI (CI/CD)

bash
npx @guardbee/mcp-prompt-leak-scanner scan ./prompt-fixtures --fail-on=high --format=sarif > results.sarif

CLI (live proxy)

bash
npx @guardbee/mcp-prompt-leak-scanner proxy --upstream=https://api.openai.com --mode=block --fail-on-severity=critical

MCP Tools

ToolDescription
scan_textScans a raw text string
scan_messagesScans an OpenAI/Anthropic-style chat request body object
scan_fileScans a single file (plain text, or a JSON request-body fixture — auto-detected)
scan_directoryRecursively scans a directory of prompt logs/fixtures
list_patternsLists all supported patterns by category

Detected Patterns

CategoryPatternSeverity
credentialOpenAI / Anthropic / Google / Stripe API key, AWS access key ID, GitHub PAT, Slack token, PEM private key blockcritical
credentialJWThigh
financial-piiCredit card number (Luhn-validated)high
financial-piiIBAN (mod-97 validated)high
national-idTC Kimlik No (checksum-validated)high
contact-piiEmail addressmedium
contact-piiTurkish phone numbermedium

Configuration (guardbee.yml)

yaml
prompt-leak-scanner:  fail-on: high       # any | critical | high | medium | low | none  max-files: 5000  exclude:    - "fixtures/known-safe/"

Limitations (by design)

  • The proxy only inspects the request body; it does not parse or modify streaming SSE responses — those are piped through untouched.
  • Only messages[].content (string or {type:"text"} content blocks) and top-level system are extracted from a chat body; provider-specific fields outside that shape aren't scanned.
  • This is pattern/checksum-based detection, not a general-purpose NER/PII model — it won't catch PII that doesn't match a known structural pattern (e.g. a name or street address in free text).

Development

bash
npm run buildnpm test             # 29 unit tests

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.

來源:packages/prompt-leak-scanner/README.md,提交 bc5997d

工具

5

scan_text

Scan a raw text string (e.g. a prompt you're about to send to an LLM) for leaked credentials (API keys, private keys, JWTs) and PII (TC Kimlik No, credit card, IBAN, email, phone) — checksum-validated where applicable to keep false positives low.

輸入參數labelcontent必填

scan_messages

Scan an OpenAI/Anthropic-style chat request body (a JSON object with a `messages` array and/or a `system` field) for leaked credentials and PII in every message's text content, before it would be sent to the model.

輸入參數body必填

scan_file

Scan a single file — plain text, or a JSON chat-request-body fixture (auto-detected) — for leaked credentials and PII

輸入參數path必填

scan_directory

Recursively scan a directory of prompt logs or request-body fixtures for leaked credentials and PII

輸入參數path必填excludeincludemaxFiles

list_patterns

List every credential/PII pattern this scanner detects, grouped by category

無需輸入參數。

版本歷史

12
  1. v1.1.1最新Oct 30, 2026
  2. v1.0.2Oct 22, 2026
  3. v0.1.27Oct 21, 2026
  4. v0.1.26Oct 20, 2026
  5. v0.1.24Oct 19, 2026
  6. v0.1.23Oct 16, 2026
  7. v0.1.22Oct 15, 2026
  8. v0.1.20Oct 14, 2026
  9. v0.1.19Oct 14, 2026
  10. v0.1.17Oct 13, 2026
  11. v0.1.16Oct 11, 2026
  12. v0.1.15Oct 9, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分