Dyson is batting just .157 (8 for 57) this season, but he swiped 30 bags last year. He won the World Series in 2015 with Kansas City and could serve as a valuable pinch runner for Chicago as it chases its first playoff appearance since 2008.
Dyson will face his former team this weekend when the White Sox host the Royals for a three-game series.
The White Sox sent international signing bonus pool money to the last-place Pirates for the 36-year-old Dyson, who is a .245 career hitter with 254 steals in 879 games. He just faced Chicago on Tuesday night, going 0 for 3 while Lucas Giolito threw a no-hitter in a 4-0 victory for the White Sox.
Dyson was the odd man out for Pittsburgh after it claimed outfielder Anthony Alford off waivers from Toronto on Thursday.
To make room for Dyson on the roster, Chicago designated outfielder Nicky Delmonico for assignment and optioned outfielder Luis González to its alternate training site in Schaumburg.
Madrigal, one of Chicago’s top prospects, made his big league debut July 31, but he separated his left shoulder in his fifth game with the team. The 23-year-old second baseman was selected by the White Sox with the fourth overall pick in the 2018 draft.
Catcher Zack Collins was optioned to Schaumburg to create a spot for Madrigal.