Trigger automation with sentence not working

I want to be able to walk up to my Home Assistant Voice PE and say, “hey Jarvis, trust no one” and have it respond verbally with a specific message. This is part of a scavenger hunt for my kids to play on Christmas day.

I have the Home Assistant Voice PE and it’s setup to use the “hey Jarvis” wake word. In my Settings/Assistants menu I have an assist named “Jarvis” that is set as the preferred assistant. It’s Conversation agent is configured to use an Ollama LLM model (gpt-oss:120b-cloud). Speech-to-text and Text-to-speech are both configured to use Home Assistant Cloud.

Currently, if I do this now, Jarvis just thinks I’m having a conversation with him and thinks I’m being weird and responds like any other LLM would. But If I open a conversation from a dashboard using the assist button and type the sentence “trust no one”, then it triggers the automation appropreiately and Jarvis responds with the message in my automation. Do I need to change how the speech-to-text is configured?

Here’s the automation as it looks right now:

alias: Trust No One
description: ""
triggers:
  - trigger: conversation
    command: trust no one
conditions: []
actions:
  - action: tts.speak
    metadata: {}
    target:
      entity_id: tts.home_assistant_cloud
    data:
      cache: true
      media_player_entity_id: media_player.home_assistant_voice_095147_media_player
      message: >-
        “In a chamber of storms, glass and steel clash, and rain falls sideways
        in the dark. What enters filthy emerges pure. Look within the metal
        mouth.”
mode: single

What does the debug Trace for the automation show?

Interestingly, I wasn’t thinking that the automation was triggering at all when I would say, “hey jarvis, trust no one”. But now it appears it is indeed triggering but the only audible response I’m getting is “done”.

Here’s what I see in the trace:

Trigger:

this:
  entity_id: automation.trust_no_one
  state: 'on'
  attributes:
    id: '1765052405157'
    last_triggered: '2025-12-06T20:41:30.126265+00:00'
    mode: single
    current: 0
    friendly_name: Trust No One
  last_changed: '2025-12-06T20:20:14.562318+00:00'
  last_reported: '2025-12-06T20:41:30.133328+00:00'
  last_updated: '2025-12-06T20:41:30.133328+00:00'
  context:
    id: 01KBTPBW8DPFCAWYTPWTKY59WW
    parent_id: null
    user_id: null
trigger:
  id: '0'
  idx: '0'
  alias: null
  platform: conversation
  sentence: Trust no one.
  details: {}
  slots: {}
  device_id: 7f28d5499bac3c101ca7932b219c4e32
  satellite_id: assist_satellite.home_assistant_voice_095147_assist_satellite
  user_input:
    text: Trust no one.
    context:
      id: 01KBTQ3ENWB65VR5WVR53S69WS
      parent_id: null
      user_id: null
    conversation_id: 01KBTQ3ENWX0AXTKVQ2T4XQAZX
    device_id: 7f28d5499bac3c101ca7932b219c4e32
    satellite_id: assist_satellite.home_assistant_voice_095147_assist_satellite
    language: en-US
    agent_id: conversation.ollama_conversation_gpt_oss_120b_cloud_2
    extra_system_prompt: null

Action:

Text-to-speech (TTS) 'Speak' on Home Assistant Cloud
Executed: December 6, 2025 at 1:54:24 PM
Result:
params:
  domain: tts
  service: speak
  service_data:
    cache: true
    media_player_entity_id: media_player.home_assistant_voice_095147_media_player
    message: >-
      “In a chamber of storms, glass and steel clash, and rain falls sideways in
      the dark. What enters filthy emerges pure. Look within the metal mouth.”
    entity_id:
      - tts.home_assistant_cloud
  target:
    entity_id:
      - tts.home_assistant_cloud
running_script: fals

Kill the “Done” using set_conversation_response:

alias: Trust No One
description: ""
triggers:
  - trigger: conversation
    command: trust no one
conditions: []
actions:
  - action: tts.speak
    metadata: {}
    target:
      entity_id: tts.home_assistant_cloud
    data:
      cache: true
      media_player_entity_id: media_player.home_assistant_voice_095147_media_player
      message: >-
        In a chamber of storms, glass and steel clash, and rain falls sideways
        in the dark. What enters filthy emerges pure. Look within the metal
        mouth.
  - set_conversation_response: ""
mode: single

Looks like that works. Can you tell me why? It seems like a solution that I never would have found.

I’m not a dev, so this might not be 100% accurate… but as I understand it:

The conversation response always plays at the end of the automation. In the case of your TTS action, the TTS action was fired, but before the audio is fully processed the automation was considered “finished”. Then you have a kind of race between which audio clip is ready to play and the short, cached “Done” wins. The audio you wanted to play is cancelled because something is already playing.

Really, if you like the voice used by your default Conversation agent and the sentence should play out of the device you are speaking to; you can use conversation response instead of the tts.speak action:

alias: Trust No One
description: ""
triggers:
  - trigger: conversation
    command: trust no one
conditions: []
actions:
  - set_conversation_response: |
      In a chamber of storms, glass and steel clash, and rain falls sideways
      in the dark. What enters filthy emerges pure. Look within the metal
      mouth.
mode: single