home-assistant/core · error · ConfigEntryNotReady

CalDAV client error

Error message

CalDAV client error

What it means

ConfigEntryNotReady raised when client.principal() raises a DAVError that is not an AuthorizationError/Timeout/ConnectionError — a generic caldav library failure such as a malformed DAV response, wrong URL path, or unsupported server reply. The message is the generic 'CalDAV client error'.

Source

Thrown at homeassistant/components/caldav/__init__.py:53

        password=entry.data[CONF_PASSWORD],
        ssl_verify_cert=entry.data[CONF_VERIFY_SSL],
        timeout=TIMEOUT,
    )
    try:
        await hass.async_add_executor_job(client.principal)
    except AuthorizationError as err:
        if err.reason == "Unauthorized":
            raise ConfigEntryAuthFailed("Credentials error from CalDAV server") from err
        # AuthorizationError can be raised if the url is incorrect or
        # on some other unexpected server response.
        _LOGGER.warning("Unexpected CalDAV server response: %s", err)
        return False
    except requests.Timeout as err:
        raise ConfigEntryNotReady("Timeout connecting to CalDAV server") from err
    except requests.ConnectionError as err:
        raise ConfigEntryNotReady("Connection error from CalDAV server") from err
    except DAVError as err:
        raise ConfigEntryNotReady("CalDAV client error") from err

    entry.runtime_data = client

    await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)

    return True


async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
    """Unload a config entry."""
    return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Point the entry at the real CalDAV principal/calendar endpoint (e.g. .../remote.php/dav for Nextcloud, .../.well-known/caldav resolved URL)
  2. Enable debug logging for the caldav integration to see the underlying DAVError reason and the failing request
  3. Update/align the caldav library version with what the integration pins (check requirements)
  4. If the server is nonstandard, test the same URL with a desktop CalDAV client to confirm it speaks CalDAV
Defensive patterns

Strategy: try-catch

Try / catch

except DAVError as err:
    raise ConfigEntryNotReady("CalDAV client error") from err

Prevention

When it happens

Trigger: The server responds but the response cannot be parsed as expected CalDAV: pointing the URL at a non-CalDAV resource (e.g. the web UI or an HTML page), a server returning an unexpected multi-status body, or caldav library version incompatibilities with the server dialect.

Common situations: Using the base Nextcloud/Radicale web URL instead of the DAV endpoint, ISP-hosted calendars exposing odd DAV dialects, or caldav library updates changing response parsing expectations.

Related errors


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