Nella stagione 2017-18 giocò 57 partite prima di infortunarsi il 31 marzo 2018 dopo un contatto con Vince Carter; quel contatto pose fine alla sua stagione, impedendogli di disputare i playoffs.[5] Nella post-season vinse (seppur senza mai giocare nelle finali) nuovamente l'anello con i Golden State Warriors in quattro gare e anche questa volta contro i Cleveland Cavaliers.
Alla fine della stagione rimase free agent rifiutando una qualifying offer da parte degli Warriors di 1,7 milioni di dollari, diventando restricted free agent.[5]
Il 29 dicembre 2018 si trasferì ai Cleveland Cavaliers, con cui firmò un contratto biennale (non garantito) da 6 milioni di dollari complessivi; il trasferimento venne ufficializzato 2 giorni dopo visto che gli Warriors (che ne ebbero la possibilità) non pareggiarono l'offerta.[6][7][8] Tuttavia la sua avventura a Cleveland durò pochi giorni in quanto il 5 gennaio (dopo sole 3 gare disputato coi Cavs) venne tagliato dalla franchigia dell'Ohio.[9]
Il 12 gennaio 2019 si accorda con i Toronto Raptors.[10][11] Tra l'altro questo passaggio di squadra fu controverso in quanto si pensava che i Cavs avessero violato le norme dei contratti collettivi.[12] A fine anno arrivò per la terza volta alle NBA Finals dove affrontò proprio i Golden State Warriors; lui giocò poco, ma i canadesi vinsero l'anello in 6 gare: in questo modo McCaw diventò il primo giocatore a vincere 3 titoli consecutivi (trattasi di three-peat) dai tempi dei Lakers di Kobe Bryant e Shaquille O'Neal al termine dei playoffs 2002,[13][14][15] oltre a essere diventato il terzo giocatore a vincere 3 titoli consecutivi con 2 squadre diverse dai tempi di Steve Kerr (tra l'altro suo ex allenatore a Golden State) e Frank Saul,[15] e il settimo giocatore ad avere vinto il titolo in ognuno dei suoi primi 3 anni di carriera.[15]