49ers
Camp Notebook

Christian McCaffrey Took Roughly Seven Team Reps On Sunday

His first team work since the tightness, on a morning that also got two shoulders back in no-contact jerseys, lost a defensive lineman to the non-participant list, and produced nothing at all on the cornerback everybody is waiting on.

SK
Sam KezarAug 23, 20263 min read
Every call on this site goes on a public ledger and gets graded. The misses stay up.
Upton Stout bursting past a coach holding a padded shield during a 49ers training camp drill in Santa Clara, in a white practice jersey numbered 20, with teammates waiting their turn behind him. A club gallery photograph, not from Sunday's practice.

The 49ers practised at 10:15 on Sunday morning, four days before the preseason finale at Las Vegas and seven days before the roster comes to 53. Odds and ends from the reporters who were there.

Christian McCaffrey took roughly seven reps in team drills, several of them carries. That is the count from Nick Wagoner's camp file, and it is his first team work since the tightness that had kept him out of both preseason games and off the practice field since August 8. Marc Adams has the return without a rep count (49ers Webzone, August 23).

George Kittle practised in individual drills only. Matt Maiocco had him expected there with the team periods unknown, filing at 10:15am PT; Wagoner has him in individual work and nothing else. San Francisco activated him from the physically unable to perform list at two minutes past ten.

Klay Kubiak, after practice, on having both of them back: "It definitely just gives us energy. You have two Hall of Fame caliber players out there." (Wagoner, ESPN, August 23)

Deommodore Lenoir practised in a blue no-contact jersey, De'Zhaun Stribling in a black one. Both hurt a shoulder against the Chargers on Thursday and the club called both day-to-day. Wagoner and Adams have the same two returns and the same two colours.

Renardo Green did not appear in either account, in any direction. The imaging Kyle Shanahan ordered for Friday still had no published result as of 3:00pm PT Sunday, three days on. The last positive word on him is Maiocco's from Saturday: Green was conditioning on the practice field, and the hamstring looks mild (via David Bonilla, 49ers Webzone, August 22). He has now missed two practices with no timeline attached to anything.

Romello Height is new to Sunday's non-participant list. Wagoner notes that Height had moved slowly on Saturday and gives no body part. No other Sunday account carries the absence at all, so it is one reporter's observation rather than a club disclosure, and it matters because Height takes first-team edge reps.

Upton Stout intercepted Brock Purdy on a throw meant for Stribling, which Wagoner describes as an apparent miscommunication. Purdy also dropped a deep ball to Deebo Samuel over Fred Warner for a big gain.

Transactions, for the record. The club announced on Saturday evening that it had re-signed tight end Khalil Dinkins to a three-year deal and waived defensive lineman Xavier Thomas with an injury designation. The release is timed 6:15pm PT on August 22. The club's own transaction log dates the same move 08/20, two days earlier. Thomas had signed on August 12. Kittle's activation appears on neither the log nor the newsroom index.

The week from here, off the club's published practice and media schedule: a walk-through with no media on Monday, practice at 10:15 with an availability on Tuesday, a walk-through on Wednesday, and then Las Vegas at 5:00pm PT on Thursday. The roster is due at 3:00pm PT on Sunday, August 30.

Filed under 49ers

More on Christian McCaffrey

His page →
Game Week

The 49ers rested four veterans Wednesday, and three were full a day later

San Francisco filed its first official Week 2 injury report this week, and eleven 49ers were on it. Six did not practise Wednesday and four of those six were rest days: Nick Bosa, Dre Greenlaw, Christian McCaffrey and Trent Williams. By Thursday, Greenlaw, McCaffrey and Williams were full participants and Bosa was limited. The two men who have not practised either day are Eddy Piñeiro, who is ill, and De'Zhaun Stribling, whose ankle needed surgery. Kaelon Black joined the report Thursday with a groin. Every man on Thursday's report played against the Rams in Melbourne.

Sam KezarSep 17, 20265 min read
The 49ers rested four veterans Wednesday, and three were full a day later
Week 1 Takeaways

San Francisco Stopped The Rams On Fourth And One At Its Own 1, Then Drove 99 Yards

The 49ers opened 1-0 with a 27-7 win over the Rams at the Melbourne Cricket Ground, Thursday evening in the Bay Area and Friday morning in Australia. Los Angeles reached the San Francisco 1 in the third quarter and turned the ball over on downs; San Francisco answered with an 11-play, 99-yard touchdown drive. Connor Colby started at left guard and the whole line played every snap, George Kittle played 30 of 65 in his return, Kaelon Black carried more often than Christian McCaffrey, and De'Zhaun Stribling started at receiver without being thrown to. Nine takeaways off the official game book.

Sam KezarSep 11, 20265 min read
San Francisco Stopped The Rams On Fourth And One At Its Own 1, Then Drove 99 Yards
Game Week

The Two Names That Moved On Wednesday's Injury Report Both Play Right Defensive Tackle

San Francisco's second injury report of Week 1, distributed by the club's communications staff and published by David Bonilla at 49ers Webzone at about 2:57 p.m. Pacific on Wednesday, carries the same eleven San Francisco names as Tuesday's and moves exactly two of them. Alfred Collins goes from limited participation to did not participate, filed under a knee; Kyle Shanahan said this week that Collins tore a patellar tendon and is out for the year. James Thompson Jr. goes from did not participate to limited, and Shanahan had said before the last practice that Thompson's availability would be settled by how that session went, per Patrick Holloway and Kyle Posey at Niners Nation. The two men are first and third at right defensive tackle on the club's own chart. Nick Bosa, limited on both reports, said after the final full practice that he is '100% ready to go' and that he had not yet talked to defensive line coach Kris Kocurek about a snap limit. George Kittle, also limited both days, said his body feels good and that he does not know his workload. Shanahan said the club has to be smart with both, and called Christian McCaffrey 'Awesome. Ready to go.' Bonilla writes that San Francisco held no full practice on Wednesday and had a walk-through scheduled. On the Rams' side everyone but Aaron Donald improved: Myles Garrett went from did not participate to full. Neither the distributed report as published nor the club's own injury report page, read at 3:04 p.m. and again at 4:52 p.m. Pacific, carries a game status for anybody. On the roster page nothing was processed: 53 active, 17 practice squad, 11 on injured reserve, 2 on Active/PUP, Collins still on the Active table.

Sam KezarSep 9, 20265 min read
The Two Names That Moved On Wednesday's Injury Report Both Play Right Defensive Tackle

More on Brock Purdy

His page →
49ers Takeaways

Week 2 takeaways: five touchdowns before San Francisco's first punt

San Francisco is 2-0 after a 35-13 win over Miami in the home opener. The 49ers scored touchdowns on their first five drives and did not punt until 10:38 of the fourth quarter. Purdy was 20 of 22 for 287 yards and two touchdowns with a 149.1 rating and no sack taken. The defense recorded four sacks after none in Week 1, from Marques Sigle, Keion White, Romello Height and a Warner-Stout split, none from Bosa. Miami had first and goal twice and came away with six points. Eddy Piñeiro, the kicker the week was spent on, attempted no field goal.

Sam KezarSep 21, 20265 min read
Week 2 takeaways: five touchdowns before San Francisco's first punt
Civic memory

The 49ers Announced Every Kyle Shanahan Contract Until This One

The 49ers have a standard sentence for a contract, and they have used it on Nick Bosa, Brandon Aiyuk and Brock Purdy, each time naming the number of years. They have used it on their head coach three times in nine years and never once named the years. This offseason they signed him again and used it not at all. What a club announces is the part of itself it writes on purpose, and this one writes the players.

August LindenSep 13, 20264 min read
The 49ers Announced Every Kyle Shanahan Contract Until This One
The rookie

The Right Denominator For De'Zhaun Stribling's First Game Is Twenty-Six, Not Sixty-Five

De'Zhaun Stribling, the wide receiver San Francisco took with the 33rd pick in April, was hurt in his first professional game and the 49ers have published nothing about him since. The official participation report has him at 21 offensive snaps of 65, which is 32 percent. Counted against the 26 plays from scrimmage San Francisco ran before the snap he was injured on, it is 21 of 26, or 81 percent. The count reconciles to 65 at the end of the game once the second-quarter roughing-the-passer penalty is included, which is the check on it. He was not targeted on any of the 21. Six 49ers receivers took an offensive snap in Melbourne: Mike Evans 49, Demarcus Robinson 41, Deebo Samuel 27, Stribling 21, Jacob Cowing 5 and KhaDarel Hodge 1. Tight end Luke Farrell played 46, more than every receiver but Evans, and fullback Kyle Juszczyk played 33, more than Samuel. Four of the five other receivers who played are 30 or older. Kyle Shanahan said after the game that the Achilles was checked and intact and that the club was not sure of the magnitude of the ankle injury; further testing waited on the flight home, which David Bonilla of 49ers Webzone clocked at 13 hours 46 minutes, landing at SFO at 3:06 p.m. Friday. San Francisco's next game is Miami at Levi's Stadium on Sunday, September 20, at 1:25 p.m. Pacific, and the 49ers traded down twice in April, first with Miami, to reach the pick they spent on Stribling. No take filed.

Grant LombardSep 13, 20264 min read
The Right Denominator For De'Zhaun Stribling's First Game Is Twenty-Six, Not Sixty-Five

On the record

Called Shots →
Held upJul 29, 2026

Kaelon Black is on the San Francisco 49ers' initial 53-man roster as announced at the August 30, 2026 mandatory cut. Scored off the initial 53 only: the practice squad is a miss, a later signing or elevation after the initial roster is a miss, and being placed on injured reserve from the initial 53 counts as a hit.

Black is a rookie running back whose Wednesday workload increased because Jordan James fractured a rib, which is the most fragile possible reason to be getting reps. If James is back before cut day the reps go with him. Against the call: the 49ers carried McCaffrey plus a thin room behind him, and a back who has taken first-team-adjacent work in camp is usually kept over a body they would have to teach. This resolves in 32 days and it is genuinely close.

Latest on the 49ers

The whole beat →
Week 2 Analysis

Opponents have reached the 49ers' red zone five times and scored one touchdown

Two days after the 35-13 win over Miami, the two game books describe a defense that is hard to finish against and easy to move against. Opponents have gained 5.1 yards a play in both games and reached the San Francisco 20 five times for one touchdown. Miami spent 19:17 on its first three possessions and got six points, twice reaching goal to go and twice kicking. San Francisco's first four sacks of the season came either inside its own red zone or with a lead of 15 or more, and Nick Bosa is credited with none of them, and with no quarterback hit either, on 40 of 59 defensive snaps. PFF's charting of the same game puts him ahead of every other 49er in total pressures.

Sam KezarSep 22, 20266 min read
Opponents have reached the 49ers' red zone five times and scored one touchdown
49ers Roster

The 49ers won by 22 and came out of it needing a receiver and a lineman

Shanahan's Monday conference call produced four injury verdicts. Robinson and Thompson Jr. both have high-ankle sprains at three to six weeks, Robinson most likely to injured reserve. Height broke his hand and has surgery Tuesday, with an outside chance of playing at Arizona. Mike Evans has a hip that will be managed through the week. The receiver room is down to five men on the active roster with three on injured reserve, and the defensive line has now lost three players in two games. Shanahan, asked on Sunday about Leonard Floyd, said the club has already made calls.

Sam KezarSep 21, 20264 min read
The 49ers won by 22 and came out of it needing a receiver and a lineman
Game Week

San Francisco won by 20 without a sack. Miami gave up five.

San Francisco hosts Miami at 1:25 p.m. Pacific on FOX in its home opener. The 49ers beat the Rams 27-7 in Melbourne without a sack, taking eight quarterback hits instead, four of them by Osa Odighizuwa. Miami lost 27-13 at Las Vegas behind Malik Willis, who was sacked five times. Eddy Piñeiro is questionable with an illness that cost him all three practices, and the club auditioned two kickers Saturday and signed neither. Ten men to watch, and the reason the first one is the kicker.

Sam KezarSep 20, 20264 min read
San Francisco won by 20 without a sack. Miami gave up five.

Earlier on the 49ers

Camp Notebook

Nick Bosa Practised For The First Time Since August 3

Nick Bosa practised Wednesday for the first time since August 3, in individual drills and in team periods, per Nick Wagoner at ESPN. It is his first full practice since he tore the right anterior cruciate ligament in Week 3 of last season. He said afterwards that once a session reaches team work there is no governor on it, and that he is confident about Week 1. Ian Rapoport reported Wednesday morning that Bosa and George Kittle both travel to Australia. Kittle has now had three straight days of team work, dated to Monday by John Lynch. Six players sat out, three fewer than Tuesday: Renardo Green, Jacob Cowing, Luke Gifford, Gracen Halton, Romello Height and James Thompson Jr. Jack Jones was on neither list and did no work with the team. Left guard is still not named. The club hosted defensive tackle McKinnley Jackson on a visit and signed nobody.

Sam KezarSep 2, 20264 min read
Nick Bosa Practised For The First Time Since August 3
Camp Battles

The 49ers Need Alfred Collins Against The Run, And PFF Ranks Him Near The Bottom There

Alfred Collins, No. 95, was activated off the PUP list at the end of July after offseason shoulder surgery and is expected to line up next to Osa Odighizuwa. Tennessee ran 31 times for 167 yards in the preseason opener. PFF's grades from that game rank Collins last among the 49ers' defensive linemen against the run, and its 2025 rankings put him 127th of 133 qualifying interior linemen in the same category while ranking him 76th of 137 as a pass rusher. The club published no participation report for the opener, so no official snap counts exist. Monday was a closed walk-through with no media availability.

Sam KezarAug 17, 20265 min read
The 49ers Need Alfred Collins Against The Run, And PFF Ranks Him Near The Bottom There
Roster

The 49ers Signed A Center Off Friday's Tryout Sheet And It Cost Them Nick Zakelj

The 49ers signed Doug Kramer Jr., an Illinois center who worked out for the club on Friday, and released Nick Zakelj in the same announcement. Every San Francisco transaction day in August has been an exact one-in, one-out, ten additions against ten subtractions across five club releases. Zakelj is the first man in that stretch the club released rather than waived, and the two public transaction logs do not agree on which verb the club used for three other August names. Kramer went 207th in the 2022 sixth round; Zakelj went 187th in the same round of the same draft.

Sam KezarAug 10, 20264 min read
The 49ers Signed A Center Off Friday's Tryout Sheet And It Cost Them Nick Zakelj