You’re not the only one that’s confused about this mode of behaviour for duplication in Godot.
- Duplicating a node should result in either a true Instance or true unique copy, not a mix of both · Issue #317 · godotengine/godot-proposals · GitHub
- Always duplicate internal subresources on node duplicate (except when it does not make sense to) · Issue #4672 · godotengine/godot-proposals · GitHub
Unlike most software, Godot uses the same references (external and sub-resources) from the source object that is being duplicated. While it makes perfect sense for external resources, it is quite confusing when a duplicated object references sub-resources from its source.
Here are my suggestions to avoid this issue:
For packed scenes: use Ctrl+Shift+A to add a scene instance
For unique objects: use Ctrl+D and then make sub-resources unique
Alternatively, you could opt to not use sub-resources but instead external resources only.
This should avoid the issue of having objects that are “linked” through shared sub-resource references.
EDIT: I just realized that the problem you’re having is with an actual node being used across instances, not a resource. Perhaps this is an actual bug?
In case this has been changed in the future: please dismiss this post.