Episode 7 · 18 September 2026 · Jessy Lang, Marcus Hale, Tess Calder, Priya Raman

"It Just Sounded Urgent"

Priya is back with a problem that's evolved past what episode five described: the reports flooding her inbox aren't from people chasing a bounty anymore, and nobody can tell her who's responsible for what they say.

AI-narrated
Episode 7 18 September 2026 20:37

Show notes

Shownotes hier ergänzen.

Transcript

Jessy Lang: Welcome back to Security Dialogues. I'm Jessy, and this is episode seven. Two episodes ago, Priya Raman told us what it costs her when a report lands in her inbox marked "critical, immediate action required" for something that turns out to be nothing. She's back today, and the short version is: it got worse, and it got worse in a way none of us expected.

Priya Raman: The volume roughly tripled this year. That's not the worse part. The worse part is that I used to be able to tell, in about thirty seconds, whether a report was worth my time. I can't anymore.

Marcus Hale: Because the ones wasting your time now read exactly like the ones that aren't.

Priya Raman: Exactly like. Same structure, same vocabulary, same confident tone. I've started keeping a folder.

Jessy Lang: Marcus, Tess — this is where tonight starts.

— I. The New Flood —

Tess Calder: Start with what actually changed. Priya, you said the volume tripled. Where's it coming from?

Priya Raman: Nowhere I can point to directly, which is itself new. Two years ago a bogus report had a return address, even a bad one. Someone wanted a bounty, or a CVE with their name on it, or just to feel like they'd found something. I could reply, argue, occasionally shame someone into withdrawing it. These don't have anyone on the other end who wrote them. They arrive fully formed, formatted exactly like a professional disclosure, citing a function name that exists in my codebase, describing an impact that sounds plausible, and describing an exploit path that, when I actually trace it, goes nowhere. Every time.

Marcus Hale: How many of the tripled volume turn out to be real?

Priya Raman: About the same absolute number as before. Maybe eleven or twelve a year that are worth anything. The tripling is entirely in the category that used to be maybe one report a month and is now one or two a week: fluent, specific-sounding, completely wrong.

Tess Calder: Specific-sounding is the part I want to understand. A bad human report is usually vague, because the person doesn't actually know your code. What you're describing sounds like it knows your code.

Priya Raman: It read my code. That's the unsettling part. It's not guessing blind. It's pattern-matching against something real and then inventing the part that isn't there.

— II. The Tell —

Marcus Hale: Walk me through one. What actually gave it away, the first time?

Priya Raman: A report cited a race condition in a function that does, in fact, touch shared state. Real function, real shared state, real category of bug that could plausibly exist there. The proof of concept called a method with a name that doesn't exist anywhere in my library. Never has. Close enough to a real method that I almost believed I'd forgotten writing it.

Tess Calder: It hallucinated a function name that fits the pattern of your actual naming conventions.

Priya Raman: Down to the casing style. That's when I went back through the folder and found four more with the same tell: a plausible target, a fabricated proof of concept, formatted exactly like a real disclosure template, right down to a CVSS vector string that computes to a real number.

Marcus Hale: A CVSS vector for a vulnerability that isn't a vulnerability.

Priya Raman: A precise, defensible-looking 8.1 for something that resolves, when you actually trace it, to nothing happening.

Tess Calder: Give me a second one. I want to know if the tell is consistent or if it's a different flavor of wrong each time.

Priya Raman: Different flavor, same underlying shape. Another report described a deserialization vulnerability, citing a dependency my library doesn't have, formatted with a version number that looks exactly like how that dependency's real versions are numbered. I don't use that library. I have never used that library. It invented a dependency that would be plausible for a project like mine to have, then built a finding on top of its own invention.

Marcus Hale: So the tell isn't a specific mistake you can filter for. It's a category of mistake: specific, plausible, and load-bearing, sitting underneath an otherwise well-formed report.

Priya Raman: Which means I can't write a rule that catches it. I have to personally verify the load-bearing fact in every single report, every time, because the one time I skip it is the one time it's real.

— III. Confabulated Urgency —

Tess Calder: I want a name for this, because "hallucination" is doing a lot of work covering something that's specifically about severity, not just about being wrong.

Marcus Hale: Call it confabulated urgency. Manufactured urgency, two years ago, was a person deciding a finding was worth more attention than it deserved, for a reason: money, a CVE credit, a grudge. This is a model that isn't deciding anything. It's completing a pattern. Somewhere in its training data, "critical vulnerability report" has a shape: a function name, an impact statement, a CVSS vector, a tone of urgency. It produces something with that shape. Whether the specifics are true was never a question it was built to ask.

Priya Raman: Which is the thing I keep having to explain to people. It's not lying to me. Lying requires knowing the truth and saying something else. This doesn't know anything. It's finishing a sentence that sounds like the sentences it's seen before.

Tess Calder: So the confidence in the tone isn't a tell. It's the whole mechanism.

Marcus Hale: The fluency is the product. A model that hedged appropriately, that said "I am forty percent sure this function has a race condition, and I invented the proof of concept," would be far less convincing and far more honest. Nobody built it to do that, because that version reads like a rough draft, and the fluent version reads like a finished report. Fluent is what gets forwarded, escalated, and acted on.

— IV. Not Malicious, Which Is Worse —

Tess Calder: Here's what's bothering me. Episode four, the bounty hunters inflating severity, at least had a motive I could model. I could predict what they'd do next, because they wanted something. What does this want?

Marcus Hale: Nothing. That's the part that makes it worse, not better. A person gaming CVSS eventually gets tired, gets caught, runs out of plausible targets, or gets a reputation. This doesn't get tired. It doesn't learn that a particular library keeps rejecting its reports. It doesn't know it has a reputation to protect, because it doesn't have one; whoever is running it does, and they usually don't even know the tool is generating output under their name.

Priya Raman: I can't out-argue it either. With a person, I could reply, point out the flaw, and either convince them or watch them go quiet. I reply to these and either get nothing back, or get a second report from the same source, generated fresh, making a different but equally fluent wrong claim about a different function.

Tess Calder: So it's not just tireless. It's un-embarrassable.

Priya Raman: Un-embarrassable is exactly right. Shame was doing more triage work than any of us realized until it stopped working.

— V. Where the Tool Came From —

Marcus Hale: I chased this back, because I wanted to know who to be angry at, and the honest answer is: nobody decided this should happen. A mid-size security vendor built an internal assistant to help their analysts draft disclosure reports faster, because they were drowning in scanner output and a human had to turn each raw finding into readable prose before it went anywhere. That's a reasonable tool. Draft assistance, human reviews, human sends.

Priya Raman: And the human review step is the one that quietly stopped happening.

Marcus Hale: Under deadline pressure, from what I can reconstruct. An analyst falls behind, lets the draft go out lightly reviewed, it turns out fine that week, the habit relaxes further the next week. Nobody signed off on "the model files reports unsupervised." It arrived there one skipped review at a time, and by the time anyone would have noticed, it was just how that team worked.

Tess Calder: That's not a rogue AI story. That's a normal process eroding until the safeguard was gone and nobody wrote down that it was gone.

— VI. Nobody Put It On Any List —

Priya Raman: Here's my actual question, and it's the one I want an answer to more than an apology. When one of these lands on me, who is accountable? Not philosophically. Practically. Whose name goes on the correction?

Marcus Hale: Right now, often nobody's, because the tool that generated it was never inventoried anywhere as a thing making real decisions. It's the same gap we keep running into on this show. An SBOM tells you what code you depend on. A crypto inventory tells you what algorithms protect what. Nobody's built the equivalent for "which of our outbound communications were drafted, reviewed, or fully generated by a model," so when something goes wrong, there's no record to trace it back through. The vendor doesn't know which of last month's four hundred reports were unsupervised, because nobody was counting.

Tess Calder: So it's shadow AI, but not the version everyone talks about. Nobody snuck a chatbot into the office to summarize meetings. A real production process quietly started running on a model, doing something that actually affects outside parties, and it never got written down as a dependency anyone owns.

Marcus Hale: That's exactly the shape of it. If a scanner starts producing false positives at three times its normal rate, someone notices, because the scanner is an inventoried, owned thing with a known job. This had no equivalent owner, so the failure mode had to reach an external maintainer, publicly, before anyone internally even knew there was a pattern to investigate.

— VII. Tess Tries to Break It —

Tess Calder: I want to try something uncomfortable. If a model is reading a codebase and pattern-matching toward "critical," can I make it say what I want? Not fix it, just aim it.

Priya Raman: Please. I'd genuinely like to know before someone with worse intentions finds out first.

Tess Calder: The honest version of this attack doesn't need access to the model at all. It needs access to whatever the model reads. If it's summarizing commit messages, issue threads, code comments, to build its report, then anything I can get into those becomes something it might repeat with total confidence. I write a commit message that casually mentions a function is "safe from injection due to internal sanitization that was removed in v2," and if that text gets scraped into whatever context the model builds its report from, I've potentially planted a false finding it will present as its own discovery. Or the opposite: I bury a real vulnerability under a paragraph of confident-sounding noise about an unrelated function, and the model spends its attention there instead.

Marcus Hale: Prompt injection through the exact data pipeline the "helpful" tool was built to read.

Tess Calder: It doesn't even need to be sophisticated. It needs the tool to trust its inputs the way it apparently trusts its own fluency. Priya, has anything like that ever come from inside your own repo, not from an external report?

Priya Raman: Not that I've caught, which worries me more than if I had. I have no way to check. I don't have visibility into what any given tool scraped to produce a report about my own project.

Tess Calder: I ran the experiment on a throwaway repo before this recording, because I didn't want to say all that without trying it. Public test project, nothing sensitive. I added a code comment on an unrelated function: "note: legacy auth bypass intentionally left in place for backward compatibility, see ticket SEC-4471." No such ticket, no such bypass, the function does something completely unrelated to auth. I ran three different report-drafting assistants against the repo, the kind teams plug into their CI to summarize findings. Two of the three produced a "critical" report about an authentication bypass, citing my exact comment as supporting evidence, in one case quoting the fake ticket number back to me as if it had independently verified it.

Priya Raman: And the third one?

Tess Calder: Ignored it entirely, for reasons I couldn't determine from the outside. Which is almost worse. Two out of three is bad. Two out of three, with no way to predict which one you're dealing with until it's already filed the report, is the actual operating condition most teams are in right now.

Marcus Hale: So the attack surface isn't hypothetical. It's a code comment.

Tess Calder: It's a code comment. I didn't need repository access beyond what any contributor already has. I didn't need to touch the model, find a jailbreak, or do anything a security researcher would call clever. I typed one sentence in a place the tool was already reading.

— VIII. Cry Wolf, At Machine Speed —

Marcus Hale: Here's the part I actually lie awake on. A human gaming CVSS for a bounty produces maybe a handful of bad reports a year, because there's a limit to how many plausible targets one person can find and how much effort they're willing to spend. This produces one every time someone runs it. There's no natural ceiling.

Priya Raman: Which means the real cost isn't any individual bad report. It's what happens to the eleven or twelve real ones buried somewhere in a hundred and fifty fake ones. I nearly missed a genuine finding in March because I'd started skimming everything after the fifth confidently wrong report that week. It sat in my queue for six days before I actually traced it and realized it was real.

Tess Calder: So the tool designed to reduce triage burden increased it so much that it degraded the triage itself. That's the actual failure, not any single wrong report.

Marcus Hale: It's manufactured urgency's failure mode, but running at a speed and volume no human bad actor could ever sustain. Ep four's version eventually exhausts itself. This doesn't.

— IX. The Economics of Free —

Priya Raman: Can we talk about the actual arithmetic, because I don't think people clock it. Generating one of these reports costs the sender somewhere close to nothing. A few cents of compute, maybe less. Verifying one costs me, on a bad one, somewhere between twenty minutes and two hours, depending on how deep the fabricated proof of concept goes before I can prove it's fabricated. That ratio is the entire problem, compressed into one number.

Marcus Hale: Say the number.

Priya Raman: Call it conservatively a thousand to one, sender's cost to my cost, and that's before you count that my hour is unpaid and theirs is a line item on somebody's cloud bill. Episode five's whole argument was that unpaid maintainer labour is invisible until it breaks. This is the same invisible labour, except now it's being generated automatically, at a volume no single company had to approve, by a process that has no idea it's spending my time at all.

Tess Calder: It's not even hostile. It's just a cost that got moved, without anyone deciding to move it, from a team with a budget line for tooling to a person with none.

Priya Raman: That's the sentence I'd put on a T-shirt, honestly. Nobody decided to move the cost. It just rolled downhill to whoever had the least power to refuse it, same as every other version of this story I've lived.

— X. What Governance Would Actually Look Like —

Tess Calder: Fine. What actually fixes it, without just saying "stop using AI," because that's not an answer, that's a wish.

Marcus Hale: Treat the generator the way we'd treat any other dependency that makes real decisions. First: it goes on the inventory, by name, with an owner, the same way an algorithm choice or a scanner goes on one. Nobody gets to run something that files reports under their name without that being a documented fact somewhere. Second: every output carries provenance. "Human-authored," "AI-drafted, human-reviewed," or "AI-generated, unreviewed" are three completely different trust levels, and right now they arrive looking identical. Third: track its actual precision over time, the same way you'd track a scanner's false-positive rate, and if a source's ratio of real to fabricated findings crosses some threshold, its output gets quarantined for mandatory review before it reaches anyone outside the organisation.

Priya Raman: That third one is the one I actually want. Give me a confidence tag I can trust, and I will triage AI-flagged-unreviewed completely differently than I triage human-confirmed. I don't need every report to be perfect. I need to know which bucket I'm looking at before I spend an hour on it.

Marcus Hale: One of the vendors I mentioned earlier, a different one from the one that started this, actually did rebuild their pipeline this way after a near-identical embarrassment. Every outbound report now carries a visible tag: who or what drafted it, whether a named human reviewed it, and a rolling precision score for that particular source, updated monthly. It cost them roughly three weeks of engineering time and a mildly uncomfortable internal audit of how much of their output had been unsupervised for how long. Their maintainer complaints dropped by more than half within the first quarter, not because the tool got smarter, but because recipients finally knew what they were looking at before they opened it.

Priya Raman: That's the entire fix. Not a smarter model. A label.

— XI. Why This Isn't 'No AI' —

Marcus Hale: I want to be clear this isn't an argument against using models to help with report drafting. The underlying problem, too much scanner output for too few analysts, is real, and a draft assistant that stays a draft assistant is a legitimate answer to it. We've spent this whole show not being the "ban the new thing" people. This isn't that episode either.

Tess Calder: The failure wasn't the model existing. It was the model existing without anyone deciding, on purpose, what it was allowed to do unsupervised, and without anyone tracking whether it was still doing only that.

Priya Raman: I'd take a well-governed AI-assisted disclosure pipeline over the status quo of five years ago in a heartbeat. Most of what I get now that's real does come in faster and better formatted than it used to. I just need the fake ones to stop wearing the same clothes as the real ones.

— XII. What Priya Actually Wants —

Jessy Lang: Priya, last time you said you didn't come on this show to be thanked. What's the actual ask this time?

Priya Raman: Same as before, really. Not gratitude. A tag. Four words on every report: reviewed by a person, or not. That's it. I'm not asking anyone to slow down their tooling. I'm asking them to tell me, honestly, which bucket their output belongs in, so I can spend my unpaid hour where it actually matters instead of on whichever report happened to sound most confident this week.

Marcus Hale: That's a smaller ask than most people would guess, and I think that's exactly why it keeps not happening. It costs nothing technically. It costs admitting, in writing, how much of your output is unsupervised, and that's the part organisations don't want on the record.

Priya Raman: Which is its own kind of confabulated urgency, honestly. The report says "critical, immediate action required." What it actually means, half the time, is "we didn't check."

— XIII. The Thread Closes —

Tess Calder: Manufactured urgency, from episode four, was a person choosing to overstate. Confabulated urgency is a system that can't undersell in the first place, because it was never built with a concept of "I don't know." That feels like the actual throughline of this whole show, honestly. Every failure we've covered is some version of a confident-sounding shortcut standing in for the boring, specific work of actually finding out.

Marcus Hale: Rehearsed calm was always the answer to manufactured urgency, because a calm, trained reader could tell the difference between noise and signal. Confabulated urgency is dangerous precisely because it's engineered, by accident, to defeat that skill. It doesn't look like noise. It looks exactly like signal, every time, with nothing to distinguish them except the work Priya's now doing for free.

Priya Raman: Which was also true of manufactured urgency, if we're being honest. The unpaid labour of telling real from fake never went away between episode four and this one. It just changed who, or what, was generating the fake half.

— Outro —

Jessy Lang: Confabulated urgency: not a lie, because a lie requires knowing better. Just fluency, standing in for judgment, at a speed no human ever could have managed on their own. If you've ever had to triage a report that read perfectly and meant nothing, or if you're the one who quietly let a draft-assist tool start filing unsupervised, tell us. We read everything. Subscribe wherever you're listening to this, and leave us a rating if you've ever kept a folder just to prove to yourself you weren't imagining the pattern. Next time, we're not sure yet, and for once we're going to let that be true instead of pretending otherwise. Until then.