The unlimited undo feature of pcb-rnd allows you to recover from most operations that materially affect you work. Calling pcb_undo without any parameter recovers from the last (non-undo) operation. ClearList is used to release the allocated memory. ClearList is called whenever a new layout is started or loaded. See also Redo.

Note that undo groups operations by serial number; changes with the same serial number will be undone (or redone) as a group. See Atomic.

The following arguments are intended for scripting:

- FreezeSerial: stop increasing the undo serial number
- UnFreezeSerial: stop increasing the undo serial number
- FreezeAdd: start adding operations to the undo list again
- UnFreezeAdd: start adding operations to the undo list again
- IncSerial: increase the undo serial number (operations with the same serial number are batched); a typical sequence for batching operations is: Undo(FreezeSerial); ...; Undo(UnFreezeSerial); Undo(IcSerial)
- GetSerial: return the current undo serial
- GetNum: return the number of undo slots currently allocated
- Above, sernum: perform undo of all operations with serial number higher than sernum