rea
Reverse engineer anything with agents, from app behavior down to native binaries.
Scans AI agent skills for prompt injection, data exfiltration, and malicious code patterns. It is a static analysis tool, so it can flag risky skills before they are installed.
Claude Code
$ npx -y skills add cisco-ai-defense/skill-scanner --agent claude-code
Codex
$ npx skills add cisco-ai-defense/skill-scanner -a codex
Cursor
$ npx skills add cisco-ai-defense/skill-scanner -a cursor
Gemini CLI
$ npx skills add cisco-ai-defense/skill-scanner -a gemini-cli
GitHub Copilot
$ npx skills add cisco-ai-defense/skill-scanner -a github-copilot
OpenCode
$ npx skills add cisco-ai-defense/skill-scanner -a opencode
Windsurf
$ npx skills add cisco-ai-defense/skill-scanner -a windsurf
A best-effort security scanner for AI Agent Skills that detects prompt injection, data exfiltration, and malicious code patterns. It combines pattern-based detection (YAML + YARA-X), AST and dataflow analysis, an optional LLM-as-a-judge, and a bounded CEL decision layer over typed detector facts.
Important: This scanner provides best-effort detection, not comprehensive or complete coverage. A scan that returns no findings does not guarantee that a skill is free of all threats. See Scope and Limitations below.
Supports OpenAI Codex Skills and Cursor Agent Skills formats following the Agent Skills specification. With --lenient, also scans non-standard formats such as Claude Code .claude/commands/*.md and flat markdown skill repos.
cel-go v0.32.0 runtime to correlate bounded facts after deterministic detection and before optional LLM analysislow-noise and quiet presets and LLM caps, with recall, false-positive rate and F1 published for each (Recommended Settings)Join the Cisco AI Discord to discuss, share feedback, or connect with the team.
Skill Scanner is a detection tool. It identifies known and probable risk patterns, but it does not certify security.
Key limitations:
On held-out skills (MaliciousSkillBench's frozen test split, 839 malicious and 545 harmless):
balanced), 66.7% reach review at MEDIUM+ (15.4% FPR), and
33.7% are blocked at HIGH (6.4% FPR).Every figure, with its corpus and method, is in Measured Results and on the evaluation Space.
The documentation website is cisco-ai-defense.github.io/docs/skill-scanner.
Deep-dive pages live in docs/.
| Guide | Description |
|---|---|
| Quick Start | Get started in 5 minutes |
| Recommended Settings | Pick a setup for the lowest FPR or the highest F1, with copy-paste configs |
| LLM Providers | Configure the LLM judge for any provider, gateway or local model |
| Results and Tuning | Read findings, build a review queue, lower false positives |
| Architecture | System design and components |
| CEL Decision Layer | Typed facts, safety bounds, rollout modes, and telemetry |
| Threat Taxonomy | Complete AITech threat taxonomy with examples |
| Taxonomy Reference | Definitions of every AITech and AISubtech code |
| LLM Analyzer | LLM configuration and usage |
| System One Analyzer | Optional advisory screening tier, and why it cannot gate |
| Meta-Analyzer | Optional second-pass review (off by default; measured cost) |
| Behavioral Analyzer | Dataflow analysis details |
| Scan Policy | Custom policies, presets, and tuning guide |
| Policy Quick Reference | Compact reference for policy sections and knobs |
| Measured Results | Every published figure, with its corpus, population and model |
| Rule Authoring | How to add signature, YARA, and Python rules |
| GitHub Actions | Reusable workflow for CI/CD integration |
| API Reference | REST API documentation |
| Development Guide | Contributing and development setup |
Prerequisites: CPython 3.11–3.14 and uv (recommended) or pip.
Wheels include the CEL helper for glibc Linux x86-64/ARM64, macOS 14+ x86-64/ARM64 and Windows x86-64. Other platforms build from the source distribution, which needs Go 1.27.1+. See Installation and Configuration for details.
# Using uv (recommended)
uv pip install cisco-ai-skill-scanner
# As a standalone tool
uv tool install cisco-ai-skill-scanner # or: pipx install cisco-ai-skill-scanner
# Using pip
pip install cisco-ai-skill-scanner
# Using Homebrew (macOS 14+)
brew tap cisco-ai-defense/skill-scanner https://github.com/cisco-ai-defense/skill-scanner
brew install cisco-ai-defense/skill-scanner/skill-scanner
The presets and settings in Recommended Settings
need 2.2.0 or newer (skill-scanner --version).
Cloud Provider Extras
# AWS Bedrock support (IAM credentials, no API key)
pip install cisco-ai-skill-scanner[bedrock]
# Google AI Studio / Gemini support
pip install cisco-ai-skill-scanner[google]
# Google Vertex AI support
pip install cisco-ai-skill-scanner[vertex]
# Azure OpenAI support
pip install cisco-ai-skill-scanner[azure]
# On-device Apple Foundation Model (experimental: macOS 26+, Apple Intelligence, full Xcode)
pip install "apple-fm-sdk>=0.2.1,<0.3"
# All cloud providers
pip install cisco-ai-skill-scanner[all]
Every recommended setup runs the LLM judge (--use-llm): rules alone catch only about 8% of
held-out malicious skills.
| Goal | Command | Held-out recall / FPR / F1 |
|---|---|---|
| Highest F1 | skill-scanner scan ./skill --use-llm --policy balanced --fail-on-severity high, and review everything at MEDIUM+ | 66.7% / 15.4% / 75.5% |
| Smaller review queue (your own skills) | skill-scanner scan ./skill --use-llm --policy low-noise --fail-on-severity high | 63.2% / 13.4% / 73.5% |
| Lowest false-positive rate | skill-scanner scan ./skill --use-llm --policy quiet --fail-on-severity high | 50.3% / 7.2% / 64.9% |
| Nothing leaves the machine | any of the above, with the judge on a local model | as above |
Rates are for the MEDIUM+ review queue on MaliciousSkillBench's held-out split, with Gemma 4 26B as the judge. Measured precision for each, and the same setups for pre-commit, GitHub Actions, Python and the REST API, are in Recommended Settings.
# The LLM judge, used by every recommended setup (local models: see LLM Providers)
export SKILL_SCANNER_LLM_API_KEY="your_api_key"
export SKILL_SCANNER_LLM_MODEL="claude-sonnet-5-5" # the default
# On-device Apple Foundation Model (experimental, no API key). Behavioral
# alignment verification is skipped with a warning on this model.
# export SKILL_SCANNER_LLM_MODEL="apple-fm/system"
# Optional: disabled, minimal, low, medium, high, xhigh, or max
export SKILL_SCANNER_LLM_REASONING_EFFORT="low"
# For VirusTotal binary scanning
export VIRUSTOTAL_API_KEY="your_virustotal_api_key"
# For Cisco AI Defense
export AI_DEFENSE_API_KEY="your_aidefense_api_key"
Not sure which flags to use? Run skill-scanner with no arguments to launch the interactive wizard:
skill-scanner
The wizard walks you through selecting a scan target, analyzers, policy, and output format, then shows the assembled command before running it. It recommends the LLM judge and leaves the meta-analyzer off. Great for learning the CLI.
See 12 skill-scanner alternatives
Reverse engineer anything with agents, from app behavior down to native binaries.
A skill pack for authorized reverse engineering, security research, and penetration testing that routes tasks to the right skill and sets up needed tools on demand. It covers API security assessment and Android APK analysis, among others.
Gives an AI agent the step-by-step workflow a senior security analyst follows, covering when to use each technique, what to check first, how to run it and how to verify the result. Covers incident response, forensics, threat intelligence, malware analysis, penetration testing and red teaming.
Agent skill + stdlib Python service to strip multi-vendor AI provenance marks from text and files, for privacy and hygiene on content you own. The skill is a thin client: it drives the machinery over HTTP, so the agent host needs no Python.
Scans AI agent skills for prompt injection, data exfiltration, and malicious code patterns. It is a static analysis tool, so it can flag risky skills before they are installed. Install it with the command on its page. It includes no-confirmation, magic-string-trigger, multi-file-exfiltration. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it