@tool Not Updating Live in Editor on macOS - Any Workarounds?

Godot Version

4.3.stable

Question

Hi everyone,

I’m running into an issue with @tool scripts not executing live in the Godot 4.3.stable editor on macOS (Sonoma 14.1.1 - Apple M2 Pro - Mac Mini).

Specifically, changes like property setters (set(value)), _process(), or _set() don’t trigger until I save and reopen the scene—or sometimes restart Godot entirely. This makes it tough to debug UI tweaks and custom tools in my project.

Here’s a minimal example of what I’m seeing:

@tool
extends Node

@export var test_value: int = 0:
	set(value):
		test_value = value
		print("Setter triggered: ", value)

func _process(_delta):
	if Engine.is_editor_hint():
		print("Editor tick")

Expected: Changing test_value in the Inspector prints “Setter triggered” instantly, and “Editor tick” prints every frame.

Actual: No prints until I save/reopen or restart—sometimes it’s completely silent.

I’m working on a character creation UI and this bug slows me down a lot. I suspect it’s a known macOS-specific issue (seen similar reports on GitHub, like #66381), but I’m hoping someone’s found a reliable workaround.

What I’ve tried:

  • Adding NOTIFICATION_ENTER_TREE—triggers on load, not live edits.
  • Using a Timer in _enter_tree()—works but feels clunky.
  • Avoiding _process()—doesn’t fix setters.

Has anyone on macOS found a solid fix? Maybe a signal trick or editor refresh hack? I’d love to avoid restarting or closing and opening scenes at every tweak!

Thanks for any tips—happy to share more details if needed.

This is normal. You’ll need to reload the scene after some changes as the scene is not reloaded automatically every time you save the script. You can quickly reload the scene in Scene -> Reload saved scene

I respectfully disagree.

I watched Youtube videos where youtubers made changes to exported variables on the inspector and the scene reacted in real time.

I literally copied and pasted these pieces of code, and on my mac it just works by opening and closing the scene whereas on my pc it works exactly as the video shows.

Also, if you look to Godot documentation, it says the opposite:

In any case,

Thank you

Anybody else have an idea on how to work around this issue?

It’s been really painful.