The 25-year-old has played just five games for the Pies this season due to injury, but is available for selection this weekend.
“‘Tay’ has distinguished himself in big games. He played superbly in last season’s finals series and has always displayed great heart and intensity,” Collingwood List Manager Ned Guy told the club’s website.
“He demands a lot of himself and his team-mates and his prime years as a player have arrived. We like what we see ahead for him just as he likes what he sees ahead for the team.
“With that we were both happy to make a wholehearted investment in a future together.”
Adams has played 94 games for the Pies since joining the club at the end of the 2014 season.