Anthropic elimina el modo programático de Pro/Max — la solución node-pty + tmux
Mike Codeur
![]()
Anthropic vuelve a recortar las ventajas de los planes Pro y Max.
A partir del 15 de junio de 2026, el modo programático de Claude Code pasa al pool de facturación API. Tarifa completa por token, sin cobertura de la suscripción. Es la continuación lógica de una serie de restricciones que golpean en silencio a quienes construyen alrededor de Claude Code.
Para los desarrolladores que usan Claude Code a mano, en modo interactivo, nada cambia. Para los que automatizan, la factura crece rápido.
Lo que cambia el 15 de junio
Anthropic divide la facturación de Claude Code en dos pools distintos.
El pool de suscripción (Pro, Max 5x, Max 20x) cubre únicamente el modo interactivo: el binario claude corriendo en un terminal, con un humano frente al teclado.
El pool Agent SDK credits cubre todo lo demás: claude -p, el Agent SDK, GitHub Actions, crons, tareas programadas y cualquier pipeline que pilote Claude sin humano.
| Plan | Créditos Agent SDK ofrecidos por mes |
|---|---|
| Pro | 20 $ |
| Max 5x | 100 $ |
| Max 20x | 200 $ |
Una vez consumidos los créditos ofrecidos, la cuenta sigue subiendo al precio API completo. Sin soft cap, sin alerta, sin pausa forzada.
Quién está afectado y quién no
El cambio crea dos mundos distintos.
Usuarios interactivos: si tu uso de Claude Code se limita a abrir un terminal, lanzar claude y conversar con él para programar, nada cambia. Tu suscripción Max cubre todo como antes.
Builders y todo pipeline agéntico: si construyes alrededor de Claude Code, la cuenta pasa al pool API.
Los afectados incluyen:
- Los Agentic OS construidos sobre Claude Code (OpenClaw, AgentOS, Quivr 247)
- Las soluciones de control remoto tipo Hermes
- Todos los crons y tareas programadas que lanzan
claude -p - Los pipelines CI/CD que llaman a Claude
- Cualquier herramienta que pilote Claude sin TTY (pipe stdin, headless)
Lo más doloroso es que el cambio es silencioso. Lanzas tu script como siempre, funciona, y la factura crece en segundo plano.
El ejemplo que asusta: 1 800 $ en dos días
Un desarrollador documentó en GitHub haber recibido una factura de 1 800 $ en dos días, simplemente porque había dejado un cron claude -p corriendo cada hora. Tenía su ANTHROPIC_API_KEY exportada en su entorno, y Claude pasó silenciosamente al pool API sin ningún warning.
Multiplica por el número de crons olvidados repartidos por servidores y la cuenta total se dispara rápido.
Por qué funciona así: la detección TTY
El cambio entre interactivo y programático se hace del lado cliente, dentro del binario Claude Code, no del lado servidor de Anthropic.
Al arrancar, Claude verifica si su stdin y stdout están conectados a un terminal real (TTY).
- TTY detectado → modo interactivo → token OAuth de la suscripción
- Sin TTY → modo programático → token API
Esa detección del lado cliente es justamente lo que abre la puerta a la solución.
La solución: node-pty + tmux
Si la detección se hace del lado cliente, basta con proporcionar a Claude un terminal real desde tu código, y Claude se queda en el pool de la suscripción.
Dos bloques permiten montar esto limpiamente.
node-pty
node-pty es una librería Node oficial mantenida por Microsoft. Es la que mueve los terminales integrados de VS Code, Hyper y la mayoría de los "terminales dentro de una app".
Expone una API simple:
import * as pty from 'node-pty';
const shell = pty.spawn('claude', [], {
name: 'xterm-256color',
cols: 200,
rows: 50,
cwd: process.cwd(),
env: { ...process.env, TERM: 'xterm-256color' }
});
shell.onData((data) => process.stdout.write(data));
shell.write("Escríbeme un hello world en Rust\r");Cinco líneas útiles. Claude arranca en un pseudo-terminal real. Ve un TTY. Se queda en modo interactivo. Factura la suscripción.
tmux
tmux es un servidor de sesiones de terminal separado del proceso Node. Corre a nivel sistema, gestionado por init o systemd.
La ventaja: si tu proceso Node crashea, si el SSH se corta, si la máquina se reinicia, la sesión Claude lanzada dentro de tmux sigue viva. Te reconectas más tarde con tmux attach y te encuentras exactamente donde lo dejaste.
Es exactamente lo que hacía Claude Code con claude -p antes del 15 de junio, pero sin la factura API.
Cuándo elegir node-pty o tmux

La regla simple:
| Contexto | Elección | Por qué |
|---|---|---|
| MVP local, dev rápido | node-pty | Simple de codear, live stream directo vía onData |
| Producción, VPS, sesiones largas | tmux | Sesiones que sobreviven a crashes, reconexión desde cualquier sitio |
| Pipeline Next.js con UI | node-pty + tmux | Lo mejor de los dos mundos |
En la práctica, las soluciones serias (Quivr 247, AgentOS, OpenClaw) usan los dos en combinación.
Arquitectura completa de un agente PTY
Para una solución production-ready con UI en tiempo real, la arquitectura que encuentras en todas partes es la siguiente.
- Browser envía un POST al backend con el prompt
- API route Next.js recupera o arranca el PTY para este agente
- PTY Manager mantiene un
Map<agent_id, runtime>en memoria - Child PTY lanza
claudeen un pseudo-terminal real - Claude escribe su transcript en
~/.claude/projects/.../sid.jsonl, que se convierte en la fuente única de verdad - JSONL Tail lee este archivo en append cada 400 ms
- SSE endpoint difunde cada nueva línea a los clientes conectados
- EventSource del lado browser refresca la UI en tiempo real
El truco central: nunca usar pty.onData para alimentar el state React. Pasar por el JSONL de Claude. Eso da tres propiedades esenciales:
- Sobrevive a los HMR Next.js (el tail retoma donde se quedó)
- Varios clientes pueden conectarse al mismo tail
- Coherencia con
claude /resume, que ya usa este JSONL
Límites honestos del loophole
Hay que decir las cosas como son. Esta solución es un workaround, no una puerta oficial.
Loophole precario. Anthropic puede añadir una verificación extra en cualquier momento: verificación del proceso padre, del device, de patrones de timing. Nada garantiza que dure seis meses.
Los límites de la suscripción siguen aplicando. Sigues capado por las ventanas de 5h de Max. Cambias de pool de facturación, no de capacidad.
Sin structured output. Sin --json-schema, sin tool callbacks programáticos. Lees texto de terminal en bruto. Los pipelines que necesitan structured output tienen que parsearlo del lado cliente.
OAuth one-shot obligatorio. claude login tiene que haber corrido una vez en la máquina para que el token esté en el keychain.
Recapitulando
Anthropic no ha matado el modo programático. Solo lo ha pasado a un pool de facturación separado, a precio de token completo.
Para seguir automatizando Claude Code sin tocar ese pool, bastan dos herramientas técnicas: node-pty para el pseudo-terminal real, tmux para la persistencia. Es exactamente lo que usa en silencio cualquier solución Agentic OS seria desde hace varias semanas.
En el vídeo de hoy, detallo la arquitectura completa, el código mínimo para montarla y los límites honestos del loophole.
🎁 Descargar el PTY Toolkit — los 2 prompts listos para pegar en Claude Code (versión mínima y versión Next.js completa), el diagrama excalidraw editable y la checklist de verificación OAuth.
📩 Newsletter The Agentic Dev — cada semana, los workflows y herramientas Claude Code que uso realmente.