GetDebugId, NotBrowsable and lacking permissions

When I execute “GetDebugId” in a server script on a model during a game, I get this error:

[10:13:22.025 - The current identity (2) cannot GetDebugId (lacking permission 1)]

The API is tagged as “NotBrowsable”. What does this mean, exactly?

Also, how are folks getting guaranteed to be unique ids for instances? Ideally something that gets replicated.


Game scripts don’t have a sufficient enough security context level to run GetDebugId. Identity 1 is for actions committed in Studio.

NotBrowsable is a tag to prevent items from showing up in intellisense and in the properties window. It acts like, but isn’t fully, like the hidden tag which prevents something from showing up anywhere.

Not sure how to answer the unique ids thing, but I would assume that GenerateGUID is involved.

A Debug ID is used internally by Roblox. I can’t think of a scenario where you would need to use it in a running game. “NotBrowsable” is there because it’s an abstract class. You can create objects that extend Instance but you can’t do anything like"Instance")

UUIDs are very useful, especially as names aren’t guaranteed to be unique. Referencing objects by their unique keys allows for more solid transactional integrity.


Just to be clear, you want us to, in our own custom manner, bind a guid to every instance we might need to differentiate from others, instead of using a method designed for that purpose? I’d personally find this quite useful when referencing instances that may have the same name as another in the same parent. Does Roblox actually have a reason to keep this method locked down? Is there a security implication I’m not seeing here?

I didn’t say anything about what you should or should not do in this reply. This is only an informational post using what knowledge I had 6 months ago.

I wasn’t sure of the original question regarding unique instance ids and I still am not even after re-reading the question, which is why I made sure not to answer definitively because I don’t want to give wrong information. I suggested that the use of GenerateGUID may be involved in this area though.

If I were to respond to this now though, yes, you’d probably need to use GenerateGUID to differentiate instances as opposed to GetDebugId with the sole reason of the latter being locked down; that or you can use your own identifier system to get that same job done. GUID may be over the top. I personally haven’t had that many use cases for it, even when I need to differentiate.

I wouldn’t be able to answer why GetDebugId is locked down. My best answer here is that typically any internal function is kept as RobloxLocked and not exposed to developers. Consider pursuing a feature request or looking for more information as to why this isn’t available to developers if you need it.

1 Like