home-assistant/core · error · PipelineNotFound
pipeline_not_found
pipeline_not_found
Error message
Pipeline {pipeline_id} not found What it means
PipelineNotFound raised by assist_pipeline's async_get_pipeline when the requested pipeline_id is not present in the pipeline store and is not a 'conversation.<entity_id>' reference. It signals an invalid/stale pipeline identifier being passed to a pipeline API (websocket, voice satellite, etc.).
Source
Thrown at homeassistant/components/assist_pipeline/pipeline.py:322
@callback
def async_get_pipeline(hass: HomeAssistant, pipeline_id: str | None = None) -> Pipeline:
"""Get a pipeline by id or the preferred pipeline."""
pipeline_data = hass.data[KEY_ASSIST_PIPELINE]
if pipeline_id is None:
# A pipeline was not specified, use the preferred one
pipeline_id = pipeline_data.pipeline_store.async_get_preferred_item()
if pipeline_id.startswith("conversation."):
return _async_get_pipeline_from_conversation_entity(hass, pipeline_id)
pipeline = pipeline_data.pipeline_store.data.get(pipeline_id)
# If invalid pipeline ID was specified
if pipeline is None:
raise PipelineNotFound(
"pipeline_not_found", f"Pipeline {pipeline_id} not found"
)
return pipeline
@callback
def async_get_pipelines(hass: HomeAssistant) -> list[Pipeline]:
"""Get all pipelines."""
pipeline_data = hass.data[KEY_ASSIST_PIPELINE]
return list(pipeline_data.pipeline_store.data.values())
async def async_update_pipeline(
hass: HomeAssistant,
pipeline: Pipeline,
*,View on GitHub (pinned to 58a3fdb3ea)
Solutions
- List current pipelines via Developer Tools -> Assist or the pipeline store and copy the correct id/name.
- If the pipeline was deleted, re-create it or switch the caller to the preferred pipeline (pass pipeline_id=None).
- Update the automation/assist_satellite config that pins the stale id.
- Prefer 'conversation.<entity_id>' references or pipeline names where supported, as they survive id changes.
Example fix
// before
pipeline = async_get_pipeline(hass, "deleted-pipeline-id")
// after
from homeassistant.components.assist_pipeline import PipelineNotFound
try:
pipeline = async_get_pipeline(hass, pipeline_id)
except PipelineNotFound:
pipeline = async_get_pipeline(hass, None) # fall back to preferred Defensive patterns
Strategy: try-catch
Validate before calling
from homeassistant.components.assist_pipeline import async_get_pipelines
valid_ids = {p.id for p in async_get_pipelines(hass)}
if pipeline_id not in valid_ids and not pipeline_id.startswith("conversation."):
pipeline_id = None # fall back to preferred Try / catch
try: pipeline = async_get_pipeline(hass, pipeline_id)\nexcept PipelineNotFound: pipeline = async_get_pipeline(hass, None) - or surface a config error if a specific pipeline was mandatory.
Prevention
- Reference pipelines by 'conversation.<entity_id>' where possible; ids change on re-creation.
- Validate stored pipeline ids against the store after restores/migrations.
- Update dependent configs immediately after deleting a pipeline.
When it happens
Trigger: async_get_pipeline(hass, pipeline_id) with an id that was deleted, came from a restored backup on another instance, or is a typo; the code first resolves 'conversation.*' ids to conversation entities, so those never raise - only stored-pipeline ids can 404.
Common situations: Dashboard/automation references a deleted pipeline; voice satellite or assist_satellite config still pointing at an old pipeline id after recreating it; scripts migrated between instances with different pipeline stores.
Related errors
- noise_suppression_level must be in [0, 4]
- auto_gain_dbfs must be in [0, 31]
- validation-error
- wake-engine-missing
- wake-provider-missing
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/5e27816af3dfb718.
Report an issue: GitHub.