Detection

AI Cheating Detection for Online Exams

Identify AI-assisted misconduct and unauthorized tools with browser-native integrity monitoring.

AI cheating detectionChatGPT cheating examsexam AI monitoring
Network interception

Flags requests to ChatGPT, Claude, Gemini, and 40+ AI domains — locally, without sending URLs to any server.

On-device analysis

Detection runs in WebAssembly in the candidate's browser. No video upload required.

Reviewer evidence

Structured event timelines and trust scores for proportionate, contestable decisions.

The new cheating landscape

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.

What ProctorSafe detects

AI extension and network interception

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.

Virtual camera detection

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.

Remote desktop and screen sharing

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.

Second-speaker voice detection

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 switching and focus loss

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.

Text entered without typing

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.

Software pasting from outside

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.

Answer choices selected without pointer movement

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.

Synthetic typing bursts

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.

Local detection, minimal data collection

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.

Trust score: signal aggregation for reviewers

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.

Evidence for reviewers, not automated punishment

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.

Learn more

Frequently Asked Questions

Common questions about privacy, compliance, and integration.

Yes. ProctorSafe intercepts fetch and XMLHttpRequest calls and matches them against a domain blocklist covering ChatGPT, Claude, Gemini, Copilot, and similar services. Only the domain is checked — full URLs never leave the device.

Ready to Get Started?

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.