Building permit expiry, progress and renewal rules by jurisdiction
How long a building permit stays valid, what keeps it alive, what it costs to renew once it has lapsed, and how the local rule differs from the model-code section it amends. One record is one rule for one jurisdiction, placed next to the adopted code section it replaces. Answers 'how long is a building permit valid before it expires', 'does an inspection reset the permit clock', 'my building permit expired what do I do', 'building permit renewal fee after expiration', and 'IRC 105.5 permit expiration'. The memorised answer is 180 days and it is wrong in the places people ask about: unincorporated San Diego County allows two years to start work, then requires a passed inspection every 180 days, with an outer life of three years and renewal at one-half of current permit fees — one-quarter if only a final inspection remains. DC's adopted code gives one year to begin, with a 180-day carve-out for residential work and no more than four extensions per permit.
The data
| Jurisdiction | Source type | Permit type | Extension rule | Renewal fee basis | Deadline to start work | Inactivity window | Code citation | Maximum permit life |
|---|---|---|---|---|---|---|---|---|
| Creve Coeur, MO | department page | temporary certificate of occupancy | may be renewed, at the discretion of the building official, every 30 days | a fee of $65 each month until the final building inspection is approved | ||||
| District of Columbia | adopted code | building permit | null and void if the authorized work is not begun and inspected pursuant to Section 109 within one year after the permit is issued | if the authorized work is suspended, abandoned or not inspected pursuant to Section 109 for a period of one year | 105.5 | |||
| District of Columbia | adopted code | building permit — extension of permit | extensions of time not to exceed 180 days per extension. Not more than four extensions of time will be granted to any permit. The code official may issue an extension for a period of 365 days upon demonstration of need at the time of extension application, but, in no event, shall the aggregate extensions of time exceed two years | 105.5.1 Extension of Permit | ||||
| District of Columbia | adopted code | premises deemed to be unsafe or unfit for human occupancy, or abandoned or deteriorated property | unless the permit is extended in accordance with Section 105.5.1 | invalid if the authorized work is not begun within 30 days after the permit is issued | 105.5.1 | completed within six months after the date work is begun | ||
| District of Columbia | adopted code | Residential Code | invalid if the authorized work is not begun within 180 days after the permit is issued | suspended or abandoned for a period of 180 days after the date work is begun as evidenced by lack of continuous work | ||||
| District of Columbia | adopted code | Special Flood Hazard Area | invalid if the authorized work is not begun within 180 days after the permit is issued | suspended or abandoned for a period of 180 days after the date work is begun as evidenced by a lack of continuous work | ||||
| San Diego County | department page | building permit | One-half of current permit fees are due upon renewal unless progress has been made (and approved) so that only a final inspection is needed, then one-quarter of current permit fees are due | it will expire if the work is not started within two years. To meet this requirement, the permittee must call for, and pass a valid inspection | passing a valid inspection at least every 180 days (six months) | Sec. 91.1.105.5.2 | all work must be completed within three years |
Where this came from
Every record above links the page it was taken from and quotes the sentence that states it. These are the 3 sources this dataset was assembled from.
- crevecoeurmo.govhttps://www.crevecoeurmo.gov/86/Sequence-of-Inspections
- up.codeshttps://up.codes/s/expiration-of-permit
- sandiegocounty.govhttps://www.sandiegocounty.gov/content/sdc/pds/bldg-perm-exp.html
Machine-readable
- data.jsonThe whole dataset — every record with its source URL and source quote.
- Open Knowledge Format bundleOne JSON object per line — every record's frontmatter and quoted span exactly as it is held here, in one fetch.
- data.csvThe same records as one flat table, for a spreadsheet or a dataframe. The last four columns are the source URL, the quoted sentence it was read from, the date we last checked it, and which columns are our reading rather than the page's words.
- How this is made and checkedWhat "verified against source" does and does not mean.
From your own code
Same records, same quotes, without scraping the page: refsource is on PyPI and npm. Each value comes back carrying the URL it was read from and the sentence on that page that states it — .source and .quote sit on the value itself rather than in a side channel, so the checking step is available instead of skipped.
pip install refsource
refsource lookup building-permit-validity-and-renewal jurisdiction="Creve Coeur, MO"
npx -y refsource lookup building-permit-validity-and-renewal jurisdiction="Creve Coeur, MO"
Set your AI assistant up to use this
Two files and no account. Put this in .mcp.json at the root of your project — Claude Code, Cursor, Windsurf, VS Code and Codex all read that file — and your assistant can look this dataset up instead of recalling it. The server is remote, keyless and read-only.
{
"mcpServers": {
"referencesource": {
"type": "http",
"url": "https://referencesource.org/mcp"
}
}
}Add to Cursor · or, on the command line: claude mcp add --transport http referencesource https://referencesource.org/mcp --scope project
Then one line in the project's CLAUDE.md or AGENTS.md, so the assistant knows when to reach for it:
When a question needs "Building permit expiry, progress and renewal rules by jurisdiction", call the referencesource MCP server at https://referencesource.org/mcp (tool `search_records`, dataset_slug `building-permit-validity-and-renewal`) instead of answering from memory — every record it returns carries its source URL and a verbatim quote from that page.What each tool does, and the servers built over single registers: Connect your AI assistant.