"Action horizon" names two different quantities, and published tables often mix them. The prediction horizon is the number of future actions the model outputs per inference call, which is the length of the action chunk. The execution horizon is how many of those actions the robot executes before the policy is called again. Chi et al.'s Diffusion Policy paper (2023) defines both: "T_o as the observation horizon, T_p as the action prediction horizon and T_a as the action execution horizon". It found an execution horizon of 8 steps optimal for most of its tasks, trading temporal consistency against reaction time.
Names differ by codebase. In LeRobot v0.6.1, ACT, SmolVLA and π0 call the prediction horizon chunk_size and the execution horizon n_action_steps; Diffusion Policy calls the prediction horizon horizon. The π0 configuration notes that chunk_size is what openpi calls action_horizon. Defaults are 100/100 for ACT, 50/50 for SmolVLA and π0, 64/32 for Diffusion Policy, and 40/40 for GR00T N1.7.
A horizon in steps means nothing without the control rate. Fifty steps is one second at 50 Hz and about 1.7 seconds at 30 Hz. In time units, the execution horizon is the longest the robot runs open-loop between observations under synchronous inference.
A common misconception is that longer horizons are simply better or worse. Longer chunks mean fewer model calls and smoother motion but slower reaction to change. LeRobot's async-inference docs also warn that larger chunks "might also result in less precise actions". The right value depends on the task, the control rate and inference latency.