overreach

Herramienta MCP que audita un diff de código

Documentación

Overreach

Tu IA escribió 2,000 líneas. Tienes 10 minutos para revisarlas.

npm version license

Overreach te dice por dónde empezar. Pediste un formulario de inicio de sesión — te muestra la clave de Stripe, el endpoint de pago y el trabajo cron que tu agente de IA añadió sin preguntar. Determinista, respaldado por evidencia, sin opiniones de IA.

Verlo

$ npx -y overreach demo

  Overreach — AI PR Review
  ─────────────────────────────────────────────────
  You asked: "add a login form to the settings page"
  5 files changed · 4 in scope · 1 outside scope

  Findings

  ✗ New environment variable: STRIPE_SECRET
    .env.example
  ✗ New API endpoint: /api/checkout
    src/app/api/checkout/route.ts
  ✗ Scheduled job added
    cron.config.ts
  ⚠ File outside scope: cron.config.ts
    cron.config.ts
  ⚠ Added dependency: stripe
    package.json

  Heads Up

  → New API route added but no test file updated
  → Dependencies changed but lockfile not updated
  → 3 source files changed but no tests updated

  ─────────────────────────────────────────────────
  5 findings · review carefully · deterministic

Pediste un formulario de inicio de sesión. Overreach encontró un sistema de pagos. Revisa esos archivos antes de fusionar.

Instalación

# Just run it — zero setup
cd your-project
npx -y overreach

Eso es todo. Detecta automáticamente tus cambios, pregunta qué le dijiste a la IA que hiciera y muestra la revisión. Sin archivos de configuración, sin banderas que memorizar.

O instálalo permanentemente:

npm install -g overreach

# Pipe a diff with an explicit prompt
git diff | overreach --prompt "add user authentication"

# Install as a pre-commit hook
overreach init

¿Sin clave de API? No hay problema. Sin una clave, Overreach analiza tu prompt con expresiones regulares sin conexión. Instantáneo, gratuito y totalmente determinista.

Compatible con

  • Claude Code
  • Cursor
  • Codex
  • GitHub Copilot
  • Windsurf
  • Aider

Cualquier herramienta que escriba código a partir de un prompt. Overreach revisa el resultado, no la herramienta.

Qué detecta

Cambios inesperados (cosas que la IA hizo que no pediste)

VerificaciónEjemplo
DependenciasAñadió stripe cuando pediste un formulario de inicio de sesión
Variables de entornoSTRIPE_SECRET apareció en .env
Endpoints de APIRuta /api/checkout que nunca solicitaste
Trabajos programadosTrabajos cron o tareas en segundo plano añadidos silenciosamente
Listeners de ejecuciónServidores, manejadores de WebSocket, hooks de process.on
Archivos fuera de alcanceArchivos modificados que tu prompt no mencionó
Expansión de funcionesNuevas funciones/clases más allá de lo solicitado

Cada hallazgo es determinista — derivado de tu prompt y del diff mediante aritmética de conjuntos. Sin opiniones de IA. Solo: "pediste X, el diff también contiene Y, y Y no estaba en X."

Avisos (cosas que probablemente necesitas verificar)

Overreach también escanea problemas prácticos entre archivos que los desarrolladores pasan por alto durante la revisión:

AdvertenciaQué detecta
Esquema sin migraciónCambió schema.prisma pero no añadió una migración
Desajuste de variables de entornoEl código usa process.env.FOO pero .env no lo define
Ruta sin pruebasNueva ruta de API añadida pero ningún archivo de prueba actualizado
Sin pruebas en absoluto3+ archivos fuente cambiados, cero archivos de prueba tocados
Dependencias sin lockfilepackage.json cambió pero no hay package-lock.json
Autenticación/middleware cambiadoArchivos sensibles a seguridad modificados
Secretos codificadosClaves de API o tokens escritos directamente en el código fuente
Archivo grande200+ líneas añadidas a un archivo — podría necesitar dividirse
Archivos nuevos muertosArchivo nuevo creado pero nunca importado en ningún lugar
Deuda técnica añadidaTODO/FIXME/HACK en 2+ archivos
API sin documentaciónRutas de API cambiadas pero documentación no actualizada
Estilos huérfanosCSS cambiado pero ningún componente actualizado
Dispersión de configuración3+ archivos de configuración cambiados a la vez
Solo infraestructuraDocker/CI cambiado pero sin código fuente

Estos no son expansión de alcance — son las cosas que olvidas a las 2am y descubres en producción.

Por qué es determinista

La mayoría de los revisores de código con IA usan otra IA para juzgar tu código. Eso significa opiniones, alucinaciones y resultados que cambian entre ejecuciones.

Overreach no hace eso.

Ejecuta un pipeline de 3 etapas:

  1. Extraer alcance — Una llamada LLM económica lee tu prompt y extrae lo que autorizaste (archivos, dependencias, variables de entorno, endpoints). O omite el LLM por completo con el modo sin clave.

  2. Analizar el diff — Extracción basada en expresiones regulares. Sin LLM. Encuentra cada archivo cambiado, dependencia añadida, variable de entorno establecida, endpoint creado. Se ejecuta en milisegundos.

  3. Comparar — actual − authorized = findings. Aritmética pura de conjuntos. Todo en el diff que no estaba en tu prompt es un hallazgo.

Las etapas 2 y 3 son funciones puras — misma entrada, misma salida, cada vez. Sin inferencia, sin deriva de modelo.

Puerta de CI

Usa Overreach como una GitHub Action para bloquear la expansión de alcance de la IA en cada PR:

# .github/workflows/overreach.yml
- uses: Naveja00/Overreach@v1

Código de salida 1 cuando se encuentran cambios inesperados — el agente de IA no puede omitir esta verificación.

Servidor MCP (para agentes de IA)

Los agentes de IA pueden usar Overreach para verificar su propio trabajo antes de confirmar:

# Claude Code
claude mcp add overreach -- npx -y overreach --serve

# Claude Desktop / Cursor — add to MCP config:
{ "mcpServers": { "overreach": { "command": "npx", "args": ["-y", "overreach", "--serve"] } } }

Detalles internos

Clave de API (opcional)

Overreach detecta automáticamente tu proveedor de IA:

ProveedorVariable de entorno
AnthropicANTHROPIC_API_KEY
OpenAI / compatibleOPENAI_API_KEY
Ollama (local)Sin clave necesaria

Banderas de CLI

overreach                          # Interactive mode (recommended)
overreach demo                     # Zero-key demo with sample diff
overreach init                     # Install as pre-commit hook

git diff | overreach --prompt "…"  # Pipe a diff with explicit prompt
overreach --diff file.diff --prompt "…"   # Read diff from file
overreach --scope scope.json --prompt "…" # Skip LLM, use pre-extracted scope
overreach --json                   # Machine-readable JSON output
overreach --serve                  # Start as MCP server

Salida JSON

Añade --json para salida estructurada (CI, tuberías, integraciones):

{
  "scope": { "files_allowed": [], "features_allowed": [] },
  "actual": { "files_changed": [], "symbols_added": [] },
  "findings": [
    {
      "kind": "scope.env",
      "detail": "New environment variable STRIPE_SECRET not in authorized scope",
      "file": ".env.example",
      "severity": "high",
      "evidence": "STRIPE_SECRET"
    }
  ],
  "scope_creep_score": "HIGH",
  "blast_radius": {
    "warnings": [
      {
        "pattern": "route-no-test",
        "message": "New API route added but no test file updated",
        "files": ["src/app/api/checkout/route.ts"],
        "suggestion": "Add tests for the new endpoint"
      }
    ]
  }
}

Tipos de hallazgos

TipoSeveridadQué lo desencadenó
scope.envALTAVariable de entorno no mencionada en el prompt
scope.endpointALTARuta de API añadida sin autorización
scope.cronALTATrabajo programado añadido
scope.listenerALTAListener de ejecución (servidor, WebSocket, process.on)
scope.depMEDIADependencia de paquete añadida
scope.fileMEDIAArchivo cambiado fuera del alcance del prompt
scope.featureBAJANuevo símbolo que no coincide con ninguna función autorizada

Telemetría

Overreach envía pings de uso anónimos: solo conteos y enumeraciones (score, conteo de findings, sistema operativo, versión) — nunca código, prompts, rutas de archivos o contenido del diff. Se imprime un aviso único en tu primera revisión. Exclúyete en cualquier momento:

export OVERREACH_TELEMETRY=0   # or DO_NOT_TRACK=1

Pruebas

npm test    # 241 deterministic assertions, zero API calls

Licencia

MIT — gratuito y de código abierto.

Enlaces