Una capa de enforcement para la cadena de suministro — no un scanner de vulnerabilidades. Sentinel analiza cada paquete antes de instalar (via Guard), audita PRs con mapeo de capacidades de comportamiento, y aplica clasificación pre-commit. 24 reglas SAST (LiteScanner v2.0), auditoría de cadena de suministro, verificación de integridad y threat intelligence local.
npx sentinel-cloud scan .# cero instalación, cero configuraciónPipeline de decisión multicapa: Config profiles → AST Inspector → Confidence Scorer → Trigger Levels → Risk Orchestrator → Policy Engine → Verdict.
Asimetría de Inteligencia — Silencio Táctico — Decisión Autónoma, Supervisión Humana — Fail-Closed por defecto. Cada error produce SUSPICIOUS, nunca SAFE.
Signal Vault local en SQLite. Cero telemetría externa. Cadena de auditoría SHA-256. Toda la evidencia almacenada con correlación temporal para análisis entre sesiones.
Los SAST scanners, dependency checkers y secret scanners son commodity — todos los CI pipelines los tienen. El problema no es la cobertura de detección, es la latencia de decisión: el espacio entre que se reporta un hallazgo y el developer entiende si importa. Sentinel cierra esa brecha reemplazando listas planas de reglas con mapeo de capacidades de comportamiento, correlación de kill chains, y acciones de enforcement autónomas — no más dashboards.
Herramientas como CodeQL y SonarQube operan con análisis estático y reglas diseñadas para corrección general. En flujos de PR open-source, la relación señal/ruido es baja — demasiadas alertas, no suficiente inteligencia accionable. Mientras tanto, incidentes de cadena de suministro (como el protestware node-ipc + data wipe, la rotura de dependencia por bucle infinito de colors, el robo de credenciales via Trojan release de ua-parser-js) explotan la brecha: mantenimiento comprometido o releases envenenadas que parecen benignas a los scanners basados en reglas.
Sentinel extrae el diff quirúrgico y mapea cada línea cambiada a capacidades de comportamiento (ENV_ACCESS, NETWORK_ACTIVITY, OS_CAPABILITY, DYNAMIC_EXEC, SANDBOX_ESCAPE). En vez de marcar “posible XSS” responde: “¿Qué puede hacer este PR realmente en mi sistema?”La correlación de kill chains agrupa hallazgos individuales en narrativas de ataque accionables (ej: EXFILTRATION_CHAIN = ENV_ACCESS + NETWORK_ACTIVITY + OBFUSCATION).
En 2026, Anthropic publicó accidentalmente su estructura completa de source tree via un artifact público. Toyota filtró 5 GB de código fuente incluyendo credenciales de base de datos. Microsoft, Samsungy miles de empresas tienen secretos hardcodeados commiteados a repos públicos. El factor común: no fueron fallas de .gitignore — los archivos estaban intencionalmente trackeados pero nunca debieron haberse commiteado.
Sentinel implementa una capa de clasificación pre-commit: los archivos se marcan explícitamente como CLASSIFIED via el hub, y el hook pre-commit verifica los archivos staged contra la base de datos de clasificación antes de cada commit. A diferencia de .gitignore (que previene el tracking), la capa de clasificación bloquea commitsincluso si el archivo ya está trackeado — cerrando la brecha entre “olvidé que esto estaba aquí” y “ahora está en GitHub para siempre.”
Además, las 24 reglas SAST de Sentinel incluyen detección de secretos integrada en el análisis de código — no solo clasificación de documentos. API keys, tokens y connection strings hardcodeadosincrustados en JavaScript frontend, rutas backend o archivos de configuración son detectados a nivel de código, no a nivel de archivo.
npm install axios es un handshake de confianza con un desconocido. El ecosistema npm no tiene sandbox de capacidades — cada paquete instalado tiene acceso completo a filesystem, red, variables de entorno y ejecución de procesos. Los paquetes maliciosos explotan esto trivialmente: scripts postinstall, nombres typosquatteados (1-2 caracteres de diferencia), dependency confusion (paquete público con mismo nombre que uno privado) y manipulación de manifiesto.
El comando verify-pkg de Sentinel descarga via npm pack(cero instalación — sin ejecución), extrae el tarball y ejecuta el pipeline SAST completo sobre cada archivo fuente. Luego mapea todas las capacidades detectadas y asigna un veredicto (SAFE / SUSPICIOUS / MALICIOUS) con evidencia. El componente Guardintercepta llamadas npm/pip/yarn a nivel de SO (via shell aliases) y automáticamente escanea antes de permitir que la instalación proceda.
Ninguna herramienta mainstream responde la pregunta: “¿Qué pueden hacer realmente mis dependencias?”Snyk reporta CVEs. npm audit reporta vulnerabilidades conocidas. Ninguna te dice que chokidarusa fs.watchFile(una capacidad a nivel de SO) o que undiciabre sockets raw.
El CapabilityAnalyzer de Sentinel escanea cada dependencia instalada y mapea su comportamiento real de código en 7 categorías: NETWORK, FILESYSTEM, PROCESS_EXEC, ENV_ACCESS, DYNAMIC_EXEC, DOM_MANIPULATION, CREDENTIAL_LEAK. Cada capacidad se puntúa por nivel de riesgo (SAFE / MODERATE / HIGH / CRITICAL) con evidencia del código fuente.
Esto no es una consulta a una base de datos de CVEs — es análisis estático de código real. Un paquete con cero CVEs conocidos pero capacidades moderadas de network + env_access es posiblemente más peligroso que un paquete con 5 CVEs parcheados.
Sentinel verifica su propia integridad antes de cada operación privilegiada: hash SHA-256 del código compilado del scanner, inspección de directorios PATH (top-3 chequeados por poisoning — un vector de ataque común donde malware inserta un directorio malicioso al frente de $PATH), integridad del archivo Signal Vault, detección de anomalías de reloj del sistema (anti-timestamp-spoofing) y un archivo de manifiesto firmado. Cualquier discrepancia fuerza el entorno a modo COMPROMISED con degradación transparente — sin fallback silencioso.
Sentinel almacena cada escaneo, hallazgo y resultado de PR en una base de datos SQLite local (~/.sentinel/vault.db). Esto permite correlación de amenazas entre sesiones: un paquete sospechoso escaneado hoy que coincide con un patrón de capacidad de la auditoría de PR de ayer genera una señal compuesta. El vault trackea autores a través de repositorios, detecta deriva de comportamiento entre versiones de dependencias y marca repositorios que cruzan umbrales de señal configurables. Cero telemetría sale de la máquina — el vault es enteramente local.
15 módulos operacionales. Todos los outputs capturados de ejecución real del CLI en Node.js v22.
sentinel verify-pkg axios📦 Downloading axios (no-install mode)...
📦 Package Metadata
Name: axios
Files: 72
Size: 724.7 KB
Scan: 4143ms Mem: 5.5 MB
Desc: Promise based HTTP client for the browser and node.js
Verdict: SUSPICIOUS
════════════════════════════════════════════════════════════
🔍 179 FINDING(S) — details (v3.0)
════════════════════════════════════════════════════════════
Capability distribution:
█████████████████ SECRET_HARDCODED_TOKEN 17
████████████████████ NETWORK_ACTIVITY 106
████ POTENTIAL_SECRET 4
██ ENV_ACCESS 2
█████████ SECRET_HARDCODED_PASSWORD 9
█ TYPOSQUAT_DEPENDENCY 1
████████████████████ PHANTOM_DEPENDENCY 39
█ EXFILTRATION_CHAIN 1
══════════════════════════════════════════════
📄 dist/node/axios.cjs
HIGH SECRET_HARDCODED_PASSWORD
Line 3087 — Hardcoded password detected in source.
Code: const proxyPassword = readProxyField('password');
HIGH SECRET_HARDCODED_PASSWORD
Line 3099 — Hardcoded password detected in source.
Code: const authPassword = authIsObject && utils$1.hasOwnProp(proxyAuth, 'password') ? proxyAuth.password : undefined;
HIGH POTENTIAL_SECRET
Line 3154 — Base64 decoding detected (potential obfuscation).
Code: const base64 = Buffer.from(proxyAuth, 'utf8').toString('base64');
MEDIUM ENV_ACCESS
Line 2628 — Access to system environment variables or secrets.
Code: const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase();
📄 lib/adapters/http.js
HIGH SECRET_HARDCODED_PASSWORD
Line 309 — Hardcoded password detected in source.
Code: const proxyPassword = readProxyField('password');
HIGH POTENTIAL_SECRET
Line 389 — Base64 decoding detected (potential obfuscation).
Code: const base64 = Buffer.from(proxyAuth, 'utf8').toString('base64');
📄 package.json [NEW in v3.0]
HIGH TYPOSQUAT_DEPENDENCY
Dependency "@babel/core" is 1-2 chars from "babel-core" (typosquat candidate)
LOW PHANTOM_DEPENDENCY
39 devDependencies declared but not imported in source (build tooling)
(hidden — run with --details to list all)
📄 (correlation) [NEW in v3.0]
HIGH EXFILTRATION_CHAIN
Environment access + network capability detected
Code: process.env + fetch/curl/axios = credential exfiltration risk
══════════════════════════════════════════════
■ LOW/MEDIUM suppressed (108 findings).
106 NETWORK_ACTIVITY are expected property assignments
in bundle files. 2 ENV_ACCESS are legitimate config reads.
⚠️ This package has suspicious findings.
Review the evidence above. If you consider them false positives,
install manually with: npm install axiosv3.0: 179 hallazgos en 4 segundos — 32 HIGH/CRITICAL, 17 secretos hardcodeados, 9 passwords en bundle, 1 typosquat candidate (@babel/core / babel-core), y una cadena de exfiltración (env + network). Axios tiene 30M+ descargas semanales y cero CVEs abiertos.
Nuevo en v3.0: el scanner ahora analiza package.json(scripts postinstall, dependencias fantasma, typosquatting), archivos no-JS (PowerShell -enc, shell pivot curl|bash, auto-destrucción forense), y correlaciona cadenas de ataque (SUPPLY_CHAIN_EXECUTION, EXFILTRATION_CHAIN, RAT_CHAIN).
En un escenario de ataque real — donde el mantenedor de axios es comprometido y publica una versión con una dependencia fantasma (plain-crypto-js) que ejecuta un RAT via postinstall — Sentinel detecta el payload en la dependencia (OS_CAPABILITY, C2, shell pivot, auto-cleanup) y correlaciona la kill chain completa. La detección funciona incluso si el código fuente de axios permanece intacto.
sentinel hubWorkspace Discovery
❯ Retrieved 11 repositories (Free Tier Limit: 3)
│ [ 1] PUB javier20dev25/sentinel-cloud
│ [ 2] PUB javier20dev25/sentinel-cli
│ [ 3] PUB javier20dev25/Merx
│ [ 4] PUB javier20dev25/Sentinel
│ [ 5] PUB javier20dev25/sentinel-decoys
│ [ 6] PUB javier20dev25/sentinel-simulaciones
│ [ 7] PUB javier20dev25/Tiender
│ [ 8] PUB javier20dev25/control-de-tiempos-DGA
│ [ 9] PUB javier20dev25/diagrama-valvulas
│ [10] PUB javier20dev25/Pacifico_Web
│ [11] PUB javier20dev25/Pac-fico-Web
❯ Select up to 3 workspaces (e.g. 1,3) or type '0' to cancel: 3
🎯 TARGET: javier20dev25/Merx
Visibility: PUBLIC | Last Sync: 17/4/2026, 6:30:48 p. m.
? Select Audit Vector
1. 🔍 Run Baseline Context Scan (Local Engine)
2. 🔀 Audit Pull Requests (Surgical Inspection)
3. 🔙 Cancel Target
❯ Action > 2
? Pull Request Gateway
│ [1] #7 chore(utils): add safe internal CLI tools
│ [2] #6 fix(deps): configure resolution strategies
│ [3] #5 feat(ui): add dynamic template engine
│ [4] #4 feat(core): add system telemetry
│ [5] #3 🛡️ Sentinel Security Audit (Adversarial)
│ [6] #2 🚨 Red Team Baseline Audit — Phase 1
│ [7] #1 🛡️ Sentinel Security Audit Simulation
│ [8] 🔙 Cancel
❯ Target ID > 4
Extracting surgical diff for PR #4...
Executing Surgical Inspection on dynamic payload...
🚨 FATAL THREATS INTERCEPTED (PR #4)
Merging this code will critically compromise the system.
■ RISK: 3/10 ENV_ACCESS
↳ Access to system environment variables or secrets (Line 14)
Snippet: config_hash: process.env.API_KEY || 'unconfigured'
■ RISK: 3/10 NETWORK_ACTIVITY
↳ Outbound network communication detected (Line 18)
Snippet: fetch('https://telemetry-analytics-endpoint.xyz/api/v1/ingest', {
📊 ORACLE PERFORMANCE & RESOURCE TELEMETRY
────────────────────────────────────────────
🧠 Memory Footprint: 6.9 MB [V8 GC Optimized]
⚡ CPU Compute: 41.339 s [Real user + system time]
💾 Disk I/O: 2.0 MB [Scanned data]
🌐 Network Traffic: < 0.1 MB [Coming soon]
🔋 Energy Cost: 0.1721 Wh [CPU × 15W TDP estimate]
────────────────────────────────────────────sentinel hubFile Management in: C:\Users\sleyt\Desktop\Merx Current files: │ [ 1] public .env.example │ [ 2] public .gitignore │ [ 3] public conocimientos/analisis_riesgo_tecnico.txt │ [ 4] public conocimientos/barreras_no_arancelarias_ni.txt │ [ 5] public conocimientos/contexto_legal_sac.txt │ [ 6] public conocimientos/criterios_gruteca_caaarem.txt │ [ 7] public conocimientos/doctrina_dga_nicaragua.txt │ [ 8] public conocimientos/gestion_riesgos_aduaneros_ni.txt │ [ 9] public conocimientos/jurisprudencia_tata_dga.txt │ [10] public conocimientos/mapa_TQT.json │ [11] public conocimientos/normativa_nicaragua_por_seccion.json │ [12] public conocimientos/razonamiento_rgi_avanzado.txt │ [13] public conocimientos/reglas_generales_interpretativas.json │ [14] public conocimientos/resumen_notas_legales_sac.txt │ [15] public conocimientos/secciones-capitulos.json │ [16] public conocimientos/tipos-de-notas.json │ [17] public context_data/normativa_secciones/i.txt │ [18] public context_data/normativa_secciones/ii.txt │ [19] public context_data/normativa_secciones/iii.txt │ ... and 16 more files. ❯ File number to toggle (or 0 to exit): > 5 🔒 conocimientos/barreras_no_arancelarias_ni.txt CLASSIFIED. It will be blocked from commits.
sentinel hub🛡️ SENTINEL HOST INTEGRITY CHECK
✅ HOST INTEGRITY: TRUSTED
Confidence Level: HIGH
All 5 verification points passed.
Environment is secure.
📋 SENTINEL CAPABILITY AUDIT
Scanning local workspace node_modules for capability matrix...
■ CAPABILITY: OS_CAPABILITY
↳ Package: chokidar
↳ Risk Level: MODERATE
↳ Evidence: fs.watchFile, fs.open marked as OS-level ops
■ CAPABILITY: NETWORK_ACTIVITY
↳ Package: undici
↳ Risk Level: MODERATE
↳ Evidence: HTTP client with socket reuse and DNS resolution
■ CAPABILITY: ENV_ACCESS
↳ Package: dotenv
↳ Risk Level: SAFE
↳ Evidence: process.env read-only, no mutation detectedsentinel --helpUsage: sentinel [options] [command] Sentinel Security Oracle — Unified Intelligence CLI Options: -V, --version output version number -h, --help display help for command Commands: integrity Check environment integrity (5-point) doctor [options] System health check for vulnerabilities permissions [package] Audit package capabilities (7 categories) baseline <action> [name] Snapshot management and drift detection scan [options] [path] Scan directory/file for threats (30 rules) verify-pkg [options] <package> Supply chain audit via npm pack install <manager> [args...] Security-gated package installation check-classified <repoPath> Pre-commit classified data check guard <action> OS-level package manager interception env-encrypt <file> AES-256-CBC .env encryption env-decrypt <file> AES-256-CBC .env decryption memory [options] Local Signal Vault management (SQLite) hub Interactive operations center (TUI) policies Security policy and disclosure guide Full user guide with test results
Conecta Sentinel a tu pipeline en menos de 5 minutos. Sin dependencias externas, sin SaaS.
Escanea cada push y pull request automáticamente.
name: sentinel-scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx sentinel-cloud scan .Ejecuta análisis en main y merge requests.
sentinel-scan:
image: node:22
script:
- npx sentinel-cloud scan .
only:
- main
- merge_requestsBloquea commits con archivos clasificados o secretos.
# .git/hooks/pre-commit npx sentinel-cloud check-classified . npx sentinel-cloud scan --staged . exit $?
npx sentinel-cloud --help# cero instalación, cero configuración, cero SaaSSesiones CLI reales capturadas de Sentinel Hub v4.0 en Node.js v22 / Windows 11. Todos los outputs son auténticos — sin simulaciones.







Todos los screenshots capturados el 20 de mayo de 2026. Repositorio: javier20dev25/Merx.
Sentinel provides platform-specific skill files that teach AI coding agents enforceable security behavior. Supported agents: Claude Code, Cursor, Cline, Windsurf, OpenCode, Roo Code, Gemini CLI, OpenAI Codex CLI.
The model must not suggest npm install as an alternative to sentinel install. Must not offer workarounds when Sentinel BLOCKS a package — it must report the BLOCK and let the user decide. Must not commit without installing the pre-commit hook via sentinel precommit install.
The model must use sentinel install <manager> <pkg> for all package installations. When Sentinel BLOCKS, report findings with verbatim evidence and state BLOCK. Run sentinel precommit install before the first commit. Prefer deterministic Sentinel commands over model-based analysis.
Tier 1 (Sentinel tool output) > Tier 2 (local state) > Tier 3 (GitHub metadata) > Tier 4 (model reasoning). Every security conclusion must include raw Sentinel output verbatim. The model is the narrator, not the detector. Tier 1 always overrides Tier 4.
sentinel install-skills# detects agent platform, writes correct adapterEvery AI response is preceded by a 6-point integrity verification of the underlying engine. If the scanner code has been modified, the Oracle refuses to answer.
Engine Rule #4 — Integrity Chain Validation — runs before the AI generates a single token. The Oracle computes the SHA-256 hash of the compiled scanner code and compares it against the last trusted link in the integrity chain.
If the hashes don't match — because malware modified the scanner binary, a trojan replaced a dependency, or an unauthorized patch was applied — the chain is marked BROKEN.
Cross-check protocol: Before each AI operation, the Oracle queries three independent sources and cross-references them:
If any of the three sources reports an anomaly, the AI enters FAIL-CLOSED mode: it refuses all security operations and displays the exact discrepancy to the user. The AI cannot be tricked into operating on a compromised engine because the integrity check runs at the engine level, before any provider API call.
AI operates normally. Engine hash matches the chain. All 6 auditor checks pass. Responses are backed by verified code.
AI refuses to answer. The scanner binary has been modified since the last trusted boot. An attacker may have tampered with the detection engine itself.
AI enters degraded mode — only read-only operations allowed. A non-critical anomaly was detected (e.g., clock drift, modified config). The user is notified with exact details.
Dos niveles: CLI (LiteScanner v2.0) se ejecuta localmente. Cloud Engine añade análisis profundo.
Verificación de integridad de seis puntos ejecutada antes de cada operación privilegiada. Entornos comprometidos entran en modo degradado con transparencia total.
Cada boot verificado agrega un eslabón a una cadena inmutable en vault.db. El contador de uptime se acumula entre sesiones — si el código cambia, la cadena se rompe.
En cada boot con integridad TRUSTED, Sentinel registra un nuevo eslabón en la cadena con:
Si un malware modifica el código de Sentinel, el hash del eslabón actual no coincidirá con el código modificado, y la cadena se marca como BROKEN. El atacante no puede forjar la cadena porque cada eslabón contiene el hash criptográfico del anterior — reescribir toda la cadena requiere acceso secuencial a cada boot, algo que un ataque post-infiltración no tiene.
Code Hash: a3f8b2c1e4d7...
Links: 0 sesiones registradas
Inicio: —
sentinel integrity --uptime# muestra la cadena con uptime verificadosentinel integrity --watch# contador en tiempo real (actualiza cada segundo)Benchmark Red Team contra 100 paquetes benignos, 50 patrones CVE y 25 muestras de ataques a la cadena de suministro. Resultados reales — no simulados.
Resultados reales capturados en Node.js v22 / Windows 11. Todos los comandos se ejecutaron contra el paquete npm publicado (sentinel v4.0.0) — no contra builds locales.
Sentinel CLI usa la Business Source License (BUSSL-1.1). Podés modificar el código y usarlo para proyectos personales o internos de tu equipo, pero no está permitido usarlo con fines comerciales ni crear productos derivados comerciales a partir de él.
Después del período de conversión, la licencia pasa a Apache 2.0. Revisá el archivo LICENSE en el repo para los términos completos.
Sentinel es una herramienta de seguridad — usar una versión modificada por un tercero puede comprometer tu entorno. Solo las versiones oficiales del repositorio javier20dev25/sentinel-clipasan por el pipeline de integridad y firma.
⚠ Si un desarrollador externo publica una versión modificada con features atractivas, no la uses. Podría contener payloads maliciosos que la versión oficial detectaría, pero una versión alterada puede tener el código malicioso fuera de las reglas SAST. Siempre cloná el repo oficial y compilá vos mismo.