home-assistant/core · error · HomeAssistantError
CalDAV lookup error: {err}
Error message
CalDAV lookup error: {err} What it means
HomeAssistantError raised in async_update_todo_item when the todo_by_uid lookup fails at the transport/DAV level (requests.ConnectionError, requests.Timeout, or DAVError) rather than with NotFoundError. The message embeds the underlying exception text.
Source
Thrown at homeassistant/components/caldav/todo.py:157
partial(self._calendar.save_todo, **item_data),
)
# refreshing async otherwise it would take too much time
self.hass.async_create_task(self.async_update_ha_state(force_refresh=True))
except (requests.ConnectionError, requests.Timeout, DAVError) as err:
raise HomeAssistantError(f"CalDAV save error: {err}") from err
@override
async def async_update_todo_item(self, item: TodoItem) -> None:
"""Update a To-do item."""
uid: str = cast(str, item.uid)
try:
todo = await self.hass.async_add_executor_job(
self._calendar.todo_by_uid, uid
)
except NotFoundError as err:
raise HomeAssistantError(f"Could not find To-do item {uid}") from err
except (requests.ConnectionError, requests.Timeout, DAVError) as err:
raise HomeAssistantError(f"CalDAV lookup error: {err}") from err
vtodo = todo.icalendar_component # type: ignore[attr-defined]
vtodo["SUMMARY"] = item.summary or ""
if status := item.status:
vtodo["STATUS"] = TODO_STATUS_MAP_INV.get(status, "NEEDS-ACTION")
if due := item.due:
todo.set_due(due) # type: ignore[attr-defined]
else:
vtodo.pop("DUE", None)
if description := item.description:
vtodo["DESCRIPTION"] = description
else:
vtodo.pop("DESCRIPTION", None)
try:
await self.hass.async_add_executor_job(
partial(
todo.save,
no_create=True,
obj_type="todo",View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Verify server connectivity and latency from the HA host
- Reduce calendar size or increase server performance if REPORT queries on big VTODO collections time out
- Retry the update once the server responds to a basic request
Defensive patterns
Strategy: retry
Try / catch
except (requests.ConnectionError, requests.Timeout, DAVError) as err:
raise HomeAssistantError(f"CalDAV lookup error: {err}") from err Prevention
- Monitor server response times; REPORT queries on huge collections are the usual timeout source
- Retry the update after confirming basic connectivity
- Avoid editing to-dos during known maintenance windows on the server
When it happens
Trigger: Updating a to-do item while the CalDAV server is unreachable, slow beyond the client timeout, or returns an unparseable DAV response for the lookup REPORT query.
Common situations: Network outages during item edits, overloaded self-hosted servers, or reverse proxies timing out long REPORT queries on large calendars.
Related errors
- CalDAV delete error: {err}
- Timeout connecting to CalDAV server
- Connection error from CalDAV server
- CalDAV save error: {err}
- Could not find To-do item {uid}
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/62140de9d545311b.
Report an issue: GitHub.