home-assistant/core · error · ConfigEntryNotReady

ConfigEntryNotReady

Error message

ConfigEntryNotReady

What it means

ConfigEntryNotReady is raised by the bond integration when hub.setup() fails with aiohttp ClientResponseError carrying any HTTP status other than 401 (401 is handled separately by logging an invalid-token error and returning False). The entry enters HA's retry-with-backoff state; the underlying HTTP status is preserved as __cause__.

Source

Thrown at homeassistant/components/bond/__init__.py:70

    host = entry.data[CONF_HOST]
    token = entry.data[CONF_ACCESS_TOKEN]
    config_entry_id = entry.entry_id

    bond = Bond(
        host=host,
        token=token,
        timeout=ClientTimeout(total=_API_TIMEOUT),
        session=async_get_clientsession(hass),
        requestor_uuid=RequestorUUID.HOME_ASSISTANT,
    )
    hub = BondHub(bond, host)
    try:
        await hub.setup()
    except ClientResponseError as ex:
        if ex.status == HTTPStatus.UNAUTHORIZED:
            _LOGGER.error("Bond token no longer valid: %s", ex)
            return False
        raise ConfigEntryNotReady from ex
    except (ClientError, TimeoutError, OSError) as error:
        raise ConfigEntryNotReady from error

    bpup_subs = BPUPSubscriptions()
    stop_bpup = await start_bpup(host, bpup_subs)

    @callback
    def _async_stop_event(*_: Any) -> None:
        stop_bpup()

    entry.async_on_unload(_async_stop_event)
    entry.async_on_unload(
        hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP, _async_stop_event)
    )
    entry.runtime_data = BondData(hub, bpup_subs)

    if not entry.unique_id:
        hass.config_entries.async_update_entry(entry, unique_id=hub.bond_id)

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Check the Bond Home app / hub LED to confirm the hub is healthy and firmware is current; update hub firmware.
  2. Inspect the chained ClientResponseError status in HA debug logs to identify 403/404/5xx and act accordingly.
  3. For 403, re-add the entry to regenerate the token (401-like handling does not cover 403).
  4. Reload the entry after hub/cloud recovery; ConfigEntryNotReady retries are automatic with backoff.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    await hub.setup()
except ClientResponseError as ex:
    if ex.status == HTTPStatus.UNAUTHORIZED:
        _LOGGER.error("Bond token no longer valid: %s", ex)
        return False
    raise ConfigEntryNotReady from ex

Prevention

When it happens

Trigger: hub.setup() calls the Bond Cloud/local Bond hub REST API (e.g. /v2/sys/version) and gets a 4xx/5xx other than 401: 403 (token valid but forbidden), 404 (wrong endpoint for hub firmware), 500/503 (hub overload or cloud outage).

Common situations: Bond hub firmware too old/new for the API version used, Bond Cloud transient outage, hub briefly returning 5xx while rebooting, token with insufficient scope producing 403.

Related errors


AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14). Data as JSON: /api/errors/10aa8371e58ba3b6. Report an issue: GitHub.