home-assistant/core · error · HomeAssistantError

CalDAV delete error: {err}

Error message

CalDAV delete error: {err}

What it means

HomeAssistantError raised in async_delete_todo_items when item.delete fails for an individual item with ConnectionError, Timeout, or DAVError. Deletes run serially (some servers do not support concurrent modifications), so earlier items may already be deleted before the failure aborts the loop.

Source

Thrown at homeassistant/components/caldav/todo.py:203

        """Delete To-do items."""
        tasks = (
            self.hass.async_add_executor_job(self._calendar.todo_by_uid, uid)
            for uid in uids
        )

        try:
            items = await asyncio.gather(*tasks)
        except NotFoundError as err:
            raise HomeAssistantError("Could not find To-do item") from err
        except (requests.ConnectionError, requests.Timeout, DAVError) as err:
            raise HomeAssistantError(f"CalDAV lookup error: {err}") from err

        # Run serially as some CalDAV servers do not support concurrent modifications
        for item in items:
            try:
                await self.hass.async_add_executor_job(item.delete)
            except (requests.ConnectionError, requests.Timeout, DAVError) as err:
                raise HomeAssistantError(f"CalDAV delete error: {err}") from err
        # refreshing async otherwise it would take too much time
        self.hass.async_create_task(self.async_update_ha_state(force_refresh=True))

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Refresh and re-issue the delete for the remaining items (some may already be gone, yielding the not-found error — delete those individually or refresh first)
  2. Verify the calendar collection allows deletes for the account in use
  3. Check server/proxy logs for why the specific DELETE failed
Defensive patterns

Strategy: try-catch

Try / catch

for item in items:  # serial by design: some servers reject concurrent writes
    try:
        await self.hass.async_add_executor_job(item.delete)
    except (requests.ConnectionError, requests.Timeout, DAVError) as err:
        raise HomeAssistantError(f"CalDAV delete error: {err}") from err

Prevention

When it happens

Trigger: A DELETE request for one VTODO fails mid-batch: server refuses/times out on that item, connection drops, or the server rejects deletion of the resource.

Common situations: Partial network failure during a batch delete, server-side locking or permissions preventing deletion of one item, servers that serialize writes slowly.

Related errors


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