Visual Assist (Co-browse) Security
Zero-knowledge by design,
not by policy.
Visual Assist sessions are end-to-end encrypted using ECDH key exchange and AES-256-GCM. Your page content is never readable by our servers. There is no session recording, no content storage, and nothing to breach.
How it works
End-to-end encrypted in three steps.
Every co-browse session performs a fresh key exchange. No keys are ever reused.
Key exchange
Both the visitor's browser and the agent's browser generate ephemeral ECDH P-256 keypairs. They exchange public keys through our server. Private keys never leave the browser.
Key derivation
Each side independently derives an identical shared secret using ECDH, then derives the session encryption key using HKDF-SHA-256 with a unique per-session salt.
Encrypted streaming
All page content is encrypted with AES-256-GCM before transmission. Every message uses a fresh random IV and includes an authentication tag to detect tampering.
Zero knowledge
What the server sees vs. what it doesn't.
Our server routes encrypted payloads but cannot decrypt them. Here's exactly what's visible at each layer.
- Page HTML, CSS, and text content
- User input and form data
- Console logs and errors
- Network request/response bodies
- Annotations and drawings
- Cursor positions and interactions
- ECDH private keys
- AES session keys
- Session ID and team ID
- Session start/end timestamps
- That events are flowing (not content)
- Visitor consent status
Cryptographic standards
NIST-approved. No custom crypto.
All cryptographic operations use the W3C Web Crypto API backed by platform-native implementations. No third-party cryptographic libraries.
Key Exchange
ECDH P-256
NIST FIPS 186-4
Key Derivation
HKDF-SHA-256
NIST SP 800-56C
Bulk Encryption
AES-256-GCM
NIST SP 800-38D
Channel Auth
HMAC-SHA-256
FIPS 198-1
Key Exchange Protocol
Fresh keys. Every session.
Ephemeral ECDH keypairs are generated per session. The server relays wrapped keys but cannot unwrap them.
No session recording
Nothing to subpoena. Nothing to breach.
Visual Assist is live-only by design. When a session ends, all in-memory state is discarded. There is no replay, no server-side buffer, and no persistent storage of encrypted payloads.
- No session replay capability
- No server-side content buffer
- No disk writes of session data
- No data retention of page content
- Session metadata retained for 90 days (audit only)
Beyond viewing
See their page. Debug their problems.
Visual Assist isn't just a screen viewer. Built-in developer tools give agents the same debugging power as the visitor's own browser — without asking them to open DevTools.
Console
Stream the visitor's JavaScript errors, warnings, and unhandled exceptions in real time. No more asking "do you see any errors?" — you already know.
Network
Record the visitor's API calls with method, status, timing, and response size. Spot the failing endpoint or slow request without a screen share.
Annotations
Draw, highlight, and point directly on the visitor's page. Guide them visually instead of describing where to click. Strokes render live on both sides.
Remote control
Click, scroll, and type on the visitor's page as if you were sitting at their desk. Requires separate interact consent — fully logged and revocable at any time.
Multi-agent
Multiple agents can cobrowse the same visitor simultaneously. Each agent maintains an independent encrypted channel — no shared keys, no key leakage between agents.
Access controls
Consent, authentication, and authorization.
Multiple layers of access control govern who can initiate sessions and what level of access they have.
Visitor consent
Configurable consent mode. Require explicit visitor approval before viewing, or use silent mode for seamless support. View and interact consent are independent toggles.
Channel authentication
Time-windowed HMAC-SHA-256 tokens with constant-time comparison. Strict channel format validation prevents injection.
Role-based access
Per-agent Visual Assist permission. Organization admins, team admins, and agents have distinct access levels.
Element blocking
Administrators designate page elements hidden from agents. Blocked content is excluded before encryption and never leaves the visitor's browser.
Session lifecycle
Automatic timeout after 30 minutes of inactivity. Stale session cleanup at 2 hours. Reconnection grace periods prevent premature termination.
Rate limiting
Per-connection event limits and per-IP connection caps. Message size limits and protocol validation on all endpoints.
Defense in depth
Two layers of encryption. Independent.
All connections use TLS for transport encryption. On top of that, Visual Assist adds application-layer AES-256-GCM encryption. Compromising TLS alone does not expose page content.
Industry comparison
How helpr compares.
Most co-browse solutions rely on TLS only and store session recordings server-side.
| helpr | Typical solutions | |
|---|---|---|
| Encryption | E2E AES-256-GCM | TLS only (server decrypts) |
| Session recording | None (by design) | Server-side recording |
| Server content access | Zero-knowledge | Full access |
| Key management | Ephemeral per-session | Shared or server-managed |
| Data at rest | None | Recordings stored |
| Consent model | Configurable (explicit or silent) | Varies |
FAQ
Frequently asked questions.
Can helpr see our customers' screens?
Does helpr record co-browse sessions?
Is helpr GDPR compliant?
Does the visitor need to install anything?
Does helpr require visitor consent?
Can agents control the visitor's browser?
What annotation tools are available during a session?
What data leaves the visitor's browser?
Can we mask or exclude sensitive fields?
.credit-card-field, #ssn-input) for more precise control. Blocked elements are never captured, never encrypted, and never sent — they are excluded at the source before anything leaves the visitor's browser.How does helpr handle multiple agents in one session?
What happens if our server is compromised?
Does helpr work with Content Security Policy (CSP)?
connect-src wss://ws.helpr.so and connect-src wss://assist.helpr.so in your CSP. We provide exact directives in our developer documentation. The widget does not require unsafe-eval.Can we get a penetration test or security audit?
Questions? Need an audit?
Contact our security team for architecture reviews, compliance documentation, or penetration test coordination.