pop-pay
Evita que los agentes de IA filtren tu información de pago o realicen compras alucinadas. Sin SaaS, sin inicio de sesión, sin complicaciones, completamente local.
Documentación
Point One Percent — pop-pay
solo se necesita 0.1% de alucinación para vaciar 100% de tu billetera.
La capa de seguridad en tiempo de ejecución para el comercio de agentes de IA. CLI integrable + servidor MCP. Las credenciales de tarjeta se inyectan directamente en el DOM del navegador mediante CDP — nunca entran en la ventana de contexto del agente. Un prompt alucinado no puede vaciar una billetera que no puede ver.
📄 Conjunto de datos de investigación y reproducción — este repositorio aloja el conjunto de datos abierto y el entorno de reproducción para "La ilusión de los rankings de atacante único". investigación: ir a Conjunto de datos de investigación y reproducción.
Instalación
Elige tu método preferido:
Homebrew (macOS)
brew install 100xpercent/tap/pop-pay
curl (Linux / macOS) — se inicia mediante npm; requiere Node.js 18+
curl -fsSL https://raw.githubusercontent.com/100xPercent/pop-pay/main/install.sh | sh
npm (global)
npm install -g pop-pay
npx (sin instalación — ejecuciones puntuales)
npx -y pop-pay <command>
Todas las rutas de instalación exponen los mismos binarios: pop-pay, pop-launch, pop-init-vault, pop-unlock.
También disponible como
@100xpercent/mcp-server-pop-pay— paquete idéntico bajo la convención MCP@scope/mcp-server-<name>. Sigue la misma versión en cada lanzamiento.
¿Usas Python? Consulta pop-pay-python —
pip install pop-pay. Mismo modelo de seguridad, mismo formato de bóveda, ciclo de lanzamiento independiente — seguro cambiar entre runtimes.
Inicio rápido (CLI)
1. Inicializa la bóveda de credenciales cifrada
pop-pay init-vault
Esto cifra tus credenciales de tarjeta en ~/.config/pop-pay/vault.enc (AES-256-GCM). Para mayor protección (bloquea agentes con acceso a shell):
pop-pay init-vault --passphrase # one-time setup
pop-pay unlock # run once per session
2. Lanza Chrome con depuración remota CDP
pop-pay launch
Esto abre una instancia de Chromium en http://localhost:9222 en la que pop-pay inyecta credenciales. Tu agente (mediante MCP, automatización de navegador o x402) luego controla el flujo de pago — los datos de la tarjeta nunca salen del proceso del navegador.
3. Conéctalo a tu agente
El CLI lanza la infraestructura; las llamadas reales a herramientas de pago provienen de tu agente. Dos rutas compatibles:
- Servidor MCP — añade pop-pay a cualquier cliente compatible con MCP (Claude Code, Cursor, Windsurf, OpenClaw). Ver Servidor MCP abajo.
- HTTP x402 — paga llamadas API mediante el protocolo de pago x402.
Referencia completa del CLI: pop-pay --help.
Servidor MCP (opcional)
Añadir a tu cliente MCP
Configuración estándar para cualquier cliente compatible con MCP:
{
"mcpServers": {
"pop-pay": {
"command": "npx",
"args": ["-y", "pop-pay", "launch-mcp"],
"env": {
"POP_CDP_URL": "http://localhost:9222"
}
}
}
}
Claude Code
Claude Code usa su propio CLI — la configuración JSON anterior no es necesaria.
claude mcp add --scope user pop-pay -- npx -y pop-pay launch-mcp
--scope user lo hace disponible en todos los proyectos. Para eliminarlo: claude mcp remove pop-pay
Cursor / Windsurf / VS Code
Añade la configuración JSON anterior a:
- Cursor:
~/.cursor/mcp.json - Windsurf:
~/.codeium/windsurf/mcp_config.json - VS Code (Copilot):
.vscode/mcp.jsonen la raíz del proyecto
OpenClaw / NemoClaw
OpenClaw tiene su propio CLI — la configuración JSON anterior no es necesaria.
openclaw mcp add pop-pay -- npx -y pop-pay launch-mcp
O añádelo a ~/.openclaw/mcp_servers.json usando la configuración JSON anterior.
Para plantillas de System Prompt y configuración del sandbox de NemoClaw, ver Guía de integración §4.
Docker
docker-compose up -d
Ejecuta el servidor MCP + Chromium sin interfaz con CDP. Monta tu bóveda cifrada desde el host.
Herramientas MCP
| Herramienta | Descripción |
|---|---|
request_virtual_card | Emite una tarjeta virtual e inyecta credenciales en la página de pago mediante CDP. Escanea automáticamente la página en busca de inyecciones de prompt ocultas. |
request_purchaser_info | Autocompleta información de facturación/contacto (nombre, dirección, correo, teléfono). Escanea automáticamente la página en busca de inyecciones de prompt ocultas. |
request_x402_payment | Paga llamadas API mediante el protocolo de pago HTTP x402. |
Consejo para usuarios de Claude Code: Añade lo siguiente a
CLAUDE.mdde tu proyecto para ayudar al agente a saber cuándo llamar a pop-pay: "Cuando encuentres un formulario de pago o una página de pago, usa la herramientarequest_virtual_card. Para formularios de facturación/contacto, usarequest_purchaser_infoprimero."
Configuración
Variables principales en ~/.config/pop-pay/.env. Ver ENV_REFERENCE.md para la lista completa.
| Variable | Predeterminado | Descripción |
|---|---|---|
POP_ALLOWED_CATEGORIES | ["aws","cloudflare"] | Categorías de proveedor aprobadas — ver Libro de recetas de categorías |
POP_MAX_PER_TX | 100.0 | Máximo USD por transacción |
POP_MAX_DAILY | 500.0 | Máximo USD por día |
POP_BLOCK_LOOPS | true | Bloquear bucles de alucinación/reintento |
POP_AUTO_INJECT | true | Habilitar inyección de tarjeta CDP |
POP_GUARDRAIL_ENGINE | keyword | keyword (costo cero) o llm (semántico) |
Modo de protección
keyword (predeterminado) | llm | |
|---|---|---|
| Mecanismo | Coincidencia de palabras clave en la cadena de razonamiento | Análisis semántico mediante LLM |
| Costo | Cero — sin llamadas API | Una llamada LLM por solicitud |
| Mejor para | Desarrollo, flujos de trabajo de bajo riesgo | Producción, transacciones de alto valor |
Para habilitar el modo LLM, ver Guía de integración §1.
Proveedores
| Proveedor | Descripción |
|---|---|
| BYOC (predeterminado) | Trae tu propia tarjeta — credenciales de bóveda cifrada, inyección CDP local. |
| Stripe Issuing | Tarjetas virtuales reales mediante la API de Stripe. Requiere POP_STRIPE_KEY. |
| Lithic | Adaptador multi-emisor (Stripe Issuing / Lithic). |
| Mock | Modo de prueba con números de tarjeta generados para desarrollo. |
Prioridad: Stripe Issuing → BYOC Local → Mock.
Seguridad
| Capa | Defensa |
|---|---|
| Aislamiento de contexto | Las credenciales de tarjeta nunca entran en la ventana de contexto del agente ni en los registros |
| Bóveda cifrada | AES-256-GCM con sal dividida XOR y derivación de clave scrypt nativa (Rust) |
| Protección TOCTOU | Dominio verificado en el momento de la inyección CDP — bloquea ataques de redirección |
| Redacción de representación | Enmascaramiento automático (****-4242) en todas las respuestas MCP, registros y tracebacks |
Ver THREAT_MODEL.md para el análisis STRIDE completo y COMPLIANCE_FAQ.md para detalles empresariales.
Arquitectura
- TypeScript — servidor MCP, motor de inyección CDP, protecciones, CLI
- Rust (napi-rs) — capa de seguridad nativa: almacenamiento de sal dividida XOR, derivación de clave scrypt
- Node.js crypto — cifrado de bóveda AES-256-GCM (enlace OpenSSL)
- Chrome DevTools Protocol — inyección directa en el DOM mediante WebSocket sin procesar
Documentación
- Modelo de amenazas — análisis STRIDE, 5 primitivas de seguridad, 10 escenarios de ataque
- Benchmark de protecciones — evaluación entre modelos (Anthropic / OpenAI / Gemini) en 585 payloads, 11 categorías de ataque
- Preguntas frecuentes de cumplimiento — detalles de PCI DSS, SOC 2, GDPR
- Referencia de entorno — todas las variables de entorno POP_*
- Guía de integración — configuración para Claude Code, SDK de Node.js y agentes de navegador
- Libro de recetas de categorías — patrones y ejemplos de POP_ALLOWED_CATEGORIES
Conjunto de datos de investigación y reproducción
Este repositorio aloja el conjunto de datos de código abierto y el entorno para la metodología de estabilidad de atacante entre proveedores descrita en el artículo de investigación correspondiente. Artefactos de reproducción para revisores/investigadores:
- Corpus (585 payloads de ataque, 11 categorías):
tests/redteam/corpus/attacks.json— conjunto completo de payloads con etiquetas de categoríaGENERATION.md— protocolo de generación del corpusschema.json— esquema de payloads
- JSONLs de ejecución (26,325 filas, 9 modelos × 585 payloads × N=5):
tests/redteam/runs/- Ejecuciones PRIMARY whitebox-sin-retroalimentación:
runs/adaptive/2026-04-28T19-50-* - Ejecuciones de panel estático:
runs/static/ - Ablación de prompts (v3 / estricto / paranoico):
runs/ablation/
- Ejecuciones PRIMARY whitebox-sin-retroalimentación:
- Hashes de manifiesto:
tests/redteam/runs/MANIFEST.sha256— integridad a nivel de byte para todos los artefactos - Metadatos Croissant 1.0 (campos Core + RAI):
paper-artifacts/croissant.json - Scripts de reproducción (regenerar tablas/figuras del artículo desde JSONL):
python3 paper-artifacts/gen-tables.py --table all— Tab.~bypassk / ablación de amenazas / entre proveedorespython3 paper-artifacts/gen-taxonomy-map.py— Fig.~taxonomy-map
- Licencia: corpus CC BY-SA 4.0, entorno MIT.
Para el esquema del conjunto de datos, metodología estadística (CI bootstrap, Holm-Bonferroni, McNemar), instrucciones completas de recolección desde cero, diccionario de datos de filas JSONL y política de divulgación responsable, ver docs/PAPER_REPRODUCTION.md.
Licencia
MIT