list_users/stats llamaban al Hub (users-with-info) con el Bearer de la app, que con el patrón SIWEB es la sesión local (HS256) → el Hub la rechaza (401) → 0 usuarios. Nuevo core.hub_token.get_hub_access_token: toma el token KC de la sesión (valkey vía crm_sid) y lo refresca si está por expirar. list_users y stats lo usan para el Hub. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>