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: 60s

Durations 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?

On this page