Randomly, and without discernible reason, my tools keep disappearing. I cannot find any reason for them to simply vanish, but they do. The only time they do disappear is when I have FilteringEnabled on, but I'm actually relying on a couple FE features for these mechanics. At this point in times, I've re-written the code about three times but it just keeps happening, even with tools that haven't been scripted yet. When I do some tests I find that they get parented to nil but I cannot re-parent them to the character or backpack. Does anyone have a solution to this or have any of you experienced the same problem?
I've considered taking this up with Roblox Staff but I was hoping the community would have some answers for me.
Check any scripts that reference the tool. You said that they get parented to nil and are then parent-locked. This is essentially what the :Destroy() method does, so if any of your scripts are calling :Destroy() on the tool, that is where your problem is.
There may be a chance that one of your scripts is referencing the tool by accident somehow. This is unlikely, but if you have a part named Gun and a tool named Gun and you say workspace:FindFirstChild("Gun"), you can't be sure if the tool or the part is referenced.
Either way, with the information you have given, I am about 90% sure that a script is manipulating your tools.
Hope this helps :)