Policy reference
The complete policy reference: every preflight and proctoring option, defaults, derived rules, and v2 migration.
On this page
Every proctoring behaviour — each preflight check and each runtime observer — is driven by one policy object. You normally pick a preset and adjust with :policy-overrides; this page is the complete field-by-field reference for what you can set and what the resolved policy means.
The policy separates checks performed before the assessment under preflight from evidence and signals collected during it under proctoring. The Default column is the effective value when you set nothing — i.e. the standard preset, which is the base whether or not you pass preset. (Pick basic or strict to shift the defaults — see the preset table.)
This policy is the source of truth. webcam.mode selects exactly one evidence strategy: none, snapshots, or recording. Active webcam modes automatically enable face analysis; gaze and identityMismatch default to true and can be explicitly disabled.
The standard policy, written out
Developer-authored standard policy (derived camera, face-photo, and screen-share preflight fields are intentionally omitted):
{
"policyVersion": 3,
"preset": "standard",
"preflight": {
"enabled": true,
"developmentMode": false,
"browser": true,
"microphone": true,
"speaker": true,
Threshold values you don't author fall back to engine defaults — e.g. allowExternalMonitor defaults to false at the engine level without appearing in the preset object. See Thresholds for the full set.
The resolved/stored audit policy adds preflight.camera: true, preflight.facePhoto: true, and preflight.screenShare: false. With webcam.mode: "none", the resolved webcam branch is only { "mode": "none" }. With webcam.mode: "recording", snapshot settings are removed and only recording settings plus faceAnalysis remain. When preflight.enabled is false, preflight checks are normalized off. Identity mismatch must also be disabled because there is no preflight face reference to compare with runtime evidence.
Every option
Preflight options
| Option | Type | Standard default | What it does |
|---|---|---|---|
policyVersion | number | 3 | Resolved policy schema version. Normalisation always stores v3. |
preset | "basic" | "standard" | "strict" | "standard" | Selects the complete base before deep overrides. |
preflight.enabled | boolean | true | Require the wizard before runtime. Server PREFLIGHT_GATE=strict also rejects runtime ingest without a pass. |
preflight.developmentMode | boolean | false | Relaxes checks for local development. Never enable on candidate links. |
preflight.browser |
Runtime options
| Option | Type | Default | What it does |
|---|---|---|---|
heartbeat | boolean | true | Activity heartbeat + idle detection. |
idleThresholdSeconds | number | 60 | Seconds of inactivity before an idle flag (needs heartbeat). |
focus | boolean | true | Tab/window focus-loss, page-visibility, and pointer-leave detection. |
visibility | boolean | = focus | Override page-visibility detection independently of focus. |
pointer | boolean | = focus | Override pointer-leave detection independently of focus. |
Recordings (screen + webcam) upload directly to the configured storage and are stitched into a seekable MP4 server-side; they appear under the session's Screen / Webcam tabs once processing finishes.
Derived rules
Derived rules (you don't wire these): preflight.camera and the captured preflight face photo are required whenever webcam.mode is snapshots or recording, and removed when it is none. Face analysis follows the same mode and cannot run without captured webcam evidence. Likewise preflight.screenShare always follows screenShare.enabled. When screen sharing is enabled, preflight requires browser getDisplayMedia support during the initial device check, so unsupported mobile browsers fail before the media steps begin.
Identity mismatch requires both active webcam evidence and a passing preflight identity reference. A policy that disables preflight must use webcam.mode: "none" or explicitly disable webcam.faceAnalysis.identityMismatch; invalid combinations are rejected rather than silently weakening the signal.
Delivery readiness canaries, internal request deadlines, microphone VAD preparation, and the bounded RMS fallback are platform reliability behaviour—not policy options. Client integrations cannot disable or select them. See Evidence delivery and Microphone speech verification.
V2 migration
Legacy v2 inputs (webcam.snapshots, webcam.record, and face) are accepted for migration. If both legacy webcam flags are true, the resolved v3 policy uses recording; resolved and stored policies never contain both capture strategies.