Civic memory

The 49ers Announced Every Kyle Shanahan Contract Until This One

Tom Pelissero reported Friday that Shanahan signed an extension with San Francisco during the offseason. The club published its own release when it hired him in February 2017, when it extended him in June 2020 and when it extended him in September 2023. This time it published nothing, and not one of those three releases ever said how long the job was his.

AL
August LindenSep 13, 20264 min read
Every call on this site goes on a public ledger and gets graded. The misses stay up.
Kyle Shanahan on a road sideline in heavy rain in October 2019, hood up over his headset, holding a laminated play sheet in one hand. The crowd behind him is out of focus and dressed for the weather.

The San Francisco 49ers have a sentence.

It begins "The San Francisco 49ers today announced that the team has signed," and then a name goes into it, and then a number of years. On September 8, 2023 the name was Nick Bosa and the number was a five-year extension through the 2028 season. On August 30, 2024 it was Brandon Aiyuk, four years through 2028, and John Lynch called him a special talent and a warrior on the field. When the club signed Brock Purdy on May 20, 2025, the years went in the headline, five of them, and it scheduled a press conference in the auditorium at Levi's Stadium for half past one the next afternoon, and Lynch said in the release that the club was ecstatic to get the deal done.

No dollar figure appears in any of the three. Bosa's $170 million is not in his release. Purdy's $265 million is not in his. What every one of them names is a number of years.

The club has published a version of that sentence about its head coach three times in nine years. On February 6, 2017, it announced that it had agreed to terms with Kyle Shanahan to become the twentieth head coach in franchise history, and Jed York called it a very exciting day for the 49ers and their fans. On June 15, 2020, it announced that it had signed Shanahan to a multi-year contract extension. The third came on September 22, 2023, multi-year contract extensions for Shanahan and Lynch together.

Not one of the three says how long.

He signed again this year. Tom Pelissero of The Ringer reported it on Friday, and the 49ers have published nothing. The terms are not known. The number of years is not known. The date he signed is not known either, so the decision that settles who runs the football team has no position in the calendar of the year it happened in. How long he had been signed for is not agreed either. The accounts that circulated when the last extension was reported had him under contract through 2027; Jed York said this offseason that it ran through 2028. Neither number came from a club release, because there has never been one to take it from. He is now signed for longer than whichever it was, and that is the whole of it.

What a release is for#

Nearly every document a football club generates about itself is extracted from it by somebody else's rule. The cap figures exist because there is a cap. The injury designations exist because the league requires a report. The transaction wire runs because a roster has to be certified at ninety and at fifty-three and the certification is filed. None of that is the club talking. It is the club complying, and a reader learns from it the way a reader learns anything from a form.

The releases are the other thing. They are voluntary, they are published on a website the team owns, on a day the team picks, in sentences the team writes, and they are where the organization speaks as itself to whoever it believes is out there listening.

The 49ers write for customers. A customer wants to know the quarterback is signed for five more years, because that is roughly what the customer is buying, and the club tells him so in the headline. The question of who runs the football team into the 2030s, and until when, is a question an owner answers to himself.

The defense is real. A head coach is an employee of a private business, his deal sits under no cap, no union files it, and nothing obliges a team to publish its own org chart. Player contracts surface whether the club types them or not, so a player release is a club getting in front of a fact that was coming anyway.

Except the 49ers did type it. Three times, for this coach, the last of them at one o'clock on a Friday afternoon in a September when the team was 3-0. The practice existed. It was theirs. This year they did not follow it, and what they left out is the answer to a question about the next ten years of Sundays that the building had already settled.

The number that is coming anyway#

Shanahan has coached 150 regular-season games for San Francisco and his record in them is 83-67. That figure includes the 27-7 win over the Rams in Melbourne on September 10, which was game 150. Through the end of last season he stood at 82-67. Bill Walsh coached 152 regular-season games for the 49ers, more than anyone else who has held the job.

Miami comes to Levi's Stadium on September 20 and Arizona on September 27. If Shanahan works both, he draws level with Walsh. Denver comes on October 4, and he passes him.

The club will mark that. Marking things is something this organization is very good at, and it has spent this entire season wearing a patch that counts eighty years of itself on the upper chest of every jersey. The number will be exact, because those always are. Nobody outside the building will be able to say how many more games are coming.

Sources: 49ers.com releases dated February 6, 2017 (Shanahan named head coach), June 15, 2020 (multi-year extension), September 22, 2023 (Lynch and Shanahan extensions), September 8, 2023 (Bosa), August 30, 2024 (Aiyuk) and May 20, 2025 (Purdy); Tom Pelissero, The Ringer, September 11, 2026, first reporting the extension; NFL.com and ESPN, September 11, 2026, for the prior contract running through 2027, the absence of terms and the 83-67 record; the Associated Press, September 11, 2026, for Jed York quoted on the prior deal running through 2028 and for the source declining to give the length of the new one; Wikipedia's list of 49ers head coaches for Shanahan's 150 games and Walsh's 152; 49ers.com for the 2026 schedule.

Filed under 49ers

More on Brock Purdy

His page →
How much of Brock Purdy's 105.6 passer rating belongs to Brock Purdy?
The finding

How much of Brock Purdy's 105.6 passer rating belongs to Brock Purdy?

Brock Purdy finished Monday's win over Washington with 1,524 career regular-season attempts and a 105.6 passer rating, first among quarterbacks with at least 1,500 attempts, ahead of Lamar Jackson's 102.7. Against the league average over the same seasons, 90.7, he is 14.9 points better. Of 81 quarterbacks who entered the NFL in 1999 or later and reached 1,500 attempts, only Patrick Mahomes reached it further above the league. Other quarterbacks in Kyle Shanahan's offense since 2017 have rated 1.3 points above the league; Jimmy Garoppolo rated 8.9 above. The ten quarterbacks who qualified furthest above the league kept about four-fifths of that margin over their next 1,000 attempts.

Jamie SilvaOct 22, 20266 min read
Half of Washington's second-half catches ended at Dugger or Warner
49ers Deep Dive

Half of Washington's second-half catches ended at Dugger or Warner

San Francisco beat Washington 23-17 to go 6-0, gaining 303 yards in the first half and 72 after it while Washington went from 90 to 224. Jayden Daniels completed 22 of 30 passes for 212 yards after halftime, almost all of them short, and Jaden Dugger and Fred Warner made the tackle on 11 of the 22, with Dre Greenlaw suspended, Garret Wallow inactive and Luke Gifford out after four snaps. Two of Washington's four first downs by penalty were illegal-contact calls on Renardo Green and Ashtyn Davis, the second wiping out a fourth-down sack; PFF graded Davis lowest of the 20 49ers defenders who played. Purdy threw 21 of his 29 passes to backs and tight ends, and after Evans left with his sore Achilles he threw nine more and one went to a wide receiver. Romello Height had four quarterback hits after missing Friday's practice. Greenlaw's suspension was lifted Tuesday; Christian Kirk is a possibility for Atlanta.

Sam KezarOct 21, 20266 min read
After Pineiro's field goal, Washington ran 40 plays and the 49ers ran nine
Takeaways

After Pineiro's field goal, Washington ran 40 plays and the 49ers ran nine

San Francisco beat Washington 23-17 at Levi's Stadium on Monday night and is 6-0 for the first time since 2019. It led 23-3 with 5:56 left in the third quarter, and from there the offense ran nine plays on three possessions without a first down while Washington ran 40 and scored twice. Four of Washington's first downs came by penalty, two of them wiping out a third-down incompletion and a fourth-down sack. Malik Mustapha broke up a fourth-and-3 pass at the 17 with two minutes left, and Keion White and Romello Height sacked Jayden Daniels on the final play. Mike Evans caught three passes for 94 yards and left with 1:10 in the first half with the Achilles soreness that kept him out of practice all week. Brock Purdy passed 1,500 career attempts on the opening drive, and the club's notes list him first in career passer rating. Jaden Dugger led the team with 11 tackles. Luke Gifford and Upton Stout also left and did not return.

Sam KezarOct 20, 20265 min read

On the record

Called Shots →
OpenJul 26, 2026

Brandon Aiyuk does not take a regular-season snap for any NFL team in the 2026 season.

Binary and league-wide rather than 49ers-only, so a trade does not muddy the verdict. Scoreable from official participation data.

Latest on the 49ers

The whole beat →
Robinson and West could return after the bye to a 49ers 53 with no room
49ers Notebook

Robinson and West could return after the bye to a 49ers 53 with no room

Kyle Shanahan named eight 49ers with a chance to return after the bye. Six are already on the 53-man roster. Two, wide receiver Demarcus Robinson and defensive lineman C.J. West, are on injured reserve, and each needs a roster spot that does not exist yet. The club's roster page on Thursday listed 53 active players, 14 on injured reserve, one on PUP and 17 on the practice squad. Of the six players released or waived from the 53 in October, four were defensive linemen, and three of those men are back on the practice squad.

Sam KezarOct 29, 20263 min read
DeForest Buckner has written two goodbyes, and the second one apologized
DeForest Buckner

DeForest Buckner has written two goodbyes, and the second one apologized

DeForest Buckner, born in Waianae, Hawaii, and drafted seventh overall by San Francisco in 2016, started all 63 games he played for the 49ers and was traded to Indianapolis for the 13th pick in March 2020, weeks after Super Bowl LIV. He played 95 games for the Colts, who reached the playoffs once in that time and lost at Buffalo. He came back from neck surgery for the 2026 season, and on October 27 the Colts, 2-5, traded him back to San Francisco for a 2027 fourth-round pick. His farewell to Indianapolis, posted October 28, ends with an apology.

Posey ThompsonOct 28, 20268 min read
Jack Jones is the roster spot the Buckner trade cost
49ers Notebook

Jack Jones is the roster spot the Buckner trade cost

The 49ers announced the DeForest Buckner trade Wednesday afternoon, a 2027 fourth-round pick to Indianapolis, and released cornerback Jack Jones to open the roster spot. Jones was active for all seven games and played 23 of 68 defensive snaps in the loss at Atlanta, per the official game book. The active roster now carries ten defensive linemen and five cornerbacks, and it is full at 53. Nick Wagoner of ESPN said Wednesday he would be surprised if the 49ers made no further move before the Nov. 10 trade deadline.

Sam KezarOct 28, 20263 min read

Earlier on the 49ers

The 49ers never hit Penix, and they gave Atlanta the ball four times
Takeaways

The 49ers never hit Penix, and they gave Atlanta the ball four times

Atlanta beat San Francisco 29-20 at Mercedes-Benz Stadium on Sunday, the 49ers' first loss, and they are 6-1 into the bye. San Francisco led 14-3 on the first play of the second quarter and Atlanta scored the next 23 points. The 49ers turned the ball over four times and Atlanta scored 13 points off them; Atlanta did not turn it over. The official game book credits the 49ers' defense with no sack, no quarterback hit and no pass defensed on Michael Penix Jr.'s 34 throws. Atlanta made four first downs by San Francisco penalty, three of them on its 90-yard touchdown drive. Christian McCaffrey left with a thigh injury after the second possession, returned for the third quarter and had 26 yards on six touches afterward. Kaelon Black ran for 60 yards in the first half, scored from 30 yards and lost a fumble one play after Jordan James fumbled. Christian Kirk played 20 snaps in his debut and was not targeted. Eddy Pineiro missed an extra point, his seventh missed kick in 34 tries this season, and Kyle Shanahan said the club would discuss the position on the plane.

Sam KezarOct 26, 20265 min read
Evans is a Monday decision, and without him the 53 has three healthy receivers
49ers Pregame

Evans is a Monday decision, and without him the 53 has three healthy receivers

San Francisco hosts Washington on Monday night at Levi's Stadium, 5:15 p.m. Pacific, on ESPN and ABC. Deebo Samuel is out with a hamstring and Mike Evans did not practice all week with ribs and an Achilles, which leaves Brandin Cooks, Jacob Cowing and Jordan Watkins as the receivers on the 53 without a designation. Christian Kirk is in his practice window off injured reserve and Shanahan would say only that activating him is possible. Nick Bosa sits a fourth straight game. Washington arrives 1-3-1 with Jayden Daniels back from an elbow injury, its leading rusher out, and its backup quarterback out.

Sam KezarOct 19, 20264 min read
The 49ers Could Not Run And Could Not Stop The Run
Preseason Analysis

The 49ers Could Not Run And Could Not Stop The Run

Two days after a 19-13 preseason loss to Tennessee, the box score says San Francisco controlled the game everywhere except where games are decided. Four running backs carried 23 times for 52 yards, 2.3 a carry, while Tennessee ran 31 times for 167, 5.4 a carry. San Francisco needed 322 yards to score 13 points. The club published no participation report, so this is what the gamebook can carry and no more.

Sam KezarAug 15, 20265 min read