ai-agent detection
framing evergreen · signals as-of 2026-06-15
the L1-L4 diagnostic
a vm-attestation defense in four layers, read as a post-mortem: what each layer detected when an attacker forged the browser from within, and what happens when a vision-language model drives a real, unmodified browser instead. costs rarely vanish, they shift, to the orchestration layer, the deployment container, or inference latency.
- L1a static environmental introspectiondegraded
reads navigator properties, webgl vendor/renderer, dom prototype-chain integrity, font lists, audiocontext, tcp/ip stack, looking for a forged or virtualized environment.
under a vlm: the browser is legitimate, so the page-level checks pass. but running a vlm at scale means containers (docker, k8s, cloud vms) that bleed os/network anomalies: missing system fonts, webgl mismatched against the declared os, anomalous tcp/ip fingerprints. the cost shifts from browser-forgery to container-evasion engineering, not to zero.
- L1b dynamic sensor telemetrydegraded
scores live mouse kinematics, scroll cadence, click timing, touch pressure against human-distribution models, the behavioral-biometric layer.
under a vlm: the vlm picks targets with human-like cognition, but it outputs coordinates, not a kinematic trajectory. an orchestration layer (pyautogui, accessibility apis) translates coordinates into movement; naive linear interpolation or constant-velocity profiles stay statistically distinguishable from human motion. biometrics keep leverage against poor orchestration; the cost shifts to a kinematic-smoothing layer.
- L2 code obfuscation + polymorphismcollapsed
self-modifying opcodes, compile rotation, and a custom register-based vm raise the reverse-engineering cost of the defensive bytecode.
under a vlm: the vlm never inspects the bytecode, it executes the vm as a black box, so t_re is roughly zero at the vm level and the temporal arms race terminates there. application-level workflow re (dom structure, selectors, navigation) still costs, but that is a per-target prompt-engineering cost, not the layer's premise.
- L3 execution trapsdegraded
console-bound traps, anti-debugger hooks, and prototype-integrity checks fire when a runtime is instrumented or devtools is opened.
under a vlm: no devtools is opened and nothing is instrumented, so the traps never fire. but the premise shifts to a cognitive/perceptual layer: dom-enumerating agent frameworks (seeact, cogagent) treat every rendered element as interactable, so a cognitive honeypot (a transparent full-viewport decoy) catches them. pixel-level vlms reading screenshots are immune, so it is a partial, multi-surface trap.
- L4 chronometric integritysurvives
performance.now() polling and timing-delta seed mutation detect the microsecond timing noise that javascript instrumentation introduces.
under a vlm: the microsecond instrumentation gap closes under native execution, but the target shifts to macroscopic latency. a human clears a vm challenge in 200-800ms; a vlm needs 30-120s of think-time per action, a 25-50x gap bounded below by model inference speed. the attacker cannot orchestrate it away, they must wait for faster inference. this is the one signal the vlm era cannot close.
architecture × resilience
- architecture types
point-in-time vm attestation
Type I · tier 2
mechanism
execution: a register-based js vm probes environmental integrity (L1-L4).
under operator synthesis
L1-L4 cease to impose meaningful forgery cost; the vm becomes a delivery mechanism, not a defense. ip reputation remains the sole binding economic constraint, but without the multiplicative forgery cost the per-token price drops.
representative systems
- google botguard
- cloudflare turnstile (managed)
- kasada
go deeper
- → biometric test page ↗ the 25-50x latency gap and the input agents emit (the behavioral half, hosted in the scanner).
- → bot-detector intel what each detector's loader actually probes in production.