Exploratory AI testing · EU-hosted

Your coding agent believes its own code works. ClickProbe doesn’t.

A second pair of eyes that actually clicks through your app. Claude drives a real browser through a tiny local proxy, explores like a human, and reports the bugs your agent didn’t notice.

No credit card. Runs against localhost.
LIVE / billing.acme.internal / Team settings
Step 14 of ~30 · 04:12 elapsed
Target · Chromium 128 · 1440×900
https://app.acme.example
Settings · Team · Billing

Billing contact

Invoices and payment failure notifications are sent here.

Saved. Your billing contact has been updated.
Click observed at button[type=submit] · y=612
Claude · reasoning
Bug filed
Medium CP-2041 just now
OPEN

Phantom save on “Team billing contact”

PATCH /api/v2/orgs/acme/billing · 200 OK · 0 B

Clicking Save shows a success toast, but the value is discarded on refresh. The PATCH request returns 200 with an empty body; no record is written.

Repro
  1. Open /settings/team → Billing contact
  2. Change email to a new value, click Save
  3. Hard refresh — field reverts to previous value
The gap

Your coding agent believes its own code works.

AI coding agents are confident. They ship. They rarely click through the app they just built. ClickProbe does — exhaustively, patiently, on every PR. Three patterns we find most:

button · disabled-variant
Failure mode · 01

The broken button

Handler wired to the wrong variant. Button renders, clicks do nothing. No console error.

PATCH · 200 · 0 B
Failure mode · 02

The phantom save

Toast says “saved”. Network call returns 200. The value is silently discarded on refresh.

TypeError · uncaught
Failure mode · 03

The silent JS error

Uncaught TypeError only on a specific path. Users see a blank panel; your tests don’t.

How it works

Cloud brain. Local hands.

CLOUD Cloud · Claude Frankfurt · EU Loopback tunnel YOUR MACHINE Your machine · Chromium 127.0.0.1 only
  1. 01

    Install the proxy

    One command. A small Go daemon runs on localhost, serves a tunnel, manages a headless Chromium.

    brew install clickprobe && clickprobe up
  2. 02

    Point it at your app

    Any URL your machine can reach — localhost, a preview deploy, a staging tunnel. No data leaves your network except screenshots and DOM snapshots.

    clickprobe run --target http://localhost:3000
  3. 03

    Watch it explore

    Claude reasons step by step, you watch it click, type, scroll. Every decision is logged. Bugs land in your inbox with repro steps and screenshots.

    → Opens /settings/team → fills form → clicks Save…
The report

Not a stack trace. A bug report.

Every finding includes what was expected, what happened, the exact steps a human could follow to repro, and the AI reasoning trail behind the decision to file it.

Medium CP-2041 just now
OPEN

Phantom save on “Team billing contact”

PATCH /api/v2/orgs/acme/billing · 200 OK · 0 B

Clicking Save shows a success toast, but the value is discarded on refresh. The PATCH request returns 200 with an empty body; no record is written.

Repro
  1. Open /settings/team → Billing contact
  2. Change email to a new value, click Save
  3. Hard refresh — field reverts to previous value
Expected / Actual
Expected Field retains submitted value after reload.
Actual Field reverts; no record persisted server-side.
Integrations

Your coding agent can ask ClickProbe directly.

Expose findings over MCP. Claude Code, Cursor, Windsurf, or your own agent can query the latest run, request a retest, or open a GitHub issue — all in-editor.

claude_desktop_config.json
{
  "mcpServers": {
    "clickprobe": {
      "command": "npx",
      "args": ["-y", "@clickprobe/mcp"],
      "env": { "CLICKPROBE_TOKEN": "sk_prod_..." }
    }
  }
}
.cursor/mcp.json
{
  "servers": {
    "clickprobe": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@clickprobe/mcp"],
      "env": { "CLICKPROBE_TOKEN": "sk_prod_..." }
    }
  }
}
Pricing

Pay for what you test.

No seats tax. No lock-in. VAT shown at checkout.

Solo
€0/ month

Pay-per-session. 1 concurrent session. Community support.

Start free
Pro
€149/ month / project

Unlimited seats. €100 credits. 10 concurrent, 4 h max. Webhooks.

Start 14-day trial
EU-hosted
Frankfurt · Cloudflare EU
GDPR-first
DPA on file · AVV included
Made in Germany
Built in Leipzig
Loopback proxy
Your code never leaves your machine

Start finding the bugs you’re missing.

Ten minutes to your first real finding. Free while you evaluate.

Create a free account