Identify AI-assisted misconduct and unauthorized tools with browser-native integrity monitoring.
Flags requests to ChatGPT, Claude, Gemini, and 40+ AI domains — locally, without sending URLs to any server.
Detection runs in WebAssembly in the candidate's browser. No video upload required.
Structured event timelines and trust scores for proportionate, contestable decisions.
Generative AI tools have changed assessment security. Candidates can access AI assistants through multiple vectors — browser extensions, network calls to AI APIs, remote desktop sessions controlled by a second person, or virtual cameras feeding live video to an AI tool. Legacy proctoring that focuses solely on video recording misses most of these.
ProctorSafe patches fetch and XMLHttpRequest on the page and matches outbound requests against a domain blocklist. Covered services include ChatGPT, Claude (Anthropic), Gemini, Microsoft Copilot, Perplexity, and similar AI tools. When a match occurs, a NETWORK_SUSPECT event is emitted with the domain, method, and timestamp — but never the full URL, which may contain sensitive exam content.
Candidates routing their webcam through OBS Virtual Camera, ManyCam, SplitCam, or AnyDesk virtual devices can feed the camera feed to a second person or AI tool in real time. ProctorSafe enumerates videoinput device labels at session start and flags labels matching known virtual camera software, emitting a VIRTUAL_CAMERA_DETECTED event.
ProctorSafe intercepts getDisplayMedia (screen sharing) and monitors device labels for remote desktop tools including TeamViewer and AnyDesk. A REMOTE_DESKTOP_SUSPECTED or SCREEN_SHARING_DETECTED event is emitted with source metadata.
During the preflight check, ProctorSafe enrolls a voice profile using log-mel spectral analysis and median F0 (fundamental frequency) pitch gating. If a second voice is detected during the exam — median spectral distance or F0 delta exceeding configurable thresholds — a SECOND_SPEAKER_SUSPECTED event fires. Audio analysis runs entirely on-device; no audio is transmitted.
TAB_BLUR and TAB_FOCUS events are emitted with timestamped durations. Brief accidental switches are filtered; sustained navigation away is weighted in the trust score.
Automation tools, browser extensions, and assistive software can write into an answer field directly, with no key press behind it. ProctorSafe watches text-entry fields for those insertions — text set by a script, dispatched through a DevTools insertText, or committed by an input-method editor. A TEXT_INSERTED_WITHOUT_TYPING event is emitted with character counts only — typed, inserted, pasted, composed, replaced, and scripted — never the text itself.
ProctorSafe keeps an in-memory ring of fingerprints for text copied on the exam page and compares pastes against it on the device. When a paste of twenty or more characters was never copied on the page — the shape left by copying a question to an assistant in another tab, window or app and pasting the answer back — an EXTERNAL_PASTE event is emitted alongside the existing COPY_PASTE, with the verdict and the candidate's absence timings (awayMs, sinceReturnMs, pageCopyBeforeAwayMs); only the length and the verdict leave the device, never the pasted text.
Multiple-choice answers are clicks, so neither typing nor paste detection sees an agent answering them. ProctorSafe watches how clicks land on answer choices — radio buttons, checkboxes, dropdowns, and elements with an equivalent ARIA role — for two signatures of automation: clicks dispatched by script, and clicks by a pointer that jumped onto the target instead of moving onto it. A CHOICE_SELECTED_WITHOUT_MOVEMENT event is emitted at the end of the section with counts only — scriptedClicks and teleportedClicks, plus total choiceClicks for context — never the pointer positions.
Some automation tools type into a field directly. The keystrokes arrive in a run faster than a hand can release them. When such a run reaches eight or more keys, ProctorSafe emits a single SYNTHETIC_TYPING_BURST event with the run's keyCount, durationMs, and the median times between and during keystrokes (medianFlightMs, medianDwellMs) — never the key content, and once per run rather than per key, so a fast typist does not trip it.
Unlike cloud-based proctoring that uploads full video for post-hoc analysis, ProctorSafe runs detection locally in the browser via WebAssembly. The Rust-compiled WASM module handles face detection and gaze tracking without transmitting raw video or audio. Only structured event metadata — timestamps, event types, and severity scores — is sent to the review server.
All detected events feed a 0–100 Integrity Budget computed server-side by a deterministic, rule-based algorithm. Events are weighted by severity (CRITICAL / MAJOR / MINOR) and normalized by session duration. Reviewers see a single score alongside a ranked event timeline — enabling rapid triage of high-risk sessions without watching hours of footage.
Every detection event is logged with timestamps and severity. Reviewers access structured timelines and trust scores — supporting proportionate, contestable decisions aligned with your academic integrity policies.
Read our article on detecting generative AI cheating, try the demo, or contact us.
Dive deeper with guides from our articles library.
Why webcam-only proctoring is no longer enough, and which integrity signals help against generative AI assistance.
Read articleTechnical architectureLatency, reliability, and privacy trade-offs between edge (on-device) and cloud-based proctoring architectures.
Read articlePedagogy & ethicsHow to design and operate proctoring that avoids biased outcomes, documents limitations, and keeps humans accountable.
Read articleCommon questions about privacy, compliance, and integration.
Start a free trial and run real sessions against your own application, try the interactive demo in your browser, or contact us for a walkthrough tailored to your program.