From what I understand, wireguard is stateless. It doesnt destroy idle connections where a handshake didn't happen for some time. A client also doesn't send "Im disconnected now" to a wireguard server.
I am also experience the same problems with wireguard kernel and was that the reason why I was still using the go version. The best solution I could find for now is to configure the endpoint with [Keepalive Interval = 25]hope this will be fixed also
Wireguard requiring keepalive 25 isn't a new issue. It was introduced in 23.1 IIRC.Perhaps the issue will be resolved in the new plugin rewrite but since keepalive 25 works for the time being I haven't felt the need to dig into what the root cause is.