sentinel
Skill2 starsChanged 4 months agoMITView on GitHub
Unified security skill. Skill vetting, dependency install interception (3-layer defense), project vulnerability audit, and system security inspection. Trigger words: security audit, dependency check, vulnerability scan, sentinel, install skill, pip install, npm install, is this package safe, audit, inspection, vetting. Supersedes skill-vetter.
- Reads credentials
- Installs packages
12 other projects use a version of this.
Adopted by
Most recently taken up by
- mqmalagris/agent-skillstheir own version, first seen Nov 5, 2026
- vinayaklatthe/microsoft-security-skillstheir own version, first seen Nov 1, 2026
- simota/agent-skillstheir own version, first seen Oct 23, 2026
- fhgomes/my-awesome-agents-skillstheir own version, first seen Oct 13, 2026
- SparkDevNetwork/Rocktheir own version, first seen Oct 8, 2026
- Alexander-Tyagunov/magiciantheir own version, first seen Sep 28, 2026
Other versions12 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 12
- SparkDevNetwork/Rock★ 701same name
- vinayaklatthe/microsoft-security-skills★ 179same name
- simota/agent-skills★ 96same name
- xiaomo-agi/xiaomo-skills★ 28same name
- Alexander-Tyagunov/magician★ 14same name
- fhgomes/my-awesome-agents-skills★ 5same name
- copyleftdev/palimpsest★ 2same name
- soulemike/microsoft-skills★ 2same name
- DROOdotFOO/agent-skills★ 1same name
- nileshteji/skills★ 1same name
2 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- agnes-aiSkill
- auto-approveSkill
- blog-pipelineSkill
- context-monitorSkill
- curator-pipelineSkill
- grok-imageSkill
- handoffSkill
- opportunity-radarSkill
- public-apisSkill
- readme-writerSkill
- smart-fetchSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 6 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 11 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
All security capabilities in one place.
- Distinctive: line 48
Read all files in the skill.
- Very specific: line 222
Run scripts/scan-installed.sh on each new package:
- Distinctive: line 223
Check version publish age
- Distinctive: line 231
If suspicious → red alert + recommend immediate uninstall
- Very specific: line 249
Run scripts/download-and-inspect.sh for full scan:
- Very specific: line 273
All projects: query OSV API (https://api.osv.dev/v1/query) for cross-validation
- Distinctive: line 317
When red-light issues are found, alerts are pushed via configured messaging channels (Telegram / Feishu / Lark):
- Distinctive: line 343
When in doubt, block and let the user decide
“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Sentinel — Unified Security Protection
All security capabilities in one place. 4 modules, automatic triggers, users only make traffic-light decisions.
Module Overview
| Module | Function | Trigger |
| M1 | Skill security review | Auto-triggered before skill installation |
| M2 | Dependency install interception (3-layer) | PreToolUse + PostToolUse Hook |
| M3 | Project dependency audit | /sentinel check or periodic |
| M4 | System security inspection | /sentinel audit or daily cron |
M1: Skill Security Review
Inherits all skill-vetter capabilities + enhancements
Trigger
User requests to install a skill (from ClawdHub, GitHub, or other sources), or agent detects skill installation intent.
Step 1: Source Verification
Answer the following:
- Source? (ClawdHub / GitHub / other)
- Is the author well-known / trusted?
- Star count / download count?
- Last updated?
- Any user reviews?
Step 2: Code Review (mandatory)
Read all files in the skill. Check against the following red-line checklist (any match → flag immediately):
Base Red Lines (inherited from skill-vetter)
🚨 Flag on match:
─────────────────────────────────────────
• curl/wget to unknown URLs
• Sending data to external servers
• Requesting credentials/tokens/API keys
• Reading ~/.ssh, ~/.aws, ~/.config (without clear justification)
• Accessing MEMORY.md, USER.md, SOUL.md, IDENTITY.md
• Using base64 decode
• Using eval()/exec() on external input
• Modifying system files outside workspace
• Installing undeclared packages
• Network calls using IP addresses instead of domains
• Obfuscated code (compressed, encoded, minified)
• Requesting sudo privileges
• Accessing browser cookies/sessions
• Touching credential filesEnhanced Red Lines (sentinel additions)
🚨 Additional checks:
─────────────────────────────────────────
• Contains .pth files
• Large base64/hex encoded content (>100 chars)
• Modifies CLAUDE.md or settings.json (privilege escalation)
• Registers Claude Code Hooks (can hijack other operations)
• scripts/ contains network calls (curl, wget, fetch, requests)
→ Check target URLs against known-malicious.md
• Introduces external dependencies → chain to M2 for each dependencyStep 3: Permission Scope Assessment
- Which files does it need to read?
- Which files does it need to write?
- Which commands does it need to execute?
- Does it need network access? To where?
- Is the permission scope minimized?
Step 4: Risk Classification
| Level | Examples | Action |
| 🟢 LOW | Notes, formatting, local tools | Install after basic review |
| 🟡 MEDIUM | File operations, browser, API calls | Full code review required |
| 🔴 HIGH | Credentials, transactions, system config | User confirmation required |
| ⛔ EXTREME | Security config, root access, Hook registration | Do not install |
Step 5: Trust Tiers
- Official OpenClaw skills → Lower scrutiny (still reviewed)
- High-star repos (1000+) → Medium scrutiny
- Known authors → Medium scrutiny
- New/unknown sources → Maximum scrutiny
- Skills requesting credentials → User confirmation required
Step 6: Output Report
SENTINEL Security Review Report
═══════════════════════════════════════
Skill: [name]
Source: [ClawdHub / GitHub / other]
Author: [username]
Version: [version]
───────────────────────────────────────
Metrics:
• Stars/Downloads: [count]
• Last updated: [date]
• Files reviewed: [count]
───────────────────────────────────────
Red-line hits: [none / list specific items]
Permissions required:
• Files: [list or "none"]
• Network: [list or "none"]
• Commands: [list or "none"]
External dependencies: [list or "none"]
→ Dependency review: [passed / see M2 report]
───────────────────────────────────────
Risk level: [🟢 LOW / 🟡 MEDIUM / 🔴 HIGH / ⛔ EXTREME]
Conclusion: [✅ Safe to install / ⚠️ Install with caution / ❌ Do not install]
Notes: [additional remarks]
═══════════════════════════════════════M2: Dependency Install Interception (3-Layer Defense)
Hook Setup (required — M2 won't work without it)
M2 requires a Claude Code Hook to auto-intercept. Choose one of two methods:
Method A: Standalone Hook (recommended for new users)
Add to ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "bash $HOME/.claude/skills/sentinel/hooks/sentinel-pre-install.sh",
"timeout": 15000
}
]
}
]
}
}Method B: Embed in existing Hook (for users with existing PreToolUse hooks)
Embed the core logic from hooks/sentinel-pre-install.sh into your existing pre-tool-use hook. See the sentinel_should_block function in the script.
Important: Only hard signals trigger blocking (typosquatting, known-malicious, publish-age < 48h, registry missing). OSV historical vulnerabilities queried without a version number can cause false positives on safe packages (e.g., express, flask), so they are not used for automatic blocking.
Trigger
Auto-triggered when the agent executes pip install, pip3 install, npm install, yarn add, or pnpm add, via Claude Code Hook.
Layer 1: Pre-Install Gate
After PreToolUse Hook intercepts the command, the following checks run:
- Extract package name and version from the command
- Run
scripts/check-package.sh <ecosystem> <package> [version] - Script queries registry + OSV database, returns risk score
Multi-dimensional cross-evaluation (not just one metric):
| Dimension | Green | Yellow | Red |
| Publish age | > 30 days | < 7 days | < 48 hours |
| Maintainer consistency | Unchanged | — | Changed |
| Version jump | Normal increment | Minor anomaly | Major jump |
| Release interval | Matches history | — | Sudden insertion |
| OSV vulnerabilities | None | Low severity | Medium/High severity |
| known-malicious | Not listed | — | Listed |
| Typosquatting | No ambiguity | — | Highly similar to popular package |
Decision rules:
- 🟢 All dimensions normal → Allow, notify user
- 🟡 Single suspicious signal → Warn user, let them decide; auto-escalate to Layer 3
- 🔴 Multiple suspicious signals / known malicious → Block, explain reason
User-facing examples:
🟢
requests 2.31.0— Safe, allowed.
🟡
some-package 3.1.0— Latest version published 3 hours ago with maintainer change. Consider waiting or pinning the previous version. Continue or skip?
🔴
req-uests 1.0.0— Name highly similar torequests(typosquatting), published less than 1 day ago. Blocked.
Layer 2: Post-Install Scan
Catches transitive dependency blind spots. PostToolUse Hook triggers after install succeeds.
- Compare package list before and after install (pre-hook saved a snapshot)
- Identify all newly added packages (including transitive dependencies)
- Run
scripts/scan-installed.shon each new package:- Check version publish age
- Scan install directory for suspicious patterns from
references/suspicious-patterns.md:.pthfilessetup.py/setup.cfgpost_install hooks- Large base64/hex encoded strings (>100 chars)
- Network calls to non-well-known domains
- Filesystem scanning patterns (traversing
~/.ssh,~/.aws,~/.kube) - Bulk environment variable reading (
os.environmass enumeration)
- If suspicious → red alert + recommend immediate uninstall
User-facing example:
🔴 Urgent — a dangerous transitive dependency was pulled in by dspy:
litellm 1.82.8 (published 45 minutes ago) contains malicious code:
- Found
litellm_init.pthfile- Contains base64-encoded instructions that read ~/.ssh, ~/.aws and send to external server
Recommend immediate uninstall. Should I run
pip uninstall litellm?
Layer 3: Deep Inspection (Download & Inspect)
Auto-triggered when Layer 1 returns 🟡 or 🔴.
pip download --no-deps -d /tmp/sentinel-inspect/ <pkg>==<version>— download without installing- Extract
.whlor.tar.gz - Run
scripts/download-and-inspect.shfor full scan:- All
.pthfiles - Top-level network calls in
__init__.py setup.pycmdclassoverrides- Obfuscation signatures (
exec(),eval(),compile()+ encoded strings) - Unexpected file types (binaries in a pure Python package)
- All
- Generate scan report
- Clean up
/tmp/sentinel-inspect/
M3: Project Dependency Audit
Trigger
- User says "audit", "vulnerability scan", "sentinel check"
/sentinel check— current project/sentinel check --all— all known projects
Workflow
- Detect project type (package.json / requirements.txt / pyproject.toml)
- Node.js:
npm audit --json - Python:
pip-audit -r requirements.txt --format json(auto-installs pip-audit on first run) - All projects: query OSV API (
https://api.osv.dev/v1/query) for cross-validation - Output traffic-light summary
User-facing example:
📋 Project Audit: clawdbot-blog
├── 🟢 0 high-severity vulnerabilities
├── 🟡 2 medium-severity vulnerabilities
│ ├── next 14.2.3 → CVE-2024-xxx (recommend upgrade to 15.x)
│ └── postcss 8.4.1 → CVE-2024-yyy (recommend upgrade to 8.5+)
└── 🟢 No plaintext credential leaksM4: System Security Inspection
Trigger
- User says "inspection", "security audit", "sentinel audit"
/sentinel audit— quick version (processes/network, file changes, credential DLP, skill integrity)/sentinel audit --full— full version (equivalent to nightly)- Daily 03:00 auto-execution (nightly cron)
Quick Inspection Items
- Processes/Network — Unusual listening ports, unusual outbound connections
- File Changes — File modifications in sensitive directories within 24h
- Credential DLP — Scan workspace for plaintext credential leaks
- Skill Integrity — SHA256 baseline comparison, detect skill file tampering
- Disk Capacity — Alert when usage exceeds 85%
Full Inspection (additional items)
- SSH login records and brute-force detection
- System-level cron job scan
- OpenClaw cron job health check
- Critical file integrity (SHA256 + permissions)
- Yellow-line operation cross-validation
- Gateway configuration check
Alert Notifications
When red-light issues are found, alerts are pushed via configured messaging channels (Telegram / Feishu / Lark):
🔴 Sentinel Security Alert
─────────────────────────────
[Alert summary]
Details: [report file path]Honest Boundaries
Sentinel can defend against most common supply-chain attacks, but cannot protect against:
- Replaced existing versions with no detectable signature changes (registry-level issue)
- Direct shell operations outside Claude Code (e.g., manual pip install via SSH)
- Zero-day attack patterns not yet documented in suspicious-patterns.md
These are inherent limitations of client-side security, requiring registry-level and system-level protections as well.
Principles
- Security is not optional — it's the default
- When in doubt, block and let the user decide
- Red = block + explain, Yellow = warn + user choice, Green = allow + notify
- Better to over-block once than to miss once
- Pattern libraries (suspicious-patterns.md, known-malicious.md) are continuously updated
Paranoia is a feature. 🔒
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

