{"record":{"id":"90f713f8f99846a2","repo":"home-assistant/core","slug":"wake-engine-missing","errorCode":"wake-engine-missing","errorMessage":"No wake word engine","messagePattern":"No wake word engine","errorType":"exception","errorClass":"WakeWordDetectionError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/assist_pipeline/pipeline.py","lineNumber":701,"sourceCode":"        # This ensures that files are properly closed if the event handler reads them.\n        await self._stop_debug_recording_thread()\n\n        self.process_event(\n            PipelineEvent(\n                PipelineEventType.RUN_END,\n            )\n        )\n\n        pipeline_data = self.hass.data[KEY_ASSIST_PIPELINE]\n        pipeline_data.pipeline_runs.remove_run(self)\n\n    async def prepare_wake_word_detection(self) -> None:\n        \"\"\"Prepare wake-word-detection.\"\"\"\n        entity_id = self.pipeline.wake_word_entity or wake_word.async_default_entity(\n            self.hass\n        )\n        if entity_id is None:\n            raise WakeWordDetectionError(\n                code=\"wake-engine-missing\",\n                message=\"No wake word engine\",\n            )\n\n        wake_word_entity = wake_word.async_get_wake_word_detection_entity(\n            self.hass, entity_id\n        )\n        if wake_word_entity is None:\n            raise WakeWordDetectionError(\n                code=\"wake-provider-missing\",\n                message=f\"No wake-word-detection provider for: {entity_id}\",\n            )\n\n        self.wake_word_entity_id = entity_id\n        self.wake_word_entity = wake_word_entity\n\n    async def wake_word_detection(\n        self,","sourceCodeStart":683,"sourceCodeEnd":719,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/assist_pipeline/pipeline.py#L683-L719","documentation":"WakeWordDetectionError with code 'wake-engine-missing' raised by PipelineRun.prepare_wake_word_detection when no wake word entity can be resolved: the pipeline's wake_word_entity is unset and wake_word.async_default_entity(hass) returns None, meaning no wake-word-detection integration (e.g. openWakeWord, microWakeWord) is loaded.","triggerScenarios":"Calling prepare_wake_word_detection() (directly or via a satellite starting wake-word mode) on a system with zero wake word entities, or where the provider integration is not loaded/enabled.","commonSituations":"Voice satellite or Assist voice setup attempted before installing a wake word add-on/integration; provider integration disabled after setup; ESPHome satellites relying on the host for wake detection.","solutions":["Install/enable a wake word detection integration (e.g. openWakeWord via HACS or microWakeWord bundled with voice pipelines).","Restart or reload so async_default_entity finds the provider, then retry.","Alternatively pin pipeline.wake_word_entity to a specific existing entity id."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"from homeassistant.components import wake_word\n\ndef wake_available(hass, pipeline) -> bool:\n    entity_id = pipeline.wake_word_entity or wake_word.async_default_entity(hass)\n    return entity_id is not None","typeGuard":null,"tryCatchPattern":"Catch WakeWordDetectionError around prepare_wake_word_detection() and branch on err.code: 'wake-engine-missing' -> prompt the user to install a wake word integration; 'wake-provider-missing' -> fix the configured entity.","preventionTips":["Install and enable a wake word integration before exposing wake-word pipelines.","Check async_default_entity(hass) is not None before preparing wake detection.","Load wake word providers before starting satellites at startup."],"tags":["home-assistant","assist-pipeline","wake-word","voice","setup"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}