The 35-year-old Garrard, who hasn't played in two years, is expected to provide competition for Mark Sanchez, who was benched toward the end of last season after a long ineffective spell.
The terms Garrard's contract weren't announced.
He last played for the Jacksonville Jaguars in 2010, when he threw for 2,734 yards and 23 touchdowns in 14 contests. He was cut from the team before the 2011 season.
The nine-year veteran underwent arthroscopic surgery on his knee last season and was released by the Miami Dolphins during pre-season camp.
Garrard has thrown for 16,003 yards, 89 touchdowns and 54 interceptions in 86 career games.