Signal '…' is already connected to given callable '…' in that object in Godot 4
By Eduardo Orellana · Updated
The signal is already connected to that method, and Godot refuses a second identical connection. Calling hit.connect(_on_hit) twice prints Signal 'hit' is already connected to given callable 'Node(repro.gd)::_on_hit' in that object. Connect once, in _ready() or in the editor's Node dock, or check is_connected() first.
AppImage, x86_64. Ubuntu 22.04, Debian 12, Fedora 39 or newer.
Intel or AMD Chromebook, with Linux turned on.
What Godot is checking
Object.connect() keeps one connection per signal and callable pair. Connecting the same pair again is refused with this engine error; the existing connection stays and the script carries on.
A signal connected in the editor's Node dock and again in code is the usual way to hit it: the scene file already holds the connection when _ready() runs.
Reproduce it
A hit signal connected to the same method twice.
extends Node
signal hit
func _on_hit() -> void:
print("hit")
func _ready() -> void:
hit.connect(_on_hit)
hit.connect(_on_hit)
hit.emit()
What Godot 4.7.2 prints
Godot Engine v4.7.2.stable.mono.official.ed1daf0bf - https://godotengine.org
ERROR: Signal 'hit' is already connected to given callable 'Node(repro.gd)::_on_hit' in that object.
at: connect (core/object/object.cpp:1562)
GDScript backtrace (most recent call first):
[0] _ready (res://answers/signal-is-already-connected-to-given-callable/repro.gd:10)
hitFix it
Connect only when not already connected.
extends Node
signal hit
func _on_hit() -> void:
print("hit")
func _ready() -> void:
for i in 2:
if not hit.is_connected(_on_hit):
hit.connect(_on_hit)
hit.emit()
What the fixed script prints
Godot Engine v4.7.2.stable.mono.official.ed1daf0bf - https://godotengine.org
hitVerified on Godot 4.7.2
Both scripts on this page were run headless on Godot 4.7.2 (4.7.2.stable.mono.official.ed1daf0bf) on 18 October 2026, and the output above is what Godot printed, unedited.
Where the check lives in Godot's source: [object.cpp line 1562, the message](https://github.com/godotengine/godot/blob/4.7.2-stable/core/object/object.cpp#L1562).
Questions
- Does the method then run twice?
- No. The second connect() is refused, so the method runs once per emit, as the repro printed.
- Can I connect the same method twice on purpose?
- Pass CONNECT_REFERENCE_COUNTED as the flags; each connect() then adds a count and disconnect() removes one, but the method still runs once per emit.
Related
- Attempt to connect nonexistent signal '…' to callable
- Parent node is busy setting up children, add_child() failed
- Every verified Godot 4 answer
- How to connect signals in code in Godot 4: signal.connect(callable)
- Cannot call method '…' on a previously freed instance in Godot 4
- Trying to cast a freed object in Godot 4
- Function "…()" not found in base self in Godot 4
- Cannot call method '…' on a null value in Godot 4
Flockbay's agent reads Godot's debugger output and fixes errors like this one in your project, on the official Godot.
Download Flockbay free