Autopsia: Claude Max + Errores de facturación de OpenClaw por OAuth desactualizado y trabajos cron aislados

Una instalación autogestionada de OpenClaw con Claude Max empezó a devolver billing error — API key has run out of credits a pesar de estar muy por debajo del límite. Dos días de depuración revelaron dos causas raíz y una cadena de fallos que hace que el error parezca aleatorio.
Causa Raíz 1: Token OAuth Caducado Envenena Todo el Proveedor
El archivo auth-profiles.json tenía dos entradas: un perfil OAuth válido anthropic:claude-cli y un perfil anthropic:manual con un token sk-ant-oat01-.... Cuando el token manual caducó, OpenClaw no solo falló ese perfil, sino que lo clasificó como un fallo de facturación a nivel de proveedor y bloqueó todo el proveedor anthropic, saltándose todos los modelos, incluido el perfil OAuth saludable. Los registros mostraban:
reason: "billing" errorPreview: "Provider anthropic has billing issue (skipping all models)" chain_exhausted
El perfil OAuth saludable con un token de actualización válido nunca se intentó.
Solución: Eliminar por completo anthropic:manual de auth-profiles.json y openclaw.json. Mantener solo anthropic:claude-cli.
Causa Raíz 2: Trabajos Cron Aislados golpean un Bucket de Facturación Separado
OpenClaw tiene dos rutas de ejecución:
- Sesiones principales — ejecutan el binario
/usr/bin/claude, facturado a la suscripción Max/Pro ✅ - Ejecuciones aisladas/embebidas — HTTP directo a la API de Anthropic, facturado al bucket de Uso Extra ❌
Los trabajos cron con sessionTarget: isolated inician un agente embebido independiente que llama directamente a la API de Anthropic vía HTTP — sin los encabezados de Claude Code que envía la CLI. Anthropic lo dirige al bucket de Uso Extra, una cuota completamente separada. Con Uso Extra desactivado, cada ejecución cron aislada devuelve un 400. OpenClaw empeora la situación: un error de facturación establece disabledUntil aproximadamente 24 horas hacia adelante en auth-state.json, bloqueando todas las solicitudes — incluyendo el chat normal — hasta que termine el enfriamiento. El bloqueo sobrevive a reinicios de la puerta de enlace.
La Cadena Completa de Fallos
- Reinicio de la puerta de enlace → trabajos cron perdidos se encolan para ponerse al día
- El agente aislado se ejecuta vía el ejecutor embebido → llamada HTTP directa a la API de Anthropic (sin encabezados de CLI)
- Bucket de Uso Extra → error 400
- OpenClaw bloquea el perfil de autenticación durante ~24h → todas las solicitudes bloqueadas, incluido el chat normal
Soluciones
- Limpiar el bloqueo de facturación inmediatamente:
python3 -c " import json with open('/home/USER/.openclaw/agents/main/agent/auth-state.json') as f: d = json.load(f) if 'usageStats' in d: for profile in d['usageStats']: d['usageStats'][profile].pop('disabledUntil', None) d['usageStats'][profile].pop('failureCounts', None) d['usageStats'][profile].pop('errorCount', None) d['usageStats'][profile].pop('disabledReason', None) d['usageStats'][profile].pop('lastFailureAt', None) with open('/home/USER/.openclaw/agents/main/agent/auth-state.json', 'w') as f: json.dump(d, f, indent=2) print('Limpiado.') " openclaw gateway restart - Mover todos los trabajos cron de
isolatedamain:python3 -c " import json with open('/home/USER/.openclaw/cron/jobs.json') as f: d = json.load(f) jobs = d if isinstance(d, list) else d.get('jobs', []) for j in jobs: if j.get('sessionTarget') == 'isolated': print(f'Corrigiendo: {j["name"]}') j['sessionTarget'] = 'main' with open('/home/USER/.openclaw/cron/jobs.json', 'w') as f: json.dump(d, f, indent=2) print('Hecho.') "
Para quién es: Cualquiera que autogestione OpenClaw con Claude Max o Pro y vea errores de facturación aleatorios a pesar de estar por debajo del límite.
📖 Leer la fuente original: r/openclaw
👀 Ver también

Guía de Automatización de Búsqueda de Empleo de OpenClaw — Preferencias, Cron Jobs y Filtrado
Una guía práctica para usar OpenClaw y automatizar la búsqueda de empleo: define un perfil de preferencias claro, elige una herramienta para obtener ofertas (automatización del navegador, scraping o API estructurada) y valida el flujo antes de configurar un cron job.

Publicación de Reddit: Los desarrolladores necesitan mejores prácticas de codificación con IA, no solo mejores herramientas
Una publicación de Reddit argumenta que la insatisfacción de los desarrolladores con las herramientas de codificación con IA proviene de malas prácticas de 'prompting', específicamente el 'prompting crudo' sin contexto ni estructura. El autor recomienda usar andamiajes como CLAUDE.md y flujos de trabajo estructurados para obtener código listo para producción de Claude.

Flujo de Trabajo Práctico con Claude Code para Equipos de Desarrollo
Un usuario de Reddit comparte su presentación interna sobre las mejores prácticas de Claude Code, incluyendo selección de modelos, flujos de trabajo estructurados y técnicas específicas de prompts para mejorar la calidad de la salida.

Los archivos CLAUDE.md suelen estar organizados para desarrolladores, no para modelos de IA – He aquí por qué es importante
Los archivos CLAUDE.md suelen colocar las Reglas Estrictas en la línea 47, después de los antecedentes y la pila tecnológica. Cuando el modelo lee las restricciones, ya ha construido suposiciones contradictorias. Una mejor estructura pone las reglas estrictas primero.