Screenery / Privacy
Privacy
What Screenery collects, why, where it is kept, who else handles it, and for how long.
Last updated 19 October 2026.
This page covers every part of Screenery: this site (www.screenery.dev), the console and API (app.screenery.dev), image delivery (cdn.screenery.dev), the hosted MCP server (app.screenery.dev/mcp), the screenery command-line tool, the screenery/push GitHub Action, and the Screenery plugin for coding agents.
What we collect
Your account. You sign in with GitHub. Screenery asks GitHub for no extra permissions, so it receives your public profile only. It keeps your GitHub user id, your login, your avatar URL, and your email address if your GitHub profile makes one public. Signing in does not give Screenery access to your code.
Sign-in sessions. The console sets a session cookie on app.screenery.dev. The command-line tool and agents that connect to the MCP server get an access token instead. For each session Screenery keeps a hash of the token, never the token itself, and the name of the app that asked for it (for example the agent host's name).
What you publish. The screenshots, recordings and Playwright traces you push, and what comes with them: asset and channel names, descriptions and tags, the test that took each screenshot (file, line and title), browser and viewport, and the commit, branch and pull request of the build. A Playwright trace records the test session, which can include its network traffic, cookies and page source. Only upload traces from tests that use test data.
CI identity. When the GitHub Action publishes without a stored secret, it proves who it is with a GitHub Actions OIDC token. Screenery checks the token and records the claims GitHub put in it: the repository and its owner, the ref and commit, the workflow, the run id and attempt, the event, the environment, and the GitHub login of the person who started the run. It records a fingerprint of the token, never the token.
The GitHub App. If you install it, Screenery records the installation and which repositories it covers, and receives release, push and pull request events for them. It uses them to move screenshot channels, post the pull request comment and update its check. It does not read your code.
Reviews, comments and settings. Approvals, rejections, comments, ignored changes, rules, webhooks and chat targets you create are stored with the account that made them.
Image delivery. Each image or video served from cdn.screenery.dev is counted: which project, asset and version, how many bytes, the response status, the host name of the referring site (never its path), and a two-letter country code. Screenery uses these counts for usage limits and to tell you which screenshots are still being read. It does not store your IP address with them.
Usage analytics. The console on app.screenery.dev uses Google Analytics to count page views. Each page view is sent as the page's pattern, such as /:org/:project/builds, never the real address, so no organization, project or screenshot name is sent. The sign-in code, authorization and invitation pages send nothing. Google Analytics sets its own cookies and receives the technical details any website gets from your browser. This site, www.screenery.dev, has no analytics, and its fonts are hosted here.
Logs and abuse protection. Requests are logged with an id, the method and the address with any credential in it removed, so a failure can be traced. Requests made without signing in are rate-limited by network address. Those counters are deleted within the hour.
How we use it
- To run Screenery: sign you in, store and serve what you publish, and show who did what in a project.
- To enforce plan limits and protect the service from abuse.
- To tell the people running Screenery that a new account has signed up.
- To find and fix failures.
We do not sell your data, and we do not use it for advertising.
Where it is stored, and who else handles it
- Netlify hosts the console and the API. Account, project, build and review records are kept in a Postgres database that Netlify provides through Neon.
- Cloudflare runs DNS, this site and image delivery. The screenshots, recordings and traces you push are stored in Cloudflare R2, and delivery counts are recorded in Cloudflare.
- GitHub provides sign-in, the GitHub App and the OIDC tokens CI uses.
- Google receives the console's page views, as described above.
- Slack may receive a short note naming a new account's GitHub login and public email when it first signs in. This goes only to the people running Screenery.
- Destinations you choose. Webhooks and chat targets you add get the events you route to them. Public screenshots can be read by anyone with the URL; that is what public means here. Unlisted ones need a signed URL, and private ones need a token.
- screenshotit.app, only when you run screenery clip on a page URL where Playwright is not installed: the address of the page you asked to capture is sent there to take the picture.
How long it is kept
- Screenshots, their versions and each channel's history are kept for as long as the project exists.
- An upload that never finishes, and a trace no screenshot version points to, is deleted after about a day.
- A console session ends 14 days after you sign in. A session for the command-line tool or an agent ends after 90 days without use, and after a year at most. The record of a session is deleted a week after it ends.
- Cloudflare keeps the per-request delivery counts for 90 days.
- Rate-limit counters are deleted within the hour.
There is no self-serve way to delete an account or a project yet. To have yours deleted, contact us (below). You can revoke tokens in the console, uninstall the GitHub App in GitHub's settings, and remove Screenery's access to your GitHub account under GitHub's Settings → Applications.
Agents and the plugin
An agent connected to the hosted MCP server acts with your account, through an access token you approved on the consent screen. What it sends is what the tools say: project names, the list of files to publish (names, sizes and SHA-256 hashes), and the files themselves, which it uploads straight to storage. The Screenery plugin's skills tell the agent to run npx screenery, which downloads the command-line tool from npm, and to add the screenery/push@v1 step to your CI. Both send the same data described above.
Contact
Questions, and requests to see, correct or delete your data: [contact address not yet published].
Changes
When this page changes, the date at the top changes with it.