{"record":{"id":"cc5ecb2330171aa8","repo":"home-assistant/core","slug":"setup-authentication-exception","errorCode":null,"errorMessage":"setup_authentication_exception","messagePattern":"setup_authentication_exception","errorType":"exception","errorClass":"ConfigEntryAuthFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bring/coordinator.py","lineNumber":102,"sourceCode":"\n    @override\n    async def _async_update_data(self) -> dict[str, BringData]:\n        \"\"\"Fetch the latest data from bring.\"\"\"\n\n        try:\n            self.lists = (await self.bring.load_lists()).lists\n        except BringRequestException as e:\n            raise UpdateFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"setup_request_exception\",\n            ) from e\n        except BringParseException as e:\n            raise UpdateFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"setup_parse_exception\",\n            ) from e\n        except BringAuthException as e:\n            raise ConfigEntryAuthFailed(\n                translation_domain=DOMAIN,\n                translation_key=\"setup_authentication_exception\",\n                translation_placeholders={CONF_EMAIL: self.bring.mail},\n            ) from e\n\n        if self.previous_lists - (\n            current_lists := {lst.listUuid for lst in self.lists}\n        ):\n            self._purge_deleted_lists()\n        new_lists = current_lists - self.previous_lists\n        self.previous_lists = current_lists\n\n        list_dict: dict[str, BringData] = {}\n        for lst in self.lists:\n            if (\n                (ctx := set(self.async_contexts()))\n                and lst.listUuid not in ctx\n                and lst.listUuid not in new_lists","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bring/coordinator.py#L84-L120","documentation":"ConfigEntryAuthFailed with translation_key setup_authentication_exception (bring/coordinator.py:102), rendered as 'Authentication failed for {email}, check your email and password'. Raised when load_lists() raises BringAuthException during a coordinator update; it starts the reauth flow for the config entry using the account email (self.bring.mail) as the placeholder.","triggerScenarios":"The Bring! session token expires or is revoked (password changed, account logged out everywhere, token invalidated server-side) so load_lists() returns 401/403 → BringAuthException → ConfigEntryAuthFailed, which triggers HA's re-authentication flow.","commonSituations":"User changed their Bring! password in the app; Bring! invalidated old sessions after a security change; multiple HA instances or reinstalls invalidating each other's tokens; email typo fixed later on the account side.","solutions":["Open the HA notification / config entry and complete the reauth flow with the current email and password.","If the password was changed in the Bring! app, use the new one in the reauth prompt.","Confirm the account is not locked and can log in inside the Bring! mobile app.","After successful reauth, the coordinator resumes polling automatically."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Complete HA's reauth flow as soon as the notification appears.","Change Bring! credentials in HA immediately after changing them in the app.","Avoid mass device logouts that invalidate the integration's session token."],"tags":["bring","home-assistant","authentication","reauth","credentials"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}