Hi folks, anyone having these issues lately?
wait_for_trigger:
- trigger: state
entity_id:
- binary_sensor.motion_sensor
to:
- 'on'
from:
- 'off'
timeout:
hours: 0
minutes: 20
seconds: 0
milliseconds: 0
This is the step in my automation, and I know that by default execution stops if the timeout reaches 0, even though it's not defined in yaml:
For some reason this is not the case as of lately, and I'm seeing automations fall through and actually continue.
Any ideas what I'm missing? I just toggled continue on timeout on and off, so it gets manually defined in yaml, so I'll see if it happens again, but just a weird bug overall
fuatakgun
(Fuat Akgün)
June 15, 2026, 9:10am
2
It is better to share some traces to go deepe on this
I would, but I don't have any from when the automation failed. The 5 trace limit is just killing all debug potential.
tom_l
June 15, 2026, 9:36am
4
If you don't want it to continue on timeout you have to add:
continue_on_timeout: false
This has always been required. See: Script syntax - Home Assistant
Huh, so you're saying continue on timeout is true by default, but the UI shows it as false by default?
tom_l
June 15, 2026, 10:07am
6
I use YAML, not the UI editor but yes that looks like a bug with the editor.
The YAML generated does not show the required option. To prove it what YAML does the editor generate when the switch is on?
it does show as continue_on_timeout: true
when the switch is on.
Turning the switch off clears the whole thing from the yaml instead of setting it to false.
So there is some sort of discrepancy between the default logic and the UI logic.
tom_l
June 15, 2026, 10:36am
8
It's a bug with the editor. It is not generating the correct yaml when the switch is off. It should add:
continue_on_timeout: false
Probably because whoever wrote it thought false was the default. It's not. true is.
You need to report this here:
Give as much information as you can. Include examples and the link to the documentation I shared above. Do not just link to this topic.
fuatakgun
(Fuat Akgün)
June 15, 2026, 10:51am
9
tom_l:
continue_on_timeout
tom_l is correct, code is expecting to have FALSE in the YAML, or else, moves forward as if it is TRUE.
trace_set_result(delay=delay, done=True)
else:
timeout_handle.cancel()
def _get_timeout_seconds_from_action(self) -> float | None:
"""Get the timeout from the action."""
if CONF_TIMEOUT in self._action:
return self._get_pos_time_period_template(CONF_TIMEOUT).total_seconds()
return None
def _async_handle_timeout(self) -> None:
"""Handle timeout."""
self._variables["wait"]["remaining"] = 0.0
if not self._action.get(CONF_CONTINUE_ON_TIMEOUT, True):
self._log(_TIMEOUT_MSG)
trace_set_result(wait=self._variables["wait"], timeout=True)
raise _AbortScript from TimeoutError()
async def _async_wait_with_optional_timeout(
self,
futures: list[asyncio.Future[None]],