Coach Kyle Shanahan is speaking a lot more favorably these days about guard Joshua Garnett than a couple of weeks ago.

Garnett, whom the 49ers’ previous regime traded up to select with the No. 28 overall pick in the 2016 draft, looked to be on his way out the door when Shanahan was questioning why he was not practicing during the second week of training camp.

But now that Garnett is back on the field -- with his knee presumably feeling a lot better – Shanahan likes what he is seeing. When asked Sunday evening if he was pleased with Garnett’s performance Saturday in the 49ers’ exhibition game against the Indianapolis Colts, Shanahan answered, “I definitely was.”

Mike Person started at right guard and played the 49ers’ first two offensive series and a total of 27 snaps. Garnett entered late in the first quarter and also played 27 snaps. The two are competing for the starting job, as veteran Jonathan Cooper has been limited with a knee condition of his own.

“I thought Josh played really well,” Shanahan said. “I think he’s moving better, just getting more comfortable for obvious reasons. He’s been out there getting a lot more reps. I think his assignments and everything were much better and I was really pleased with how he played in the game.”

Garnett was placed on injured reserve last year before the start of the regular season with a knee injury. He was not completely healthy during the offseason program, then sat out two weeks in training camp with a knee contusion that the team believed should have sidelined him only a couple of days.

Shanahan dissects Garçon’s ‘Interception’

Wide receiver Pierre Garçon caught a 47-yard pass from Jimmy Garoppolo in the first quarter against the Colts. On the surface, that bodes well for the team, as Garoppolo and Garçon continue to work on their chemistry. The only problem is Garoppolo was not throwing the ball to Garçon.

Garçon lined up on the right side and was the primary option. But the Colts’ defense took away Garoppolo’s first read, and he looked to Marquise Goodwin on the other side. Garçon and Goodwin both ran in-cutting routes. Garçon got more depth on his route than designed, putting him only about 3 yards in front of Goodwin when Garoppolo’s pass arrived.

“Pierre never stopped running,” Shanahan said. “He ran right through the ball and it was a great interception he made. I think everyone was fine with it probably, except Marquise.”

Garçon reached up to make the catch as Goodwin’s hands were extended for Garoppolo’s pass that never reached its intended target.

Inside Linebacker Rotation

Veteran Malcolm Smith started at the weakside linebacker position, alongside rookie Fred Warner, who called the signals from the middle. Smith played just 10 snaps, as Reuben Foster replaced him early in the game.

Shanahan said the 49ers wanted to get some experience for Warner and Foster while also making sure Smith was not overworked, as he returned to action from missing two weeks with a hamstring injury.

“We wanted him to start the game out because we expect him to be out there Week 1,” Shanahan said of Smith. “But he was also coming his first week back after a hamstring. We didn’t want to put him out there too much. We wanted Fred to play a little bit longer with the ones and we wanted to get Reuben in there since his days are numbered until he’s gone for his suspension.”

Foster will not be eligible to play in the first two weeks of the regular season due to violations of the NFL’s policies on substances of abuse and personal conduct. Foster sustained a concussion in the second half Saturday and is not likely to be cleared in time to play Thursday in the exhibition finale against the Los Angeles Chargers at Levi’s Stadium.

This ‘N’ That

Veteran running back Alfred Morris looked fresh on Saturday, and may have locked up a roster spot behind Jerick McKinnon and Matt Breida with 84 yards rushing on 17 carries. The 49ers’ run game struggled in the first two exhibition games. “His skillset is that Alf always gets a little bit more than you block him for,” Shanahan said. . . An under-the-radar roster competition is going on at tight end and it features two guys named Cole. George Kittle and Garrett Celek have the top two spots locked up. Then, it’s between Cole Hikutini and Cole Wick. Hikutini, whose best attribute is his speed and receiving skills, nearly had a 19-yard touchdown reception in the second quarter, but Colts safety Malik Hooker stripped him of the ball in the end zone. Wick, who is more of a traditional tight end, had an 11-yard reception to move the chains on a third-and-3 play. . . Shanahan said three players who were injured on Saturday – receiver Aaron Burbridge (hamstring), receiver Dante Pettis (bruised knee) and cornerback Jimmie Ward (quadriceps) – will miss the game Thursday but should be ready for Week 1 of the regular season. So does that mean all three will make the 53-man roster? “I don’t know,” Shanahan said. “We’ll see how these next four days go, see how the final 53 folds out. We’ve still got four more days to decide this, and a lot is going to have to go into this, so we’re not there yet with the final 53.” Pettis and Ward are considered locks for the 53-man roster, while Burbridge is on the bubble.