Starting with Build 1.74, Rayfield automatically loads its internal UI images from an external cache — no Roblox asset IDs involved. That alone makes a difference.Secure mode takes it further. It strips out every remaining reference that anti-cheats could use to identify your script:
Icons. Lucide names and rbxassetid:// values are removed at runtime.
Key system UI. The key prompt loads a detectable model, so it’s blocked entirely.
Default model ID. You’re warned if you haven’t set a custom asset ID.
The result: with secure mode on and a custom asset ID set, nothing traces back to Rayfield.
In secure mode, Lucide icon names and Roblox image IDs are blocked. They resolve to blank.Use getcustomasset() instead — write your images to the executor filesystem and pass the path:
-- Blocked in secure mode:Tab:CreateLabel("Hello", "alert-circle")Tab:CreateLabel("Hello", 12345678)-- Works in every mode:Tab:CreateLabel("Hello", getcustomasset("my-icons/alert.png"))
The key system UI requires a Roblox model to render. In secure mode, that model is never loaded.
If the user already has a saved key from a previous session, everything works as expected.
If there’s no saved key, the script is blocked. The key prompt can’t be shown.
Secure mode doesn’t bypass the key system — it makes it stricter. Users without a saved key are blocked entirely. If you use KeySystem = true, make sure users enter their key at least once without secure mode first.