The listen loop transcribes a check_silence() batch serially, so a later utterance read its binding after a /voice join landed during an earlier utterance's STT and was posted to the new channel. Capture the binding once per batch (and per leave flush) and pass it in. (cherry picked from commit e4b020a0fd21833a89fc1fa7f904db489d797d9c)