home-assistant/core · error · HomeAssistantError
todo_save_item_failed
Error message
todo_save_item_failed
What it means
Raised by the Bring To-do entity's async_create_todo_item when bring-api's save_item() raises BringRequestException, meaning the HTTP request to create the list item failed. The item is a newly generated UUID-backed entry with summary/description. HA surfaces it as a HomeAssistantError with translation key todo_save_item_failed and the item's summary as placeholder.
Source
Thrown at homeassistant/components/bring/todo.py:121
]
@property
def bring_list(self) -> BringData:
"""Return the bring list."""
return self.coordinator.data[self._list_uuid]
@override
async def async_create_todo_item(self, item: TodoItem) -> None:
"""Add an item to the To-do list."""
try:
await self.coordinator.bring.save_item(
self._list_uuid,
item.summary or "",
item.description or "",
str(uuid.uuid4()),
)
except BringRequestException as e:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="todo_save_item_failed",
translation_placeholders={"name": item.summary or ""},
) from e
await self.coordinator.async_refresh()
@override
async def async_update_todo_item(self, item: TodoItem) -> None:
"""Update an item in the To-do list.
Bring has an internal 'recent' list which we want to use instead of a todo list
status, therefore completed todo list items are matched to the recent list and
pending items to the purchase list.
This results in following behaviour:
- Completed items will move to the "completed" section in home assistant todoView on GitHub (pinned to 58a3fdb3ea)
Solutions
- Retry the add after reloading the integration so the coordinator refreshes lists and the session.
- Re-authenticate the Bring integration if failures persist (Config > Integrations > Bring > Re-authenticate).
- Confirm the list still exists in the Bring app and re-create the config entry if the list was deleted/recreated.
- Check logs for the underlying BringRequestException message to see the HTTP status.
Defensive patterns
Strategy: retry
Try / catch
try:
await todo_entity.async_create_todo_item(item)
except HomeAssistantError as err:
if err.translation_key == "todo_save_item_failed":
await coordinator.async_refresh()
await todo_entity.async_create_todo_item(item) # one retry after refresh
else:
raise Prevention
- Trigger a coordinator refresh before batch To-do edits.
- Keep the Bring session healthy: reload the integration on repeated write failures.
- Avoid editing the same list from the phone app and HA simultaneously.
When it happens
Trigger: Adding a To-do item (via UI or todo.add_item service) while the Bring API returns a non-2xx response or the request layer raises: invalid session cookie, list UUID stale, payload rejected, network timeout.
Common situations: Expired Bring session after HA restart, list deleted or recreated on the phone app so the stored list_uuid no longer exists, intermittent cloud errors, item summary containing characters the API rejects.
Related errors
- todo_rename_item_failed
- todo_delete_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/51b5041c1b67753a.
Report an issue: GitHub.