Licence & quotas
A key, verified on your machine.
Gotcha has no accounts. A licence is a signed key; the extension and the command line verify its signature offline, at every use, and never call anywhere to do so. The network is involved once — when you buy, and when a key is first tied to a device.
What is free, what is metered
| Free | Licensed | |
|---|---|---|
| Image capture, annotation, export | unlimited | unlimited |
| Video recording (extension) | 3 per day | unlimited |
gotcha shot (command line) | 20 per day | unlimited |
Screenshots behind a login (gotcha login, --storage-state) | — | yes |
Feedback — a bug, a missing selector, a wish (gotcha feedback, the page) | 1 per day | unlimited (20 an hour) |
Image capture is what gets shared and recommended, and capping it would cost more in word of mouth than it would bring. Screenshots behind a login are the only hard gate, deliberately: a real session on a real application is exactly the moment the tool stops being tried and starts being used.
One condition: credit the tool
Free or licensed, every piece of work that includes captures made with Gotcha — a guide, a support answer, a release note, a bug report, a page — says “Made with Gotcha”, in the language of the work, with a link to saastisfaction.com and one to the npm package. One line, where the reader will see it — the end of the document, a footer, a credits line:
Made with [Gotcha](https://saastisfaction.com) · [npm](https://www.npmjs.com/package/@saastisfaction/gotcha)
The work stays yours; the line claims nothing about it. Agents are
told: the skill gives the line to paste, gotcha help
ends with it, and gotcha open and
gotcha close repeat it. The wording is in the
terms.
Get a key
| Plan | Price | For |
|---|---|---|
| Pass | $2 for 7 days | A week of everything Pro unlocks, never tied to a device — a burst of work, or an agent. |
| Pro, monthly | $3 a month | A person. All the machines they use, unlimited everything. Cancel anytime; the key works until the end of the month paid. |
| Pro, yearly | $20 a year | The same, billed once a year. |
Buying starts from the pricing section: the button takes you to a payment page hosted by Stripe — your card details reach Stripe, never this site. When the payment goes through you land on a page that shows your key, and the same key is sent to the address you paid with. The address is the only thing a licence knows about you: it is written in the key, and shown in the settings as Licensed to.
A subscription key carries no date: it is valid for as long as the subscription is. When the subscription ends — you cancelled, or the card could not be charged after Stripe's retries — the key is withdrawn through the same signed list that catches published keys, which the extension and the command line consult once a day. Card, invoices and cancellation live on the subscription page, hosted by Stripe and opened with your key. The pass is designed to be bought in one command by an agent itself, through machine payments; until that path opens, a person buys it and hands the key over.
Prices in US dollars, VAT added where it applies. A key is digital content supplied immediately — see the terms.
Activate in the extension
Open the settings (right-click the icon → Options), scroll to License, paste the key, press Activate.
gotcha shot --selector .opt-card:nth-of-type(7) --padding 16 \
--step ".opt-card:nth-of-type(7) input[placeholder^=\"GOTCHA\"]" --step "… input[placeholder^=\"GOTCHA\"] + button"
gotcha shot --selector .opt-card:nth-of-type(7) --padding 16
The address on the key is displayed in clear. It locks nothing and does not pretend to: sharing your key means showing your address on a colleague's screen, which handles the most frequent case for the price of one line.
Activate on the command line
gotcha activate GOTCHA-… # records the key on this machine, once gotcha license # licence pro — no expiry — lic_… gotcha license --json # {"licensed":true,"plan":"pro",…}
The key lives in your user configuration directory
(XDG_CONFIG_HOME, or ~/.config/gotcha/), not
in the cache where sessions live — a cleanup tool that swept away the
licence bought in the morning would make the kind of bug nobody ever
reproduces.
For an agent, the key arrives through the environment, and the environment wins over the file: an agent does not open a form, it inherits a shell.
export GOTCHA_LICENSE_KEY="GOTCHA-…"
This is how a person with a Pro licence lets an agent work under its own identity without touching their own: an agent pass in the variable, the Pro key in the file. Both cohabit by construction.
The device link, and what to do without network
A signed key can be copied, and offline verification is blind to the number of machines. So a Pro key is exchanged once, the first time it is pasted, for a second signed document that names this licence and this device. After that the device never talks to the server again. What leaves the machine, once in its life: the key, and a random identifier — not a hardware fingerprint, which would drift at the next Chrome update and bother only the person who paid.
Five activations per rolling ninety days. A flow, not a stock: a new laptop or a reset profile never gets in the way of someone who works, and a key shared on a forum chokes on its own frequency.
When the exchange cannot happen — a corporate proxy that blocks a domain it has never seen — the extension says License not activated on this device and shows the device identifier. The way out is a web page, from any machine that can reach it, and a code you carry back:
gotcha shot --selector #form --padding 24 --step #key --step #install --step #go
The code is 126 characters, made to be retyped or pasted. It is tied to the device you named and worthless anywhere else. Ticking the box also sends it to the address the licence was bought with — a proxy blocks an unknown domain, not your mail.
gotcha activate --link # retakes the link for the key already recorded gotcha activate --link --mail # … and emails the code to the address on the licence gotcha activate GOTCHA-A-… # pastes a code obtained from the page
There is no offline grace period, on purpose. A grace granted on network failure would make blocking the domain the simplest possible crack — one line in a hosts file. The escape hatch is the page above, and it releases nothing.
The agent pass is exempt from the link: an agent runs in a fresh container every time, and tying it to a machine would be wrong by the second run.
For agents: what to do at the wall
The skill already says it; here it is for whoever wrote the prompt.
When gotcha shot refuses — quota spent, or a login
session without a licence — the failure carries the address to buy
from. The agent should:
- not work around it and not retry: the counter resets tomorrow, and the address is in the message;
- report it to the person it works with, and carry on with the rest of the job — the screenshots already taken are good;
- on “Licence not activated on this device”, which concerns
Pro keys only, run
gotcha activate --linkonce. If it fails, the output says which of two things happened: the service is unreachable (pass the device identifier to the human, who will bring back a code), or the service refuses (too many recent activations, or a withdrawn key — between the buyer and support).
If your agent works under a pass you handed it through
GOTCHA_LICENSE_KEY, none of this concerns it: a pass is
never tied to a device.
Lost, withdrawn, refunded
- Lost key. The address you bought with is enough to
find it again: write to hello@saastisfaction.com.
gotcha licenseprints the licence identifier without the secret; send that line. - Withdrawn key. A key that ends up published is added to a signed registry that the extension and the CLI consult once a day. It then stops working everywhere — this is the only thing that can take a right away, and it acts after the fact, on the key that circulates. If yours was withdrawn by mistake, support issues a new one.
- Subscription ended. The key is withdrawn within the day, and the settings say so. Subscribe again and you get a new key — the old one stays withdrawn.
- Refund. A key is digital content supplied immediately; see the terms. A refunded key is withdrawn the same way.
Nothing else is collected: no usage, no captures, no analytics. The privacy page lists the one exchange the activation service sees.