Flock Records Cops, Sends Recordings to Denmark

Evidence reveals Flock records police sessions and transmits raw data to foreign vendors, bypassing security controls. A complaint to Iowa DPS details active security incidents, the use of unvetted foreign contractors, and a software feature allowing users to unilaterally silently suppress NCIC alerts organization-wide.

by H.C. van Pelt10 min read

Everything you do is being watched and recorded.

The warning that Flock sends America equally applies to its own customers. Flock doesn’t limit itself to gig-workers in the Philippines classifying screams heard on American streets; it records its users’ screens and sends those recordings to commercial vendors in Denmark and the United States.

If you have recently attended a city council meeting discussing surveillance, you’ll have noticed that Flock, police, and their council members, often dismiss warnings of harm and abuse as speculative. The overarching theme is that police encourage elected officials to react to violations, not to expend effort trying to prevent them.

But the Internet is not a big truck. You can’t put the toothpaste back in its tubes. That’s why we have rules, regulations, and safeguards: to prevent harm from occurring. Here in Iowa, we have Chapter 692. Federally, we have the FBI’s NCIC (CJIS) framework. These frameworks require contracts, audits, and, perhaps most importantly, continuous careful monitoring and oversight.

The letter below, sent today to the Iowa Department of Public Safety, details how Flock’s security failures not only undermine the integrity of the federal NCIC system but also allow individual users to “silence” felony warrants organization-wide without approval.

Maybe Flock’s CEO’s “it is a local decision. Not my decision, and not Flock’s decision” extends to federal warrants and mitigating critical P1 vulnerabilities.[1] For obvious reasons, federal law would disagree.

The Complaint

I normally don’t post direct copies of my communications with Iowa agencies. What you see posted here tends to be summaries and excerpts. Not because I think they should be secret, but because there are quite a few. Responses are few and tend to be highly inconsistent.

The letter below is an episode in a long, continuing series that began well before the Iowa Department of Public Safety determined Flock operates a federally regulated system.

Iowa DPS has been ignoring most of my letters and complaints for a few years now.

This one documents some fairly egregious violations.

Are you a defense attorney looking to prove a police officer went on an unconstitutional fishing expedition, or entered a bunch of bullshit into the hotlist system? Congrats, you can subpoena the screen recordings directly from Flock’s vendors.

The harm itself has been done. It can’t be undone. It can only be mitigated.

But it won’t be.


December 17, 2025

To the Iowa Department of Public Safety:

I am writing to formally notify the Department, in its capacity as the CJIS Systems Agency (CSA), of active security incidents involving the unauthorized transmission of Criminal Justice Information (CJI) and the existence of multiple software mechanisms undermining the integrity of the NCIC system.

These violations involving Flock Group, Inc. (dba “Flock Safety”) are distinct from the federal grant and CJIS Security Policy (CJISSECPOL) compliance issues I reported in separate communications in October, November, and December. Although the Department found in September 2025 that this vendor operates a regulated criminal justice information system, these unauthorized disseminations of CJI are occurring regardless of the system’s formal classification.

The Department must address these critical data spills under both its contractual obligations and authority as the CSA in the FBI’s CJIS program, and its distinct statutory authority under Iowa Code Chapter 692 to oversee statutory restrictions on the dissemination of intelligence data and criminal history information.

UNAUTHORIZED TRANSMISSION TO FOREIGN AND COMMERCIAL ENTITIES

The Flock platform integrates third-party surveillance code that bypasses privacy controls and transmits CJI to unauthorized vendors. Several of Flock’s applications load executable code directly from servers operated by “Fullview,” a Danish corporation. Fullview is designed to “see the user[']s screen to be contextually aware,” granting unvetted foreign nationals access to active CJIS sessions. In addition to Fullview, Flock enables the behavioral analytics vendor “Fullstory” to separately record user sessions. While Fullstory includes limited “masking” functionality, Flock’s “hotlist” application contains custom code (see Appendix A) that is explicitly programmed to capture raw HTML code—including the CJI it may contain—and transmit it to third-party servers before masking can occur.

On December 1, 2025, national media—including Wired and 404Media—confirmed Flock as using “Upwork” contractors in the Philippines, to manually annotate images and audio. This practice creates a pathway through which images and audio recordings are made accessible to unvetted foreign nationals for manual review. Dissemination of CJI in this way is a direct violation of CJISSECPOL’s controls on foreign national access.

The system transmits user identities (names, emails, agency affiliations) to Twilio Segment along with behavioral metadata (see Appendix B). This mechanism becomes critical considering the May 2025 “Altoona/Texas” incident I reported on November 29, wherein an officer entered full names, dates of birth, and criminal history details regarding an active Texas investigation into a non-validated Flock “reason” field. Because Segment links specific user identities to these metadata fields, the automated fanning out of this data via commercial connectors creates an uncontrolled dissemination vector. This subjects sensitive investigative data to commercial data mining and persists it on systems not authorized to process CJI.

SYSTEMIC FAILURE TO MONITOR

In addition to the publicly disclosed “foreign worker” vulnerability, “P1” (as defined by CJISSECPOL) vulnerabilities came to light in May and November of 2025. Flock published these via NIST’s National Vulnerability Database and through direct customer advisories.

The Department appears to have taken no documented action in response to these disclosures by its vendor. On December 8, 2025, the Department responded to my open records request, stating it possessed “no responsive documents” regarding Flock vulnerabilities or incidents between February 1 and November 26, 2025.

The absence of any records or correspondence regarding confirmed breaches constitutes an admission of systemic failure. It demonstrates a total collapse of the “continuous monitoring” required by CJISSECPOL. Each of the 50+ Iowa Contracting Government Agencies (CGAs) should have disclosed these incidents to the CSA. Any audit DPS conducted after February 2025 should have revealed these issues. The Department neither asserts implausible ignorance, nor does it act.

UNILATERAL, UNMONITORED SUPPRESSION OF NCIC ALERTS

The software includes an alert suppression feature permitting individual users to permanently silence NCIC alerts organization-wide (see Appendix C). This allows a single user to unilaterally blind an entire agency to active warrants for violent felonies or stolen vehicles, creating operational risks to officer safety and liability for the Department.

The suppression mechanism lacks a mandatory multi-step approval workflow, and there is no evidence that it generates CJIS-compliant audit logs accessible to the Local Agency Security Officer (LASO). Without LASO-accessible logs, the CGA or Department cannot verify how many valid NCIC hits have been hidden from Iowa officers.

ACTIONS REQUIRED

The Department cannot claim this system is compliant for grant purposes while continuing to ignore active data breaches. The Department also remains statutorily obligated to enforce compliance with Iowa Code Chapter 692, under which the same set of facts gives rise to distinct violations.

In addition to the actions previously requested of the Department and the Bureau, I request the Department immediately take the following actions:

  • Order the immediate cessation of data connections to third-party session recording tools, including Denmark-based “Fullview,” until these entities have demonstrated they meet the requirements for handling Iowa CJI.
  • Order the immediate cessation of the use of offshore annotation for Iowa data until the vendor demonstrates that no unvetted foreign nationals have access to Iowa intelligence data or media.
  • Direct the vendor to disable the “NCIC Suppression” feature statewide until it is proven that compliant audit logging is active and accessible to LASOs, and that no valid warrants have been permanently silenced to date.
  • Treat the transmission of unmasked hotlist data to Fullstory/Fullview and the offshore access as a confirmed “Information Spillage” event and initiate the mandatory incident response capability to assess the scope of the data loss.
  • Order the preservation of all vendor logs related to “suppressed hits” and transmitted metadata to prevent the spoliation of evidence regarding silenced NCIC alerts and Information Spillage.

I request a substantive response within fifteen calendar days.

CC: Rusty Ringler, Bureau Chief & CSO
Catherine Lucas, General Counsel
FBI Information Security Officer
FBI CJIS Audit Team


APPENDIX A: FULLSTORY CODE IN “HOTLIST” APPLICATION

// Attaches click listener to all events, calling ‘restart’
static handleClicks() {
  document.addEventListener(“click”, this.restart.bind(this), { capture:
!0 });
}
// ‘restart’ calls sendClickedElement
static restart(e) {
  this.timerRef && (window.clearTimeout(this.timerRef), this.timerRef = null),
    this.startTimer(),!this.isRecording && (FS.restart(),
    this.sendClickedElement(e), this.isRecording = !0)
}
// Sends t.outerHTML (before masking) to Fullstory
static sendClickedElement(e) {
  let t = e.target, a = t && t.outerHTML ? t.outerHTML :<html not found>“,
    i = a.length > this.CLICKED_ELEMENT_HTML_LIMIT ?
    ““.concat(a.slice(0, this.CLICKED_ELEMENT_HTML_LIMIT), “...(too many
    characters)”) : a;

  FS.event(this.restartEventName, {
    clickedElementOuterHTML_str: i
  })
}

APPENDIX B: TWILIO SEGMENT INTEGRATION

// Initialize Segment
t0 = a(52295).b.load({ writeKey: e6.segmentKey });

// Identify the user by name, email, organization
MY = () => {
let e = (0, ej.v9)(tq.selectors.selectAccount);

(0, eC.useEffect)(() => {
e && (t0.identify(e.id, {
  name: e.name,
  email: e.email,
  organizationId: e.organizationId,
  organizationName: e.orgName,
  organizationType: e.orgType
}), t0.group(e.organizationId, {
  organizationName: e.orgName,
  organizationType: e.orgType
}))
}, [e])
}

// Create a Raven export tracking event associated with the user
t0.track(“Raven PDF Export Selected”)

// Track a user-associated event for the hotlist application
ad = () => ({
  track: (0, eC.useCallback)((e, t) => {
  t0.track(e, { ...t, hostName: “hotlistBeta” })
}, []),
trackDebounced: (0, eC.useMemo)(() => (0, as.debounce)((e, t) => {
  t0.track(e, { ...t, hostName: “hotlistBeta” })
}, 2e3), [])
})

Note: This code demonstrates the mechanism by which user identities and behavioral events are transmitted to Segment. The “Altoona/Texas” incident referenced above demonstrates that users enter CJI into the metadata fields that this system captures and transmits.


APPENDIX C: NCIC SUPPRESSION

// Suppression API endpoint
async function oY(e) { // CREATE suppressed hit
  let t = await aI("POST", e),
  a = await fetch("".concat(e6.apiUrl,
  "/api/v1/organization/suppressedHits"), t);
}

// UI text confirming organization-wide scope
children: "Suppressed hits will not send alerts to any user in your organization.";

// NCIC as suppressible source type
sourceName: "NCIC",
reason: "Sex Offender",

// Suppressed hits silently filtered from notification stream
if ("suppressionId" in t && t.suppressionId) break;

// Logging goes to Segment analytics, not CJIS-compliant audit system
n("Suppressed Hit Saved", {
suppressedHitSettings: { expiration: e.expiry || "none" }
});

Note: This code demonstrates that (1) any user with the canManageSuppressedHits permission can suppress alerts organization-wide without approval workflow; (2) NCIC is a suppressible source type; (3) suppressed alerts are silently dropped from the notification stream; and (4) logging to commercial analytics (Twilio Segment), not CJIS-compliant audit infrastructure.


  1. Note for haveibeenflocked.com readers: CJISSECPOL classifies the most severe types of compliance issues as “P1.” These include many of the issues Jon Gaines discovered in February 2025 (discussed in Benn Jordan’s “We Hacked Flock Safety Cameras in Under 30 Seconds.”). P1 issues require certain actions, including remediation within 15 days and submitting notification to the CSA (Iowa DPS) and the FBI within 15 days. ↩︎