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
- Treat this as expected UX: catch HomeAssistantError and re-ask or fall back to a default action
- Check the satellite's microphone/volume and the STT pipeline logs to confirm audio was captured
- Increase the pipeline timeout or retry the question if silence was accidental
- 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
- Treat 'no answer' as a normal outcome and design a default branch
- Check satellite state and mic levels before asking critical questions
- Retries should be rate-limited; users often intend silence
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
- Built-in conversation agent does not support starting conver
- Wake word interception already in progress
- TTS engine {pipeline.tts_engine} not found
- Failed to connect
- {error}
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/527268f2704d5ca2.
Report an issue: GitHub.