> ## Documentation Index
> Fetch the complete documentation index at: https://pure.saauf.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting Trace: Bans, Detections, and Panel Issues

> Diagnose and fix common Trace problems including bans not working, detections not firing, the admin panel not opening, and webhook delivery failures.

Most Trace issues fall into a small number of categories: installation order, Roblox API settings that must be enabled before publishing, and permission configuration. Work through the relevant section below, and check the Studio Output window for any Trace error messages alongside each step.

<Note>
  Platform engine updates from Roblox can occasionally introduce incompatibilities with Trace's runtime behavior. If a problem appears after a Studio or client update, check Pure Studio's release channel for a patch or hotfix before spending time on deeper investigation.
</Note>

***

<AccordionGroup>
  <Accordion title="Admin panel doesn't open">
    1. Confirm the staff member's Roblox `UserId` is assigned to a role in **Settings → Roles**. A player with no assigned role has no panel access regardless of group rank.
    2. Verify that Trace is correctly installed in `ServerScriptService` or `ServerStorage` and that the initialization script ran without errors. Check the **Output** window in Studio for any Trace-related errors on startup.
    3. If you are testing in Studio, make sure you are using **Play Solo** or **Team Test** - the panel requires the Trace server runtime to be active.
  </Accordion>

  <Accordion title="Bans aren't working">
    Enable `Players.BanningEnabled` in your experience settings:

    1. Open **Game Settings** in Roblox Studio.
    2. Navigate to **Security → Allow API Services**.
    3. Enable the **Banning API** toggle.
    4. Publish your experience for the change to take effect.

    Without this setting, the Roblox Ban API is inactive and Trace cannot apply or lift platform-level bans. This setting must be enabled before publishing - it cannot be toggled at runtime.
  </Accordion>

  <Accordion title="Detections aren't firing">
    * Open the Trace settings and check your **Protection Preset**. The **Relaxed** preset intentionally reduces detection sensitivity. Switch to a stricter preset if you need more aggressive coverage.
    * Check the **Output** window in Studio for errors during Trace initialization. If Trace failed to load, no detections will fire.
    * Confirm the player's character is fully loaded before testing movement detections - detections that depend on `HumanoidRootPart` position require a spawned character.
  </Accordion>

  <Accordion title="Discord webhook not receiving messages">
    1. Open `TraceConfig` and verify the webhook URL is correct and complete.
    2. In Discord, navigate to your channel's **Integrations → Webhooks** settings and confirm the webhook has not been deleted or regenerated since you last copied the URL.
    3. Trigger a low-impact event from the admin panel (for example, add a staff note) and watch the Discord channel. If nothing arrives, check the Studio Output window for HTTP errors from the webhook request.
    4. If the webhook URL was recently regenerated in Discord, update `TraceConfig` with the new URL and republish.
  </Accordion>

  <Accordion title="False-positive detections for legitimate movement">
    Implement **Movement Exceptions** in a trusted server script to authorize the specific mechanic triggering the false positive - launch pads, portals, vehicles, and scripted flight are the most common causes.

    ```lua theme={null}
    local Trace = _G.Trace
    assert(Trace, "Trace must be initialized before movement integrations")

    -- Example: authorize a launch pad impulse
    local token = Trace.BeginMovementException(player, {
        Id = "launch-pad",
        Duration = 8,
        Reason = "Launch pad impulse",
        Checks = {"Velocity", "Fling", "Fly"},
    })

    -- ... your launch pad movement code ...

    Trace.EndMovementException(player, token)
    ```

    See the [Movement Exceptions](/integrations/movement-exceptions) guide for the full API.
  </Accordion>

  <Accordion title="Staff member can't access a feature">
    1. Check the staff member's role in **Settings → Roles** and verify the relevant permission is enabled for that role.
    2. Open **Settings → Systems** and confirm the feature's **Global System** toggle is on. A disabled Global System turns off that feature for every role, including Experience Owner.
    3. If the system was recently disabled and you cannot re-enable it from the panel, edit `TraceConfig` in `ServerScriptService` to restore the setting and republish.
  </Accordion>

  <Accordion title="Replay won't load">
    Replay data is stored in your experience's Roblox DataStores. If replays are not loading:

    1. Confirm **API Services** are enabled: **Game Settings → Security → Allow API Services**.
    2. Check that the DataStore quota for your experience has not been exceeded - high-traffic experiences can hit DataStore request limits.
    3. If the replay was recorded in a previous version of Trace, it may use a schema that is no longer compatible. Check the Trace changelog for any replay format migration notes.
  </Accordion>

  <Accordion title="&#x22;Trace must be initialized&#x22; error in server scripts">
    This error means your script ran before Trace had finished initializing. Because Trace initializes asynchronously, scripts that access `_G.Trace` immediately on run can beat it to the punch.

    Use a wait loop to defer until Trace is ready:

    ```lua theme={null}
    local Trace
    repeat task.wait() until _G.Trace
    Trace = _G.Trace
    ```

    Alternatively, place your integration script after the Trace initialization script in the execution order, or use a `script.Parent.ChildAdded` pattern to detect when the Trace API table is available.
  </Accordion>
</AccordionGroup>
