[](https://github.com/devacc8/curfew-extension/actions/workflows/ci.yml)
[](https://chromewebstore.google.com/detail/curfew/obnikdokealeimpbhfbjhpdmfcgbgcje)
[](LICENSE)


[Why](#why-willpower-is-not-a-plan) · [Willpower Protection](#willpower-protection) · [Features](#features) · [Privacy](#privacy) · [Development](#development)
There is no shortage of extensions that limit how long you spend on a site. They share one weakness: you can switch them off with a click. So the whole thing rests on willpower, and willpower is exactly what ran out ten minutes ago, when you are deep in a feed and want one more scroll. A budget you can remove in one click is a budget you will remove.
So I put a puzzle in front of every way out. Want to keep scrolling after the budget is
gone? Solve (79) × 7 + 77 + 61 + 65 = ? first. Want to disable the budget, delete the
site, or import a config with looser rules? Same puzzle. The part of you that wanted the
feed now has to do arithmetic, and that is the whole trick: in practice, it gives up.
And you keep control. This was never meant to be a jail. When something genuinely needs to change, you will solve the puzzle, and the fact that you did is the point: the decision became deliberate instead of automatic. Adding sites and blocking them stays free, because those are the directions that help you.
Call it a prosthetic for willpower. It does not make you disciplined, and it does not pretend to. It puts one small piece of structure exactly where the discipline runs out, and it comes off when you genuinely decide to take it off.
The rest of the extension is the boring part that makes the lock worth having: real budgets, enforced for real.
Optional mode for the hard days. When it is on, every permissive change asks you to solve a challenge first:
(79) × 7 + 77 + 61 + 65 = ?. Five to seven terms,
brackets, two-digit numbers, a fresh one on every attempt, so a remembered answer is
worthlessWhat it gates:
What stays free: adding sites, editing patterns, blocking, and tightening a limit (a smaller budget, a longer cooldown, a shorter session limit). The lock only guards the direction you regret.

x.com exactly or *.reddit.com with
subdomains; minutes per day, reset at local midnight
At install the browser shows zero warnings: the extension gets access only to the sites you add, one prompt per site, revocable at any time.
The full policy, the same text the Chrome Web Store listing links to: PRIVACY.md.
chrome.storage.local; the only bytes out are a
manual export file you createchrome://extensionsFrom the Chrome Web Store:
Install Curfew on Chrome 121 or newer, or any Chromium browser that takes Chrome extensions.
From source (Chrome 121+):
git clone https://github.com/devacc8/curfew-extension.git
cd curfew-extension
npm ci
Then: chrome://extensions → Developer mode → Load unpacked →
select the curfew-extension folder.
npm test # eslint + tsc --noEmit + unit tests (node --test)
npm run smoke # E2E: real Chrome clicks through the protection flows
npm run package # build the Chrome Web Store zip into dist/
npm run capture # regenerate store screenshots + README demo gif
npm run promo # regenerate the store promo tiles
npm run gen:icons # regenerate icons
The nontrivial logic (time math, pattern grammar, budget decisions, puzzle
and equation generators) lives in pure modules under src/common/ and is
fully unit-tested; security invariants (permission allowlist, no network
calls, web-accessible surface) are enforced by tests as well.
Deep design documents: