Security, as it is today.
This page lists only what is true now. The second list is what we don’t have, so you can decide with the full picture.
Where is my data stored?
On a server in Vienna, Austria (EU), behind Cloudflare. When a run fails or a test is written, AI requests go through the Vercel AI Gateway to Google LLC (Gemini on Google Cloud Vertex AI) (location: United States / global Google Cloud regions), TypeSafe AI (Jev) (location: not published by the provider), or DigitalOcean, LLC (location: United States). None is pinned to the EU, and each has a zero-data-retention agreement with the gateway. Details are under Hosting and AI region below.
In place
- Your app’s credentialsIn place
Test-account passwords and 2FA secrets are encrypted at rest with AES-256-GCM, using a key derived with scrypt and a fresh salt and IV per entry. They are decrypted only at the moment a run uses them.
- What we store from runsIn place
Before run evidence is stored, we scrub known secrets, auth headers, cookies, tokens and credentials in URLs from the text we keep (page snapshots, console and network logs). Generated test code that contains a hard-coded secret is rejected.
Run evidence (screenshots, videos, page snapshots, logs) is deleted after 30, 90 or 180 days depending on your plan, except evidence still waiting for your review. Results and run history stay while the workspace exists.
Each app can turn screenshots and video off entirely: images can’t be scrubbed of what the page showed. Steps, console and network logs are still kept.
- What the AI seesIn place
While writing a test: the pages of your app it visits, as scrubbed accessibility snapshots, and your description.
When a run fails: the scrubbed error text and a page snapshot, to work out why and propose a fix.
When a run passes: nothing. A passing run is plain Playwright and makes no AI calls.
Models are reached through the Vercel AI Gateway, pinned to named providers: Gemini only through Google Vertex AI, and the Jev triage model only through TypeSafe AI or DigitalOcean. Each has a zero-data-retention agreement with the gateway, and none trains on your data. The gateway keeps no prompts either. The full list is on the sub-processors page.
- What the AI can doIn place
The agent drives a browser through an allowlist of commands. It can’t read files from our servers, and it can upload only files you attached to the test.
Browsers we run can’t reach private, link-local or cloud-metadata addresses. Hosts are checked again after DNS resolution.
Generated test code runs in a separate sandbox for each job, with no network except through our egress proxy.
- Your accountIn place
Passwords are hashed with argon2id. Sign-in, sign-up and password reset are rate-limited; sign-up and reset are behind a Cloudflare Turnstile check, and every account verifies its email before it can sign in.
Workspaces have Owner, Admin and Member roles. The session cookie is host-only and not readable by scripts, and every state-changing request is checked for its origin.
- Isolation between customersIn place
Every request is scoped to your workspace from your verified session, never from anything the browser sends. Screenshots and other artifacts are served through signed links that expire after 15 minutes.
- HostingIn place
A netcup root server (virtual, dedicated cores) in Vienna, Austria, behind Cloudflare. The database, the encrypted credential store and the server configuration are backed up every night, encrypted, to a separate storage account, and kept for 30 days. A restore drill checks that they work.
- Status pageIn place
Uptime and incidents are public at status.testwatch.dev, hosted off our servers.
- Your data, your callIn place
Download your runs, results and evidence as JSON at any time (Settings → Data & privacy), and your tests as a runnable Playwright project (Export suite).
Delete a workspace or your account yourself. A deleted workspace can be restored for 7 days; then its data, files and saved logins are purged. Backups are overwritten within 30 days.
Not in place
- CertificationsNot in place
We are not SOC 2 or ISO 27001 certified.
- UptimeNot in place
There is no SLA, and the service runs on a single server.
- AI regionNot in place
AI requests go through the Vercel AI Gateway to Google LLC (Gemini on Google Cloud Vertex AI) (location: United States / global Google Cloud regions), TypeSafe AI (Jev) (location: not published by the provider), or DigitalOcean, LLC (location: United States). None is pinned to the EU, and each has a zero-data-retention agreement with the gateway.
Allow-listing our test browsers
Test browsers connect from one fixed IPv4 address. Email hello@testwatch.dev for it; we email workspace owners 30 days before it changes.
If something goes wrong
We follow a written incident and breach procedure. If a security incident affects your data, we tell your workspace owner without undue delay and within 48 hours where we can, as the data processing agreement sets out.
Documents for your review
Our data processing agreement, sub-processor list and privacy notice are public. For a security questionnaire or our record of processing activities, email security@testwatch.dev.
Report a vulnerability
Email security@testwatch.dev. Our security.txt has the details.
Report misuse
Is a TestWatch workspace running tests against a site it doesn't own? Email abuse@testwatch.dev with the site and the time. We can pause a workspace while we look into it.