Timeout
Last updated on September 14, 2026
You can prevent a phase from running indefinitely by setting a timeout. When it elapses, the phase ends with the TIMEOUT outcome.
A phase without a timeout has no time limit — Python code, plug calls, and operator input all wait as long as they need to.
name: Endurance Test
main:
- name: Run Long Test
python: phases.tests
timeout: 60sDurations combine h (hours), m (minutes), s (seconds), and ms (milliseconds), like 90s, 5m, or 1h30m. A bare number is interpreted as milliseconds. The value must be between 1 millisecond and 24 hours.
The timeout covers everything the phase does: Python code, plug calls, and operator UI prompts all share the same deadline. TofuPilot terminates phases that exceed their timeout and logs a warning at 75% of the timeout duration, regardless of which runtime you use.
The Python worker process is terminated when a phase exceeds its timeout, including while it waits on a plug call.
The executable worker process is terminated when a command exceeds its timeout.
The UI phase is terminated when it exceeds its timeout, even if waiting for operator input. Without a timeout, a prompt waits for the operator indefinitely.
How is this guide?