Yeah, it won’t create tags with the same name if you try to define it multiple times - you’ll just end up with multiple symbols that point to the same tag. You can throw tag declarations in a header so you don’t have to redefine the same tags over and over again though.
If you need absolute type safety then the wrapper you made is the way to go, just annoying to have to make that for every enum you want and tags have a bunch of extra features that you may or may not find useful in the future (and don’t really cost anything if you don’t end up using).