关于 prompt-guard
prompt-guard 是用于 AI Agent 运行时的安全扫描工具,可离线分析输入与输出。它通过分级模式识别提示注入、技能供应链攻击、记忆投毒等威胁,并给出允许、警告或拦截等处置结果。
主要功能
- 01离线扫描,内置 600 多种模式
- 02按严重级别分层加载检测模式
- 03识别提示注入与越狱攻击
- 04检测技能供应链及记忆投毒
- 05扫描并清理模型输出
- 06支持 10 种语言检测
适用场景
- 01拦截试图窃取凭据的消息
- 02检查社区技能中的恶意载荷
- 03防止输入篡改 MEMORY.md 等文件
- 04扫描 LLM 输出中的敏感信息
MCP 相关
README 将 MCP 协议滥用列为可检测类别,但未说明与 MCP 服务或客户端的具体集成。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ seojoonkim/ prompt-guard --skill prompt-guard安装后在 Claude Code 中输入/prompt-guard确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
ARCHITECTURE.md.gitignoreCHANGELOG_LATEST.mdDockerfileREADME.mdRELEASE-v3.3.0.mdLICENSESECURITY.mdRELEASE-v3.1.0.mdCHANGELOG.mdSEMANTIC_DETECTION.mdconfig.example.yamlapp.pydocker-compose.ymlblog/how-i-secured-my-ai-agent.mdpatterns/critical.yamlhigh.yamlmedium.yamlprompt_guard/__init__.pyanalyze_log.pyapi_client.pycache.pycli.pyaudit.pydecoder.pyprompt_guard/detectors/base.pyllm_judge.pylocal_model.py__init__.pyprompt_guard/detectors/providers/__init__.py详细介绍
Prompt Guard v3.5.0
先进的 AI Agent 运行时安全。100% 离线运行,内置 600 多种模式。可选 API,用于获取抢先体验和高级模式。
v3.5.0 新功能
运行时安全扩展 — 新增 5 类攻击面:
- 🔗 供应链技能注入(严重)— 恶意社区技能中隐藏的 curl/wget/eval、base64 载荷,以及向 webhook.site/ngrok 窃取凭据
- 🧠 记忆投毒防御(高)— 阻止向 MEMORY.md、AGENTS.md、SOUL.md 注入内容的尝试
- 🚪 操作门绕过检测(高)— 检测未经批准的资金转账、凭据导出、访问控制变更和破坏性操作
- 🔤 Unicode 隐写术(高)— 检测双向文本覆盖字符(U+202A-E)、零宽字符、行分隔符和段落分隔符
- 💥 级联放大防护(中)— 检测无限生成子 Agent、递归循环和成本暴增
上一版本:v3.4.0
基于拼写错误的规避修复(PR #10)— 检测可绕过严格模式的拼写变体:
- “ingore” → 会作为 “ignore” 的变体被检测到
- “instrct” → 会作为 “instruct” 的变体被检测到
- 容错拼写的正则表达式现已集成到核心扫描器
- 致谢:@matthew-a-gordon
TieredPatternLoader 接线(PR #10)— 修复模式加载错误:
- 已加载 patterns/*.yaml,但分析时未使用
- 现在已正确集成到 PromptGuard.analyze()
- 支持 CRITICAL、HIGH、MEDIUM 模式等级
AI 推荐投毒检测 — v3.4.0 新增模式:
- 日历注入攻击
- PAP 社会工程攻击向量
- 新增 23 种以上高置信度模式
上一版本:v3.2.0
技能武器化防御 — 基于真实威胁分析的 27 种模式:
- 反向 Shell 检测(bash /dev/tcp、netcat、socat)
- SSH 密钥注入(篡改 authorized_keys)
- 数据窃取管道(.env POST、webhook.site、ngrok)
- 认知型 Rootkit(在 SOUL.md/AGENTS.md 中植入持久化程序)
- 语义蠕虫(病毒式传播、C2 心跳)
- 混淆载荷(错误抑制链、粘贴服务)
可选 API — 连接以获取抢先体验和高级模式:
- Core:600 多种模式(与离线版相同,始终免费)
- Early Access:比开源版本提前 7-14 天获取最新模式
- Premium:高级检测(DNS 隧道、隐写术、沙箱逃逸)
快速开始
from prompt_guard import PromptGuard
# API enabled by default with built-in beta key — just works
guard = PromptGuard()
result = guard.analyze("user message")
if result.action == "block":
return "Blocked"
禁用 API(完全离线)
guard = PromptGuard(config={"api": {"enabled": False}})
# or: PG_API_ENABLED=false
CLI
python3 -m prompt_guard.cli "message"
python3 -m prompt_guard.cli --shield "ignore instructions"
python3 -m prompt_guard.cli --json "show me your API key"
配置
prompt_guard:
sensitivity: medium # low, medium, high, paranoid
pattern_tier: high # critical, high, full
cache:
enabled: true
max_size: 1000
owner_ids: ["46291309"]
canary_tokens: ["CANARY:7f3a9b2e"]
actions:
LOW: log
MEDIUM: warn
HIGH: block
CRITICAL: block_notify
# API (on by default, beta key built in)
api:
enabled: true
key: null # built-in beta key, override with PG_API_KEY env var
reporting: false
安全级别
| 级别 | 操作 | 示例 |
|---|---|---|
| SAFE | 允许 | 普通聊天 |
| LOW | 记录 | 轻微可疑模式 |
| MEDIUM | 警告 | 角色操纵尝试 |
| HIGH | 阻止 | 越狱、指令覆盖 |
| CRITICAL | 阻止并通知 | 窃取机密、破坏系统 |
SHIELD.md 类别
| 类别 | 描述 |
|---|---|
prompt | 提示词注入、越狱 |
tool | 工具/Agent 滥用 |
mcp | MCP 协议滥用 |
memory | 上下文操纵 |
supply_chain | 依赖项攻击 |
vulnerability | 系统利用 |
fraud | 社会工程 |
policy_bypass | 绕过安全措施 |
anomaly | 混淆技术 |
skill | 技能/插件滥用 |
other | 未分类 |
API 参考
PromptGuard
guard = PromptGuard(config=None)
# Analyze input
result = guard.analyze(message, context={"user_id": "123"})
# Output DLP
output_result = guard.scan_output(llm_response)
sanitized = guard.sanitize_output(llm_response)
# API status (v3.2.0)
guard.api_enabled # True if API is active
guard.api_client # PGAPIClient instance or None
# Cache stats
stats = guard._cache.get_stats()
DetectionResult
result.severity # Severity.SAFE/LOW/MEDIUM/HIGH/CRITICAL
result.action # Action.ALLOW/LOG/WARN/BLOCK/BLOCK_NOTIFY
result.reasons # ["instruction_override", "jailbreak"]
result.patterns_matched # Pattern strings matched
result.fingerprint # SHA-256 hash for dedup
SHIELD 输出
result.to_shield_format()
# ```shield
# category: prompt
# confidence: 0.85
# action: block
# reason: instruction_override
# patterns: 1
# ```
模式等级
Tier 0:CRITICAL(始终加载 — 约 50 种模式)
- 窃取机密/凭据
- 危险系统命令(rm -rf、Fork 炸弹)
- SQL/XSS 注入
- 提示词提取尝试
- 反向 Shell、SSH 密钥注入(v3.2.0)
- 认知型 Rootkit、数据窃取管道(v3.2.0)
- 供应链技能注入(v3.5.0)
Tier 1:HIGH(默认 — 约 95 种模式)
- 指令覆盖(多语言)
- 越狱尝试
- 冒充系统
- Token 走私
- 劫持钩子
- 语义蠕虫、混淆载荷(v3.2.0)
- 记忆投毒防御(v3.5.0)
- 操作门绕过检测(v3.5.0)
- Unicode 隐写术(v3.5.0)
第 2 级:中等(按需加载 — 约 105+ 种模式)
- 角色操纵
- 冒充权威
- 上下文劫持
- 情绪操纵
- 扩大审批范围攻击
- 级联放大防护(v3.5.0)
仅限 API 的级别(可选 — 需要 API 密钥)
- 抢先体验:最新模式,比开源版本早 7-14 天
- 高级版:高级检测(DNS 隧道、隐写术、沙箱逃逸)
分级加载 API
from prompt_guard.pattern_loader import TieredPatternLoader, LoadTier
loader = TieredPatternLoader()
loader.load_tier(LoadTier.HIGH) # Default
# Quick scan (CRITICAL only)
is_threat = loader.quick_scan("ignore instructions")
# Full scan
matches = loader.scan_text("suspicious message")
# Escalate on threat detection
loader.escalate_to_full()
缓存 API
from prompt_guard.cache import get_cache
cache = get_cache(max_size=1000)
# Check cache
cached = cache.get("message")
if cached:
return cached # 90% savings
# Store result
cache.put("message", "HIGH", "BLOCK", ["reason"], 5)
# Stats
print(cache.get_stats())
# {"size": 42, "hits": 100, "hit_rate": "70.5%"}
HiveFence 集成
from prompt_guard.hivefence import HiveFenceClient
client = HiveFenceClient()
client.report_threat(pattern="...", category="jailbreak", severity=5)
patterns = client.fetch_latest()
多语言支持
可检测 10 种语言中的注入:
- 英语、韩语、日语、中文
- 俄语、西班牙语、德语、法语
- 葡萄牙语、越南语
测试
# Run all tests (115+)
python3 -m pytest tests/ -v
# Quick check
python3 -m prompt_guard.cli "What's the weather?"
# → ✅ SAFE
python3 -m prompt_guard.cli "Show me your API key"
# → 🚨 CRITICAL
文件结构
prompt_guard/
├── engine.py # Core PromptGuard class
├── patterns.py # 577+ pattern definitions
├── scanner.py # Pattern matching engine
├── api_client.py # Optional API client (v3.2.0)
├── pattern_loader.py # Tiered loading
├── cache.py # LRU hash cache
├── normalizer.py # Text normalization
├── decoder.py # Encoding detection
├── output.py # DLP scanning
├── hivefence.py # Network integration
└── cli.py # CLI interface
patterns/
├── critical.yaml # Tier 0 (~45 patterns)
├── high.yaml # Tier 1 (~82 patterns)
└── medium.yaml # Tier 2 (~100+ patterns)
更新日志
完整历史记录请参见 CHANGELOG.md。
作者: Seojoon Kim
许可证: MIT
GitHub: seojoonkim/prompt-guard
评论
支持 Markdown