home-assistant/core · error · HomeAssistantError
todo_delete_item_failed
Error message
todo_delete_item_failed
What it means
Raised by async_delete_todo_items when the batch_update_list REMOVE operation for the selected uids fails with BringRequestException. It reports the count of items that failed to remove. Each uid is sent as both itemId and uuid with operation REMOVE.
Source
Thrown at homeassistant/components/bring/todo.py:234
@override
async def async_delete_todo_items(self, uids: list[str]) -> None:
"""Delete an item from the To-do list."""
try:
await self.coordinator.bring.batch_update_list(
self._list_uuid,
[
BringItem(
itemId=uid,
spec="",
uuid=uid,
)
for uid in uids
],
BringItemOperation.REMOVE,
)
except BringRequestException as e:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="todo_delete_item_failed",
translation_placeholders={"count": str(len(uids))},
) from e
await self.coordinator.async_refresh()
async def async_send_message(
self,
message: BringNotificationType,
item: str | None = None,
) -> None:
"""Send a push notification to members of a shared bring list."""
try:
await self.coordinator.bring.notify(self._list_uuid, message, item or None)
except BringRequestException as e:
raise HomeAssistantError(View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Refresh the list and retry deletion with the current item selection.
- Reload the Bring integration to resynchronize item uids with Bring state.
- Re-authenticate if all writes fail.
- Reduce concurrency: avoid deleting from two clients at the same time.
Defensive patterns
Strategy: retry
Validate before calling
def filter_stale_uids(coordinator, list_uuid, uids: list[str]) -> list[str]:
"""Keep only uids still present in Bring state to avoid batch rejection."""
live = {i.get("uuid") for i in coordinator.data.get(list_uuid, {}).get("items", [])}
return [u for u in uids if u in live] Try / catch
try:
await todo_entity.async_delete_todo_items(uids)
except HomeAssistantError as err:
if err.translation_key == "todo_delete_item_failed":
await coordinator.async_refresh()
await todo_entity.async_delete_todo_items(uids) # retry with resynced ids
else:
raise Prevention
- Do not clear the same list from the phone app and HA at the same time.
- Filter deletion lists against current coordinator data to drop already-removed uids.
- Batch deletes in moderate sizes so partial failures are easy to re-drive.
When it happens
Trigger: Deleting one or many To-do items while the Bring batch endpoint fails: stale uids (items already removed elsewhere), session expiry, network timeout.
Common situations: Bulk-clearing a list that was simultaneously cleared on a phone, expired auth, Bring cloud instability, deleting items whose uuid mapping changed after list re-creation.
Related errors
- todo_save_item_failed
- todo_rename_item_failed
- setup_request_exception
- reaction_request_failed
- todo_update_item_failed
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/2d0aa3326318365d.
Report an issue: GitHub.