The San Francisco 49ers have not been good this season, and at least some of that can be attributed to Blaine Gabbert, who has been absolute trash. Colin Kaepernick, a quarterback who has struggled recently, but took San Francisco to the Super Bowl in 2012, and the NFC Championship in 2013, has been on the bench. He barely played in the preseason for because of a "dead arm," but the speculation was at the time that the 49ers were not playing him because his contract was guaranteed, even with an injury. This was also the speculation with RGIII's last season in Washington.
According to Ian Rapoport, we can stop speculating. San Francisco was absolutely keeping him on the bench to avoid having to fully pay his contract in the event he got hurt. Under the terms of Kaepernick's deal, the 49ers would have to pay out $19.7 million—$14.5 million for 2017 and $5.2 in 2018—if he were to get injured this season.
Putting aside the specific NFL absurdism of contracts that are not guaranteed unless specific language is included, what you are looking at is an NFL team holding a player's career hostage because of a contract it willingly negotiated. So, not only can a team generally cut a player and not have to pay what it contractually agreed to pay, but now if a player has enough leverage—which Kaepernick had when he signed the original deal—and actually gets some of his contract guaranteed, the team can simply sit him and say "you're not playing unless you sign a better deal for us." What do you think would happen if Aaron Rodgers strolled into Ted Thompson's office and said he wasn't playing until he got $20 million, right then and there?
Please remember this the next time your team's GM, or local columnist or radio hack starts killing your rookie running back for holding out in training camp. Most players go out and play, risking injury and worse, on fictitious contracts. And the lucky ones get bullied into relinquishing rights contained in real ones.