// Platform — Privacy & security

Private by default. Only what you need.

Inputs are masked before they leave the page, data is scrubbed server-side, and every customer's data stays isolated to its own tenant.

Masked on the page

Everything typed is masked by default — you opt fields out, not in. Passwords, cards and one-time codes are hard-blocked. What never leaves the browser can never leak.

Scrubbed on the server

Captured payloads are scrubbed again on ingest, and the AI only ever sees a size-budgeted, scrubbed slice.

Isolated per tenant

Every token is scoped to one project, encrypted in transit and at rest. A cross-tenant ID doesn't error — it simply doesn't exist.

// You draw the lines

Redact anything.

Beyond the defaults, you decide what Rebase can see. Mark any element with a single data attribute and it never appears in a capture — not in the screenshot, not in the context.

  • Masked before memory — values become • before the buffer, and in screenshots
  • data-rebase-mask, data-rebase-block and data-rebase-unmask
  • Honors the masking you set for Hotjar, FullStory, Sentry or PostHog
Capture preview · acme.comcheckout

What Rebase actually sees

Masked client-side
card number•••• •••• •••• ••••
password••••••••
phone••• ••• ••••
element#pay-now-button
console2 errors · captured

redacted before anything leaves the page

// The boring guarantees

In writing, not in spirit.

No session video, no DOM replay, no keystroke log — capture is a bounded rolling buffer, not a recording of your users. And the paperwork is live: privacy policy, terms, DPA, subprocessor list, cookie policy, AI policy and a compliance guide.

  • Encrypted in transit and at rest — never used to train models
  • Response bodies are never captured; request bodies are opt-in
  • Screenshots re-encoded server-side, served via 10-minute signed URLs

// The details

The privacy posture. At a glance.

  • Passwords, card numbers and one-time codes are hard-blocked
  • Everything typed is masked by default — opt out, not in
  • Redact anything else: data attributes plus a selector list
  • Hard tenant isolation — a cross-tenant ID is a 404
  • Screenshots deleted after 90 days, served via signed URLs
  • Passwordless sign-in: a 6-character code, 15-minute life, 5 attempts
  • Rotating refresh tokens that detect theft and burn the chain
  • An isolated shadow root that fails closed on malformed auth

Frequently asked questions

Have more questions? Contact us

All data is encrypted in transit and at rest, and we never train models on your data. Sign-in is passwordless, access tokens live 15 minutes in memory, and nothing rides on cookies — so classic CSRF doesn't apply.

No. There is no session video, no DOM replay and no keystroke log. Capture is a bounded rolling buffer — the last 50 events, errors and requests — merged into a session timeline.

Everything typed is masked by default and sensitive fields are hard-blocked. Beyond that, data-rebase-mask masks any element, data-rebase-block drops a whole subtree, and a selector list covers the rest — it never appears in a capture or a screenshot.

Twice. Values are masked in the browser before they ever enter the capture buffer, and payloads are scrubbed again server-side before storage. The AI sees only a size-budgeted, scrubbed slice.

// Keep exploring

The rest of the platform. It all works together.

Start shipping feedback faster.

Start your 7-day free trial.