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

✍️ OpenClawRadar📅 Publicado: 12 de mayo de 2026🔗 Source
Autopsia: Claude Max + Errores de facturación de OpenClaw por OAuth desactualizado y trabajos cron aislados
Ad

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.

Ad

La Cadena Completa de Fallos

  1. Reinicio de la puerta de enlace → trabajos cron perdidos se encolan para ponerse al día
  2. El agente aislado se ejecuta vía el ejecutor embebido → llamada HTTP directa a la API de Anthropic (sin encabezados de CLI)
  3. Bucket de Uso Extra → error 400
  4. OpenClaw bloquea el perfil de autenticación durante ~24h → todas las solicitudes bloqueadas, incluido el chat normal

Soluciones

  1. 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
  2. Mover todos los trabajos cron de isolated a main:
    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

Ad

👀 Ver también