---
title: WatchFor security and responsible disclosure policy
description: How WatchFor protects your data, what is in scope for security research, how to report a vulnerability and what to expect back. There is no paid bug bounty.
canonical: https://watchfor.io/docs/security
---

# WatchFor security and responsible disclosure policy

How WatchFor protects your data, what is in scope for security research, how to report a vulnerability and what to expect back. There is no paid bug bounty.

WatchFor watches other people's infrastructure, so the security of our
own is the product. This page is our disclosure policy — the one
`/.well-known/security.txt` points to — and a plain account of how we
protect what you give us.

## Reporting a vulnerability

Email **hello@watchfor.io** with "Security" in the subject. Include the
affected URL or component, steps that reproduce the issue, what an
attacker could gain, and how we can reach you. Encrypted mail is not
required; do not include other people's data in the report.

We answer within five business days with our assessment. If it is a
real issue we tell you when the fix ships, and we credit you here with
your permission. We ask that you give us up to 90 days before publishing,
and that you stop as soon as you can demonstrate the problem.

**There is no paid bug bounty.** We do not pay for reports and do not
negotiate rewards; valid findings are credited, not purchased.

### Rules for testing

- Test only against your own account and workspace (a free plan is
  enough); never read, change or delete another customer's data.
- No denial of service, load testing, spam, mass sign-ups or mass client
  registrations, social engineering, phishing of our users or physical
  attempts.
- Automated scanning is fine on your own workspace, but a scanner's
  output is not a report: show the impact.

Research that follows these rules is welcome. We will not pursue legal
action against good-faith research conducted within them, and we will
work with you rather than against you.

## Scope

In scope: `watchfor.io` (the dashboard, the REST API under `/api/v1`, the
MCP server at `/api/mcp`, the A2A endpoint, the OAuth 2.1 authorization
server), `ingest.watchfor.io`, customer status pages served by WatchFor,
and the [watchfor-agent](https://github.com/watchfor-io/agent) — which has
its own [SECURITY.md](https://github.com/watchfor-io/agent/blob/main/SECURITY.md)
for issues in the agent itself.

Out of scope, or known and by design:

- **Open OAuth client registration** at `/api/auth/mcp/register`. The MCP
  authorization specification relies on RFC 7591 dynamic registration so
  AI clients can connect without a manual app review. Registration
  grants nothing: every authorization goes through a consent screen that
  names the application, says where the browser will be sent and marks
  clients we do not recognise; PKCE is mandatory; redirect URIs must
  match exactly; access tokens expire after an hour and can be revoked
  under *Account settings → Security → Connected apps*. See
  [Authentication](/docs/api/authentication).
- Findings from automated tools without a demonstrated impact: missing or
  "best practice" headers, cookie attributes without an exploit, TLS or
  cipher preferences, version banners, rate-limit observations, email
  SPF/DMARC opinions, clickjacking on pages without state changes,
  self-XSS, logout CSRF, account enumeration on sign-up.
- Anything that needs a compromised device, a malicious browser
  extension or a man-in-the-middle with a trusted certificate authority.
- Services we build on but do not operate (GitHub, Stripe, Cloudflare,
  Resend): report those to their programs.

## How we protect your data

- Everything travels over TLS 1.2 or newer. Probes, the agent and status
  pages make outbound HTTPS connections only; nothing you install listens
  for inbound connections.
- API keys are shown once and stored as SHA-256 hashes; each key carries
  a `read` or `write` scope and can be rotated or revoked in the
  dashboard.
- OAuth 2.1 for AI clients: mandatory PKCE (S256 only), an explicit
  consent screen for every authorization, one-hour access tokens, and a
  Connected apps list where you revoke access.
- Sign-in with a password (hashed, never stored), Google, and optional
  two-factor authentication; active sessions are listed and can be ended
  from any device.
- Agent releases are built from a tagged commit and signed; the
  installer and `watchfor-agent upgrade` verify the signature and the
  checksum before anything is replaced, and the agent runs as an
  unprivileged system user.
- Every query is scoped to your workspace; there is no cross-tenant path
  in the data model. The control database is backed up daily.
- An independent black-box assessment of the public service in September
  2026 found no critical or high-severity issues; the items it did raise
  were fixed.

## Acknowledgements

Researchers who report responsibly are credited here with their
permission. None yet — be the first.

---

Canonical page: https://watchfor.io/docs/security · All docs: https://watchfor.io/docs · Site guide: https://watchfor.io/llms.txt
