Skip to main content
Trace’s anticheat systems monitor player movement in real time. When your game intentionally moves a player - through portals, launch pads, vehicles, cutscenes, or scripted flight - those movements can resemble the patterns Trace is designed to catch. Movement exceptions are a server-side API that let your trusted scripts temporarily authorize intentional movement so it is never flagged as cheating.
All movement exception calls must be made from trusted server scripts. Client scripts cannot grant exceptions to themselves or to any other player.

Accessing the API

Before calling any movement exception method, obtain the Trace API table from _G.Trace. Because Trace initializes asynchronously at runtime, assert its presence so your script fails loudly if it runs too early.

Short Scripted Movement - WithMovementException

Use WithMovementException for one-shot movements wrapped in a single callback - portal transfers, spawn placement, and similar discrete teleports are ideal candidates.
Trace grants the exception, runs your callback, then cleans it up - even if the callback throws an error. You never need to manually close the window.

Teleport Helper - AllowTeleport

For simple character teleports, AllowTeleport is a convenience wrapper that opens a short exception window and returns immediately so you can move the character on the next line.
The three arguments are: the Player instance, a duration in seconds, and a human-readable reason logged with the exception.

Longer Movement - BeginMovementException / EndMovementException

For sustained movement events - vehicles, launch pads, scripted flight, or long cutscenes - open a named exception with BeginMovementException and close it explicitly with EndMovementException.
Keep the following rules in mind:
  • Duration = 0 creates a manual exception with no timer. The exception stays open until you call EndMovementException. Always pair manual exceptions with a corresponding close call.
  • Timed exceptions are capped at 300 seconds. Use a manual exception for anything that may run longer, and close it when the sequence ends.
  • Id reuse refreshes the named exception rather than creating a duplicate. If your launch pad fires again before the first exception expires, passing the same Id resets the timer cleanly.

Movement Zones

Movement zones let you associate an exception with a physical region in your Workspace. Any player whose HumanoidRootPart enters the zone automatically receives the exception; the exception is removed when they leave. Register a BasePart or Model as a zone:
Rotated parts are handled automatically using oriented bounding boxes - you do not need to align your zone parts to world axes.

Managing Registered Zones

If the BasePart or Model you registered is destroyed in the data model, Trace unregisters the zone automatically.

Valid Check Names

The Checks array accepts any combination of the following five names: Omitting the Checks field entirely enables all five checks, which is equivalent to passing {"Teleport", "Velocity", "Fling", "Fly", "Noclip"}.
For full parameter descriptions, default values, and return types, open the API Reference tab in the Trace documentation sidebar.