The 29-year-old will make $3 million this year under Thursday's agreement, and the White Sox have a $4 million option for 2016 with a $1 million buyout.
Bonifacio has a .262 career average with 164 stolen bases in eight big league seasons with Arizona, Washington, Miami, Toronto, Kansas City, the Chicago Cubs and Atlanta.
The switch hitter batted .259 with 17 doubles, four triples, three runs and 26 steals in 110 games last season with the Cubs and Braves. He appeared in 65 games in center, 31 at second, seven at third, six in right, four at shortstop, four in left and one as the designated hitter.
White Sox general manager Rick Hahn says Bonifacio ''brings an excellent mix of versatility, speed and experience to our club.''
To open a roster spot, Chicago designated outfielder Jordan Danks for assignment.