{"record":{"id":"4eec425ea360b6b8","repo":"home-assistant/core","slug":"configentryauthfailed-4eec42","errorCode":null,"errorMessage":"ConfigEntryAuthFailed","messagePattern":"ConfigEntryAuthFailed","errorType":"exception","errorClass":"ConfigEntryAuthFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/brunt/coordinator.py","lineNumber":81,"sourceCode":"    @override\n    async def _async_update_data(self) -> dict[str | None, Thing]:\n        \"\"\"Fetch data from the Brunt endpoint for all Things.\n\n        Error 403 is the API response for any kind of\n        authentication error (failed password or email)\n        Error 401 is the API response for things that are not\n        part of the account, could happen when a device is\n        deleted from the account.\n        \"\"\"\n        try:\n            async with timeout(10):\n                things = await self.bapi.async_get_things(force=True)\n                return {thing.serial: thing for thing in things}\n        except ServerDisconnectedError as err:\n            raise UpdateFailed(f\"Error communicating with API: {err}\") from err\n        except ClientResponseError as err:\n            if err.status == 403:\n                raise ConfigEntryAuthFailed from err\n            if err.status == 401:\n                _LOGGER.warning(\"Device not found, will reload Brunt integration\")\n                await self.hass.config_entries.async_reload(self.config_entry.entry_id)\n            raise UpdateFailed from err\n","sourceCodeStart":63,"sourceCodeEnd":86,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/brunt/coordinator.py#L63-L86","documentation":"Error \"ConfigEntryAuthFailed\" thrown in home-assistant/core.","triggerScenarios":"Thrown at homeassistant/components/brunt/coordinator.py:81 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the Brunt account username and password are still valid and reconfigure the integration with correct credentials.","Log in to the Brunt app to confirm the account is not locked or the password changed.","Re-authenticate via the integration's reauth flow when prompted."],"exampleFix":"The Brunt API returned HTTP 403, meaning the stored credentials are rejected. Reauthenticate with a valid Brunt account username and password via the config entry's reauth flow.","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}