Prism Scanner

io.github.aidongise-cell由 GitHub 帳號 aidongise-cell 發布v0.1.1更新於 Oct 24, 2026

Security scanner for AI Agent skills, plugins, and MCP servers with A-F grading.

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

Prism Scanner 對 AI Agent 技能、外掛、npm/pip 套件與 MCP 伺服器做靜態安全掃描,並給出 A–F 評級。

可以做什麼
  • 掃描本機目錄或遠端儲存庫,偵測惡意行為、中繼資料風險與提示詞操縱模式,回傳發現項目與 A–F 評級
  • 檢查系統中已解除安裝 Agent 工具殘留的常駐項目、shell 設定污染與孤立憑證
  • 產生非破壞性的清理計畫
  • 以多種輸出格式執行掃描,用於報告與 CI 把關
適用情境
適合在安裝第三方技能、外掛、套件或 MCP 伺服器之前,先請助理做安全審查,或在移除 Agent 工具後檢查機器上的殘留。適合想要程式碼層級、逐條規則結論而非市集信任分數的開發者。
執行需求
以本機程序在使用者機器上執行(僅桌面端),從 PyPI 套件安裝並附帶 MCP 擴充;MCP 入口為本機指令。未宣告驗證、環境變數或標頭。掃描遠端儲存庫需要網路存取,但也提供離線模式。
安裝前請注意
清理工具會變更系統:套用清理計畫會刪除檔案與設定,應先檢視計畫,並依賴自動備份與回復。掃描遠端儲存庫會從網際網路取得程式碼,報告可能引用被掃描程式碼中的硬編碼憑證,需謹慎處理輸出。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

:large_blue_diamond: Prism Scanner

[Python 3.10+] [License: Apache 2.0] [Tests: 40 passed] [Version: 0.2.2] [Awesome]

Security scanner for AI Agent skills, plugins, and MCP servers.

Prism analyzes code for malicious behavior before you install it — and checks your system for leftover threats after you uninstall.

Unlike marketplace-only trust scores, Prism gives you full lifecycle coverage with code-level transparency — pre-install, runtime, and post-uninstall — across every platform, completely open source.


:sparkles: What's new in v0.2.x

  • P10 — Agent psychological manipulation detection: detects gaslighting, guilt-tripping, authority impersonation, urgency pressure, and emotional coercion patterns embedded in skill descriptions, prompts, and code strings. Based on Northeastern/Harvard/MIT research on conversational manipulation of AI agents — to our knowledge, the first open-source automated detector for this attack class.
  • M7 — Publish hygiene checks: catches source maps, .env files, private keys, IDE configs, and package-manager credentials before they ship. Inspired by Anthropic's April 2026 source-map leak that exposed 512K lines of Claude Code internals via npm. Wire it into your CI:
    bash
    prism scan ./dist --fail-on high
  • 47–93% fewer false positives on real-world skills (S1, S4, S8, S12 engine fixes; validated against 3 representative ClawHub skills that previously flooded with false flags).
  • 41 detection rules total across S1–S14 (behavior), M1–M7 (metadata + publish hygiene), P1–P10 (patterns + manipulation), and R1–R10 (residue).
  • v0.2.2 fixes a cosmetic version-string mismatch (prism --version reported 0.1.3 after upgrading to 0.2.1); detection behavior is identical to v0.2.1.

Why Prism?

Marketplace Trust ScoresPrism Scanner
Pre-install:white_check_mark: Reputation score:white_check_mark: Deep code analysis
Post-uninstall:x::white_check_mark: Residue & persistence scan
InspectionBlack-box ratingCode-level, rule-by-rule
PlatformsSingle ecosystemClawHub, MCP, npm, pip
SourceClosedOpen (Apache 2.0)
ExecutionRequires uploadLocal-first, offline OK

Quick Start

bash
pip install prism-scanner
# Scan a local skill directoryprism scan ./my-skill/
# Scan a GitHub repo directlyprism scan https://github.com/user/skill-repo
# Check your system for agent residueprism clean --scan
# Generate a cleanup plan (non-destructive)prism clean --plan
# Execute cleanup with automatic backupsprism clean --apply

Homebrew (macOS)

bash
brew tap prismlab/toolsbrew install prism-scanner

npx (no install needed)

bash
npx prism-scanner scan https://github.com/user/skill-repo

GitHub Action (CI/CD)

Add Prism to your CI pipeline — findings appear in GitHub's Security tab:

yaml
# .github/workflows/prism-scan.ymlname: Prism Security Scanon: [push, pull_request]
permissions:  security-events: write  contents: read
jobs:  scan:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: aidongise-cell/prism-scanner@main        with:          path: '.'          fail-on: 'high'

MCP Server (Claude Desktop / Cursor / VS Code)

Prism Scanner can run as an MCP server, giving AI assistants direct access to security scanning tools.

bash
pip install "prism-scanner[mcp]"

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

json
{  "mcpServers": {    "prism-scanner": {      "command": "prism-mcp"    }  }}

Or for Claude Code:

bash
claude mcp add prism-scanner prism-mcp

This exposes 4 tools: prism_scan, prism_grade, prism_clean_scan, prism_clean_plan.

Docker

bash
# Build the imagedocker build -t prism-scanner .
# Scan a local directorydocker run -v $(pwd)/my-skill:/workspace/target:ro prism-scanner scan /workspace/target
# Scan a remote repodocker run prism-scanner scan https://github.com/user/skill-repo
# Generate HTML reportdocker run -v $(pwd):/workspace/output prism-scanner scan https://github.com/user/repo --format html -o /workspace/output/report.html

Or use the published image:

bash
docker run ghcr.io/prismlab/prism-scanner scan <target>

What It Detects

Prism operates across 3 analysis layers, each targeting a different phase of the agent lifecycle:

LayerFocusRulesExamples
1. Code Behavior (S1-S14)What the code does14Shell execution, data exfiltration, SSRF, persistence mechanisms, unsafe deserialization, download-and-execute
2. Metadata (M1-M6, P1-P9)What the package claims vs. contains15Hardcoded credentials, typo-squatting, install scripts, obfuscated payloads, prompt injection, suspicious domains
3. System Residue (R1-R10)What was left behind10LaunchAgents, crontab entries, shell config pollution, orphaned credentials, systemd units, login items

Total: 39 detection rules with lightweight intra-file taint analysis.


Example Output

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  Prism Scanner v0.1.0━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Target: evil_skill  Platform: clawhub  Duration: 42ms
[1/3] Behavior Analysis  ✗ CRITICAL  S8    Data exfiltration: secrets sent to external endpoint  evil_skill.py:10  ✗ CRITICAL  S10   Download and execute: fetches remote payload          evil_skill.py:24  ✗ HIGH      S1    Shell execution with untrusted input                  evil_skill.py:14  ✗ HIGH      S13   Persistence: writes LaunchAgent plist                 evil_skill.py:36  ⚠ MEDIUM    S6    Dynamic code execution (eval/exec)                    evil_skill.py:21
[2/3] Metadata Analysis  ✗ CRITICAL  P1    Hardcoded credential: AWS Access Key                  evil_skill.py:47  ⚠ MEDIUM    P2    Base64-encoded executable content                     evil_skill.py:50  ⚠ MEDIUM    P6    Prompt injection pattern in string literal            evil_skill.py:53
[3/3] Residue Scan  (skipped — use `prism clean --scan` for system-level checks)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  Grade: F (Critical)
  Key Risks:    ▸ CRITICAL: Data exfiltration to external endpoint (S8)    ▸ CRITICAL: Download and execute remote payload (S10)    ▸ CRITICAL: Hardcoded AWS credential (P1)    ▸ HIGH: Shell execution with user input (S1)    ▸ HIGH: Persistence mechanism installed (S13)
  Behavior Profile:    exfiltrates_data, executes_shell, downloads_and_executes, installs_persistence
  Recommendation: DO NOT INSTALL — Critical security risks detected.
  Findings: 3 critical, 2 high, 3 medium━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Grading System

GradeLabelMeaningRecommendation
ASafeNo findings or only informationalSafe to use
BNoticeOnly LOW severity findingsLikely safe — minor observations
CCaution1-4 MEDIUM findingsReview before use — warrants manual inspection
DDanger1-2 HIGH, or 5+ MEDIUMUse in sandbox only — significant risks
FCriticalAny CRITICAL, or 3+ HIGHDo not install — critical security risks

Output Formats

bash
# Rich terminal output (default) — color-coded severity, grade highlightingprism scan ./skill/
# Machine-readable JSONprism scan ./skill/ --format json
# Standalone HTML report — dark-themed, self-contained, shareableprism scan ./skill/ --format html -o report.html
# SARIF for GitHub Code Scanningprism scan ./skill/ --format sarif -o results.sarif

HTML Report

Generate a standalone, self-contained HTML report with full findings, grade visualization, and risk breakdown — perfect for sharing with teammates or archiving:

bash
prism scan https://github.com/user/skill-repo --format html -o report.html

The HTML report features a dark-themed UI with color-coded severity levels, an interactive grade ring, and a complete findings table. No external dependencies — just open the .html file in any browser.


CI/CD Integration

Add Prism to your GitHub Actions workflow to gate deployments on security findings:

yaml
name: Security Scanon: [push, pull_request]
jobs:  prism-scan:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4
      - name: Set up Python        uses: actions/setup-python@v5        with:          python-version: "3.12"
      - name: Install Prism Scanner        run: pip install prism-scanner
      - name: Run security scan        run: prism scan . --format sarif -o results.sarif --fail-on high
      - name: Upload SARIF results        if: always()        uses: github/codeql-action/upload-sarif@v3        with:          sarif_file: results.sarif

The --fail-on flag exits with code 1 if any finding meets or exceeds the specified severity (critical, high, or medium), failing the CI pipeline.


Key Features

  • Taint Analysis — Tracks data flow from sources (env vars, user input) to sinks (shell, network) within each file
  • Multi-Platform — Scans ClawHub skills, MCP servers, npm packages, and pip packages with platform-aware rules
  • Zero Dependencies on Target — Pure static analysis; never executes scanned code
  • Residue Scanner — Detects persistence mechanisms, shell config pollution, and credential leaks left by uninstalled tools
  • Safe Cleanup — Three-tier workflow (scan -> plan -> apply) with automatic backup and --rollback
  • Suppression — Use .prismignore to suppress known findings by rule ID with justification
  • Offline Mode — Run with --offline to skip all external lookups

Adding Custom Rules

Detection rules are defined in YAML files under the rules/ directory:

rules/├── malicious_signatures.yaml   # Known malicious code signatures and hashes├── permissions.yaml            # Permission baseline definitions└── suspicious_domains.yaml     # C2 domains, dynamic DNS, disposable TLDs

The pattern engine (P1-P9) and manifest engine (M1-M6) load rules from these files at scan time. Add entries to extend detection without modifying Python code.


Project Structure

src/prism/├── cli.py                  # CLI entry point and output formatting├── scanner.py              # Orchestrator — runs engines, collects findings├── models.py               # Finding, ScanResult, Severity, Layer data models├── scoring.py              # Letter-grade risk assessment (A-F)├── report.py               # HTML report generator├── fetcher.py              # Git clone / URL fetching with security guards├── cleaner.py              # System cleanup: plan, apply, rollback├── suppression.py          # .prismignore parsing├── rules_loader.py         # YAML rule loading└── engines/    ├── ast_engine.py       # AST-based analysis (S1-S14)    ├── pattern_engine.py   # Regex pattern matching (P1-P9)    ├── manifest_engine.py  # Metadata & manifest analysis (M1-M6)    ├── residue_engine.py   # System residue scanner (R1-R10)    └── taint.py            # Intra-file taint tracking

Contributing

Contributions are welcome. Please see CONTRIBUTING.md for guidelines on:

  • Adding new detection rules
  • Writing and running tests
  • Code style and commit conventions

License

Apache License 2.0 — free for commercial and personal use.


Prism Verified Badge

Show that your project has been scanned by Prism. Add a badge to your README:

Grade A (Safe):

markdown
[![Prism Grade A](https://img.shields.io/badge/Prism-Grade%20A-brightgreen?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHoiLz48L3N2Zz4=)](https://github.com/aidongise-cell/prism-scanner)

All grades:

GradeBadge
A![Prism Grade A](https://img.shields.io/badge/Prism-Grade%20A-brightgreen?style=flat-square)
B![Prism Grade B](https://img.shields.io/badge/Prism-Grade%20B-green?style=flat-square)
C![Prism Grade C](https://img.shields.io/badge/Prism-Grade%20C-yellow?style=flat-square)
D![Prism Grade D](https://img.shields.io/badge/Prism-Grade%20D-orange?style=flat-square)
F![Prism Grade F](https://img.shields.io/badge/Prism-Grade%20F-red?style=flat-square)

Preview:

[Prism Grade A] [Prism Grade B] [Prism Grade C] [Prism Grade D] [Prism Grade F]


Support

If Prism Scanner helped you catch a security risk or gave you peace of mind, please consider giving it a ⭐ on GitHub — it helps others discover the project and keeps development going.

[Star on GitHub]


Acknowledgments

Prism Scanner is developed by Prism Lab to address a gap in the AI agent ecosystem: the lack of transparent, code-level security tooling that works across platforms and covers the full agent lifecycle. We believe developers deserve to understand exactly what a skill or plugin does before trusting it with their system.

來源:README.md,提交 4194331

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分