Security

A human drives a real browser. Here is exactly how we protect that.

DoubleOh asks something serious of you: that one of your people takes the wheel of a live browser session to fix a stuck agent. That is a security-sensitive action, so this page states plainly what we do, what we never do, and where the boundaries are. No marketing language.

LAST REVIEWEDAugust 2026DISCLOSUREsecurity@doubleoh.aiSCOPEAPI, fix sessions, console

The single most important guarantee: typed text is never recorded. A fix session is exactly where a password gets typed. Our recorder stores screenshots and the shape of each action, a click at these coordinates, a key by name, but for typing it stores only that typing happened. The characters never leave the browser. This is enforced in code, not policy.

What we record, precisely

RECORDED

Screenshots

Frames of the page during the fix, so the compiler can turn what a human did into a reusable procedure.

RECORDED

The shape of actions

A click and its coordinates. A named key such as Tab or Enter. A scroll distance. Enough to understand the steps.

NEVER RECORDED

Typed characters

Passwords, tokens, one-time codes, anything typed. The recorder receives no text for a type action, so there is nothing to leak.

NEVER STORED

Plaintext secrets

API keys and fix tokens are stored only as SHA-256 hashes. The plaintext exists once, in the response that issued it.

Isolation: one customer, one browser

Every API key gets its own dedicated browser container with its own storage volumes. Your logins, cookies, and session state live in your container and are never visible to another customer. Two customers cannot appear in the same recording, and one customer's trouble cannot reach another's session.

Where a fix session can go, and where it cannot

A fix link opens a page your agent was stuck on. Because that URL comes from outside our network, it is validated unconditionally before anything opens:

We test these boundaries against production, not just in a test suite. Pointing a fix at a cloud metadata address or at our own admin API returns the same refusal every time.

The fix link itself

The administrative surface

The API that issues keys and reads the audit trail is not exposed to the internet at all. It answers only on the server's loopback interface, reachable by the operator over an SSH tunnel. A request to it from the public internet is refused before it reaches the application.

Transport and infrastructure

CAPTCHAs and human checks

When an agent hits a CAPTCHA or a "verify you are human" challenge, DoubleOh does exactly what those checks are asking for: it brings a human. We detect the challenge and point your person straight at it in the fix session, where they solve it themselves. We do not defeat, farm out, or automate around human-verification systems, and we never will. A CAPTCHA is the clearest example of a wall that is supposed to need a person, and a reliability layer that respects that is the only kind worth trusting with your agents.

What we are honest about

Two limits worth stating rather than hiding:

Reporting a vulnerability

Email security@doubleoh.ai. We read every report, respond quickly, and credit researchers who disclose responsibly. We would much rather hear it from you than read about it later.

Formal certification such as SOC 2 is on the roadmap. We would rather tell you exactly what we do today than imply an audit we have not completed.