Tool: Set scale of selected object suddenly doesnt work!

That sounds highly unlikely.

Did you print the scale of the node accessed via direct path? Does it match what is shown in the inspector?

Given that, position changes correctly and get_path()fits the selected node, I don’t think we’re looking at the wrong node anymore.

What’s still confusing me is that the Inspector shows a non-unit scale, but both:

selectedRoot.scale
selectedRoot.get_scale()
selectedRoot.transform.basis.get_scale()

appear to resolve to (1,1,1)

Could you print all of these at once?

print("class:", selectedRoot.get_class())
print("scale:", selectedRoot.scale)
print("basis scale:", selectedRoot.transform.basis.get_scale())
print("global basis scale:", selectedRoot.global_transform.basis.get_scale())
print("transform:", selectedRoot.transform)
print("owner:", selectedRoot.owner)

Also, is this StaticBody3D from an imported scene ( for instance, GLTF, FBX e.t.c), or is it a node created directly in Godot?

Another thing with which I would experiment, is whether the Inspector value, actually changes when you execute:

selectedRoot.scale = Vector3(2, 2, 2)

Does the Inspector immediately become (2,2,2)or does it stay at (1.89, 4, 12)?

That would tell us whether the editor is reading a different transform than the one exposed through the Node3D API.

Can you make a minimal reproduction project @andreasng ?