SANTA CLARA – Jack Heneghan, with Dartmouth economics degree in hands, pushed aside his post-college plans when his hometown NFL team called.

He might have had an opportunity as an analyst at a private equity firm after serving an internship last summer, but his life took a different route when the 49ers offered him a spot on their 90-man roster as an undrafted rookie quarterback.

Heneghan received few practice snaps with the 49ers through organized team activities and training camp. But on Thursday in the 49ers’ preseason finale, Heneghan saw plenty of action as a reward for his hard work. Coach Kyle Shanahan said Heneghan deserved his extensive playing time against the Los Angeles Chargers at Levi's Stadium.

“He knows everything inside-and-out, and he’s worked as hard as anyone in learning the offense,” Shanahan said. “I think the guys really respect him, just how hard he worked this offseason through OTAs and how hard he worked out in the weight room when we were away. He’s a talented guy who deserved the opportunity based on his ability also the way he handled himself.”

Heneghan is a Bay Area native who attended Menlo School in Atherton. His father, Lal Heneghan, was a longtime NFL executive and spent five years with the 49ers as executive vice president of football administration.

The younger Heneghan completed eight of nine pass attempts for 58 yards on Thursday. He engineered a 16-play, 90-yard touchdown drive late in the game to give the 49ers a lead. But the Chargers scored late for the winning points in their 23-21 win to close out the preseason.

“I grew up watching the Niners and going to games back at Candlestick,” Heneghan said. “I’ve always been a big fan of the team. I would’ve been happy to have an NFL opportunity anywhere, but it was that much more exciting to do it at home in front of friends and family.”

Heneghan will not make the 49ers’ 53-man roster, but he still he will not begin charting the next move in his life until he sees what happens in the coming days – and if football remains an option.

“Like a lot of guys in the room, I’m waiting to hear what happens over the next couple of days both here and around the league and see where that takes me,” he said. “I definitely had a great time here, and I’d love to keep playing either here or elsewhere. One day at a time.”

Roster Cuts Await

The 49ers will have some difficult cuts over the next couple of days. Shanahan said the team would start delivering the bad news on Friday. The deadline to trim rosters to the 53-player maximum is Saturday at 1 p.m. Then, teams can start putting together their practice squads.

“There are definitely more than 53 guys I’d like to keep on our team,” Shanahan said. “And there are definitely more than 10 guys I’d like to have on our practice squad."

One interesting decision for the practice squad will be which running back the 49ers decide to keep around. Jeremy McNichols gained 27 yards and a touchdown on eight rushing attempts. Jeff Wilson had 17 yards and a TD on nine rushes. Joe Williams sat out the game with a broken rib.

James Appears in the Clear

Rookie receiver Richie James saw a lot of action on Thursday night. He caught a game-high seven passes for 80 yards. He also returned three punts for 32 yards and one kickoff for 22 yards.

But he said nobody has given him any indication whether he has made the team.

“No, that’s secret,” James said. “That’s something I can’t worry about. I control only what I can control, and play ball.”

Shanahan said James is among a number of wide receivers who performed well in camp. James, Aldrick Robinson, Kendrick Bourne and Aaron Burbridge are likely battling for two spots.

“He’s been consistent throughout it all,” Shanahan said of James. “He got some opportunities tonight and came down with them.”

This ‘N’ That

Linebacker Reuben Foster and defensive lineman Solomon Thomas were the only starters who saw action. Foster will begin serving a two-game suspension for violating the league’s policies on substances of abuse and personal conduct. Therefore, Shanahan wanted Foster to see some playing time. Foster recorded two tackles, including one stop on a pass play for a 6-yard loss. Thomas missed time in training camp with a concussion. “I didn’t get many reps in camp due to injury,” Thomas said. “I just wanted to get back out there and get in a few reps and just get ready for Minnesota.” . . . Joshua Garnett started at right guard, while Mike Person did not suit up. Shanahan said the team might not announce a starter until game time on Sept. 9 against the Minnesota Vikings. . . Starting quarterback Jimmy Garoppolo did not suit up. Backup C.J. Beathard started but played just one series after taking a big hit on a sack. Shanahan said he did not plan for Beathard to play more than one series. That one series was a three-and-out. “I wish it would have been longer," Shanahan said. "It was a hard debate that it was only three quick plays. But it’s just not worth it. You’ve got to make that decision.”