home-assistant/core · warning · HomeAssistantError

No answer from question

Error message

No answer from question

What it means

Raised inside AssistSatelliteEntity's ask-question flow after the entity announced the question and awaited self._ask_question_future, but the future resolved to None. None is how the pipeline signals that the user gave no response (silence, timeout, or the pipeline ended without a final answer).

Source

Thrown at homeassistant/components/assist_satellite/entity.py:379

            question_media_id,
            preannounce_media_id=preannounce_media_id if preannounce else None,
        )

        if self._is_announcing:
            raise SatelliteBusyError

        self._is_announcing = True
        self._set_state(AssistSatelliteState.RESPONDING)
        self._ask_question_future = asyncio.Future()

        try:
            # Wait for announcement to finish
            await self.async_start_conversation(announcement)

            # Wait for response text
            response_text = await self._ask_question_future
            if response_text is None:
                raise HomeAssistantError("No answer from question")

            if not answers:
                return AssistSatelliteAnswer(id=None, sentence=response_text)

            return self._question_response_to_answer(response_text, answers)
        finally:
            self._is_announcing = False
            self._set_state(AssistSatelliteState.IDLE)
            self._ask_question_future = None

    def _question_response_to_answer(
        self, response_text: str, answers: list[dict[str, Any]]
    ) -> AssistSatelliteAnswer:
        """Match text to a pre-defined set of answers."""

        # Build intents and match
        intents = Intents.from_dict(
            {

View on GitHub (pinned to 58a3fdb3ea)

Solutions

  1. Treat this as expected UX: catch HomeAssistantError and re-ask or fall back to a default action
  2. Check the satellite's microphone/volume and the STT pipeline logs to confirm audio was captured
  3. Increase the pipeline timeout or retry the question if silence was accidental
  4. Verify the device stayed connected during the whole question (check entity state history)

Example fix

# before
answer = await satellite.async_internal_ask_question(question="Continue?")

# after
try:
    answer = await satellite.async_internal_ask_question(question="Continue?")
except HomeAssistantError as err:
    if "No answer from question" in str(err):
        answer = None  # user stayed silent; take default branch
    else:
        raise
Defensive patterns

Strategy: try-catch

Try / catch

try:
    answer = await satellite.async_internal_ask_question(question=q, answers=a)
except HomeAssistantError as err:
    if "No answer from question" in str(err):
        answer = None  # user silent -> default branch
    else:
        raise

Prevention

When it happens

Trigger: async_internal_ask_question completes the announcement but the conversation pipeline times out or the resident interrupts nothing, so the internal wake/end handler sets the future's result to None; satellite device disconnects before answering; STT picked up nothing so the pipeline finished without a response.

Common situations: User does not reply to the spoken question within the pipeline timeout; microphone muted or too far away; satellite dropped offline mid-question.

Related errors


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