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

Solución para el error de la extensión Claude VS Code: 'command claude-vscode.editor.openLast not found'
La extensión Claude VS Code versión 2.1.51 contiene un error crítico que provoca el mensaje 'command claude-vscode.editor.openLast not found'. La solución temporal es volver a la versión 2.1.49.

Resolviendo el error "write_file no encontrado" en Gemini CLI para OpenClaw: Se requieren dos correcciones
Los agentes de OpenClaw que usan google-gemini-cli no pueden escribir archivos (write_file / default_api_write_file ausentes) debido a un tools.profile incorrecto y la falta de la bandera --approval-mode auto_edit en el subproceso. Solución: establecer el perfil en full e inyectar la bandera mediante la configuración cliBackends.

Resultados de Pruebas del Plugin de Memoria OpenClaw y Pila Recomendada
Un usuario de Reddit probó todos los complementos de memoria de OpenClaw y descubrió que la configuración predeterminada de markdown causa inflación de tokens y compresión de instrucciones. La configuración recomendada combina Obsidian para notas legibles por humanos, QMD para búsquedas sin tokens y SQLite para datos estructurados.

OpenClaw 4.1 con Gemma 4 Stack: Arquitectura Híbrida y Correcciones de Configuración
Una publicación de Reddit detalla una pila de agentes locales optimizada que combina OpenClaw 4.1 con el modelo Gemma 4 de Google, con una arquitectura híbrida, correcciones de configuración específicas para la llamada a herramientas de Ollama y ajustes en la ventana de contexto.