Kopech struck out a career-best 11, walked three and threw 85 pitches.
Manager Tony La Russa brought in reliever Reynaldo Lopez to start the seventh, and the combined no-hit bid ended immediately when Detroit's Javier Baez led off with a single to right-center. Lopez retired the next three batters to end the inning.
Kopech hoped La Russa would send him back out for the seventh, but had no complaints.
"I'm at a point where I've thrown a lot more innings than I did last season,'' he said of his first full season as a starter. "I understand. I just wanted to go a little deeper.''
La Russa said the decision was his, but he admired his starter's moxie.
"I like the fact he wanted to go back out there,'' he said. "I don't blame him.
"I would change the definition of a win. If we win the game, he's got to get the win.''
The 26-year-old Kopech missed the 2019 season while recovering from Tommy John surgery and opted out in 2020 for health reasons.
He entered Friday night's game at 4-8 with a 3.39 ERA. He has not thrown more than 100 pitches or worked more than seven innings in a start this year.
Andrew Vaughn hit a tiebreaking two-run single in the seventh inning to lead Chicago to victory.
The Associated Press contributed to this report.