The San Francisco Giants selected Gage in the 10th round of the 2014 Major League Baseball draft.[3] He was assigned to the Rookie-levelArizona League Giants for the remainder of the 2014 season, appearing in 13 games and posting a 2–0 record, 1.89 ERA, and 32 strikeouts.[1] Gage began the 2015 season with the Class-AAugusta GreenJackets, and was later promoted to the Double-ARichmond Flying Squirrels. In total, Gage went 6–7 with a 4.27 ERA and 101 strikeouts in 116 total innings.[1] He played the entire 2016 season with Richmond, making 23 starts and posting a 9–7 record, 3.38 ERA, and 106 strikeouts in 136 innings.[1] Gage made his Triple-A debut in 2017, appearing in games for Richmond and the Sacramento River Cats. In a career-high 1451⁄3 innings, he went 6–11 with a 4.21 ERA and 95 strikeouts,[1] and was named a mid-season All-Star for Richmond.[4] Gage began the 2018 season with Richmond, and made appearances in Sacramento, but struggled to a 6.45 ERA.[1] He was released by the Giants organization on July 13, 2018.[4]
New York Mets
On August 4, 2018, Gage signed a minor league contract with the New York Mets organization[4] and played for both the Double-A Binghamton Rumble Ponies and the Triple-A Las Vegas 51s. In 20 combined appearances over the course of 2018, he posted a 7–11 won–loss record, 5.16 ERA, and 80 strikeouts in 103 innings.[1] Gage elected free agency following the season on November 2.[5]
After returning to the Venados in the offseason,[1] Gage signed a minor league contract with the Toronto Blue Jays on November 29, 2021, and was invited to spring training.[4]Matt Buschmann, the Blue Jays director of pitching development and bullpen coach, recommended the team sign Gage, a former teammate.[7] He began the season with the Triple-A Buffalo Bisons, where he went 1–2 with a 1.08 ERA in 16+2⁄3 innings before being called-up.[8]
Gage was promoted to the majors for the first time on June 6, 2022, and made his debut that night with a scoreless inning of relief against the Kansas City Royals.[9] His first major league strikeout was of Kyle Isbel.[10] Gage made 11 total appearances for Toronto in his rookie campaign, logging a 1.38 ERA with 12 strikeouts in 13 innings pitched.[11]
On January 31, 2023, Gage was designated for assignment by the Blue Jays [12] and then released on February 6.[13]
Houston Astros
On February 13, 2023, Gage was claimed off waivers by the Houston Astros[14][15] and optioned to the Triple-A Sugar Land Space Cowboys to begin the 2023 season.[16] In 34 games for Sugar Land, he was 1–1 with a 4.82 ERA.[1] On May 2, he was recalled by the Astros to replace Luis García, who went on the injured list.[17] In five games for the Astros, Gage posted a 2.70 ERA with eight strikeouts across 6+2⁄3 innings of work.[11] On January 22, 2024, he was designated for assignment to make room for Josh Hader on the 40-man roster.[18]
Los Angeles Dodgers
On January 29, 2024, Gage was claimed off waivers by the New York Yankees.[19] One week later, the Yankees traded him and Christian Zazueta to the Los Angeles Dodgers in exchange for Caleb Ferguson.[20] Gage was optioned to the Triple–A Oklahoma City Baseball Club to begin the 2024 season[21] but instead was placed on the minor league injured list, then released on April 2.[22] On April 6, Gage re–signed with the Dodgers on a minor league contract.[22] On July 3, the Dodgers purchased his contract and added him back to the 40-man roster to prevent him from exercising his opt–out clause, but kept him in Oklahoma City on optional assignment.[23] In 20 games, he was 1–3 with a 4.29 ERA.[1]
New York Mets (second stint)
On July 7, 2024, Gage was traded to the New York Mets in exchange for cash considerations.[24] He was called up on July 29 when fellow left-hander Jake Diekman was designated for assignment, but ultimately did not appear for the big league club.[25] In 20 appearances for the Triple–A Syracuse Mets, he compiled a 3.92 ERA with 24 strikeouts and 6 saves across 20+2⁄3 innings pitched. On November 4, Gage was removed from the 40–man roster and sent outright to Syracuse.[26] He elected free agency the same day.[27]
Detroit Tigers
On December 21, 2024, Gage signed a minor league contract with the Detroit Tigers.[28] In 23 appearances for the Triple-A Toledo Mud Hens, he posted a 1-1 record and 1.67 ERA with 28 strikeouts and three saves across 32+1⁄3 innings pitched. On June 12, 2025, the Tigers selected Gage's contract, adding him to their active roster.[29] He made six scoreless appearances for Detroit, striking out three over 5+2⁄3 innings pitched. Gage was designated for assignment by the Tigers following the promotion of Dietrich Enns on June 26.[30][31] He elected free agency after clearing waivers on July 1.[32]
San Francisco Giants (second stint)
On July 2, 2025, Gage signed a minor league contract with the San Francisco Giants.[33] He made five scoreless appearances for the Triple-A Sacramento River Cats, recording two wins and four strikeouts over 5+1⁄3 innings of work. On July 18, the Giants selected Gage's contract, adding him to their active roster.[34] Gage made his first career start on July 27, 2025 against the New York Mets. Serving as an opener, he pitched for only 1 inning, retiring Brandon Nimmo, Francisco Lindor, and Juan Soto on 10 pitches.[35] Gage appeared in 27 games for the Giants in 2025, compiling a 0–1 record, a 3.91 ERA, and 24 strikeouts over 25+1⁄3 innings. In 2025, Gage pitched a total of 31 innings over 33 appearances, finishing the season with a 0–1 record, a 3.19 ERA, and 27 strikeouts.[36]