Who wrote it, what ran, where to report: this week's three provenance questions
Three items published on 7–8 October look unrelated — a threat report, a forensics diary and a one-paragraph notice from a web framework. Read together they describe the same problem from three sides: when machines do more of the work, knowing where a piece of work came from becomes the thing teams actually have to manage.
1. Who wrote it. OpenAI's report on two "false front" operations describes an Iran-origin network that used ChatGPT to polish long-form articles and draft pitch emails under seven invented bylines, landing almost 100 pieces in a dozen real outlets, and a Russia-origin one that ran a Latin American "think tank" through a fake persona with unwitting local staff. OpenAI's own conclusion is that nothing about the method was new — fake contributors are a 2016 technique — but AI made the editorial labour cheap. The weakness exploited is an editor accepting a competent text from a stranger. The control is provenance of the author: does this person exist anywhere except in their own bio and the accounts created to back it?
2. What ran. The SANS Internet Storm Center published two scripts that rebuild what the OpenCode and Hermes coding agents did on a machine, from their SQLite stores, request dumps and logs. The design choices are the lesson: copy the database and its WAL files before opening anything, open the copy read-only, annotate truncation instead of hiding it, and treat transcripts as sensitive because tool output can hold secrets. The control is provenance of actions — and it only exists if the agent keeps records and someone knows where they are. Few teams that rolled out coding agents this year have written that location into their incident-response runbook.

3. Where to report. Django stopped taking new security reports through HackerOne on 8 October; new reports go to security@djangoproject.com, while open HackerOne reports continue. It is a small change, but automated reporters and researcher checklists point at intake channels, and a channel that silently closes is how a vulnerability report gets lost. The control is provenance of the channel: the project's own security policy is the authority, not a platform listing.
What to do with this. Three cheap checks follow. If you publish outside contributions, verify identity outside the contributor's own materials. If you run coding agents, record where each one stores sessions and logs, and test that you can export a session without modifying it. If you report vulnerabilities upstream, read each dependency's security policy rather than relying on where you reported last time. None of these needs new tooling; all of them need someone to own the question "where did this come from?".
This analysis draws on: OpenAI, "Disrupting AI-enabled 'false front' operations" (8 October 2026) — https://openai.com/index/disrupting-ai-enabled-false-front-operations ; SANS ISC, "Reconstructing AI Agent Activity" (8 October 2026) — https://isc.sans.edu/diary/Reconstructing+AI+Agent+Activity+Two+New+Scripts+for+Forensic+Review/33410/ ; Django, "Django security reporting update" (8 October 2026) — https://www.djangoproject.com/weblog/2026/oct/08/django-security-reporting-update/