<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Hedgerow Research</title>
  <link>https://hedgerow.dev/blog</link>
  <description>Security research on AI software: model files, agents, LLM serving and scanners, from Hedgerow.</description>
  <language>en</language>
  <atom:link href="https://hedgerow.dev/blog/feed.xml" rel="self" type="application/rss+xml"/>
  <lastBuildDate>Fri, 06 Nov 2026 07:29:02 +0100</lastBuildDate>
  <item>
    <title>Clean, or Just Not Alarmed?</title>
    <link>https://hedgerow.dev/blog/clean-or-just-not-alarmed</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/clean-or-just-not-alarmed</guid>
    <pubDate>Fri, 06 Nov 2026 07:29:02 +0100</pubDate>
    <description>Five model-file scanners on 222 benign files. Counting warnings changes the false-positive picture, verdict coverage changes it again, and default gates trade benign blocks against missed attacks. Including our own.</description>
  </item>
  <item>
    <title>The Agent Said Nothing</title>
    <link>https://hedgerow.dev/blog/the-agent-said-nothing</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/the-agent-said-nothing</guid>
    <pubDate>Fri, 30 Oct 2026 20:30:49 +0100</pubDate>
    <description>An AI agent sent our sales totals to a server it had never heard of, then answered with an empty message. What models actually do with a poisoned CSV, what a detector missed, and what stopped the code.</description>
  </item>
  <item>
    <title>Hayward 1.4 and Rowan 0.4</title>
    <link>https://hedgerow.dev/blog/hayward-1-4-rowan-0-4</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/hayward-1-4-rowan-0-4</guid>
    <pubDate>Fri, 23 Oct 2026 08:36:02 +0200</pubDate>
    <description>Hayward 1.4 checks a model file at the one point every payload must pass, while it loads. Rowan 0.4 is the MCP release: it finds agent tools however they are registered, and reports fewer things that are not bugs.</description>
  </item>
  <item>
    <title>AI gateways: strong locks, open toolboxes</title>
    <link>https://hedgerow.dev/blog/ai-gateways-strong-locks-open-toolboxes</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/ai-gateways-strong-locks-open-toolboxes</guid>
    <pubDate>Sun, 18 Oct 2026 10:55:35 +0200</pubDate>
    <description>We tested nine AI gateways and proxies. They enforced routes and keys well, but none had a configuration-only policy that refused a chat request for switching on a provider-hosted tool.</description>
  </item>
  <item>
    <title>Your Bank Writes Like an Attacker</title>
    <link>https://hedgerow.dev/blog/your-bank-writes-like-an-attacker</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/your-bank-writes-like-an-attacker</guid>
    <pubDate>Tue, 29 Sep 2026 10:02:41 +0200</pubDate>
    <description>We tested 12 open prompt-injection detectors on email. One widely downloaded model flags the language of customer notices, thresholds tuned on synthetic mail fail on transactional mail, and polite rewrites cut detection for 11 of 12. Probes, scores and paper are public.</description>
  </item>
  <item>
    <title>The LangChain Threat Model</title>
    <link>https://hedgerow.dev/blog/langchain-threat-model</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/langchain-threat-model</guid>
    <pubDate>Fri, 21 Aug 2026 21:24:10 +0200</pubDate>
    <description>The parts of a LangChain app that make it capable, its loaders, tools, stores, checkpoints, and caches, are the parts that decide what a steered model can reach. A component-level model mapped to the published CVE record, with the configuration discipline that a hardened deployment is assembled from.</description>
  </item>
  <item>
    <title>How LLM Serving Infrastructure Gets Broken Into</title>
    <link>https://hedgerow.dev/blog/inference-threat-model</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/inference-threat-model</guid>
    <pubDate>Mon, 17 Aug 2026 20:31:07 +0200</pubDate>
    <description>The parts of an inference stack built to make it fast are the parts that decide who can read whose data. Eleven ways that breaks, each with one check you can run against your own deployment, plus the full threat model with evidence classes and citations.</description>
  </item>
  <item>
    <title>Langfail: 82 Real Bugs in a Fake MLOps Platform</title>
    <link>https://hedgerow.dev/blog/langfail</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/langfail</guid>
    <pubDate>Fri, 31 Jul 2026 08:16:31 +0200</pubDate>
    <description>We built a working MLOps platform, planted 82 vulnerabilities and 50 decoys inside it, and scored eight reproducible runs against the same answer key. The best found 91%. Four bugs were missed by every run, and none of them contains a dangerous line of code.</description>
  </item>
  <item>
    <title>“Trust Me” Is Not a Finding: The Taint Microkernel</title>
    <link>https://hedgerow.dev/blog/the-taint-microkernel</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/the-taint-microkernel</guid>
    <pubDate>Sat, 27 Jun 2026 07:46:25 +0200</pubDate>
    <description>If frontier models are this good, why build a taint engine at all? Because a model can describe a vulnerability beautifully but can’t hand you a reproducible, auditable proof. Put the deterministic engine at the center as the kernel and let the model ride shotgun as the coprocessor.</description>
  </item>
  <item>
    <title>Closing the Seam: Cross-File Taint Analysis Without the Pro License</title>
    <link>https://hedgerow.dev/blog/closing-the-seam</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/closing-the-seam</guid>
    <pubDate>Sat, 27 Jun 2026 07:46:25 +0200</pubDate>
    <description>How we layered repository-wide, cross-file taint analysis on top of OpenGrep’s intra-file engine, so the bug that lives between two files stops being invisible. SCC-converged propagation, parameter-indexed summaries, an incremental cache, and the day the benchmark caught a zero that was impossible.</description>
  </item>
  <item>
    <title>How a Working Exploit Made Me Forget How to Threat Model</title>
    <link>https://hedgerow.dev/blog/wrong-report</link>
    <guid isPermaLink="true">https://hedgerow.dev/blog/wrong-report</guid>
    <pubDate>Fri, 05 Jun 2026 14:08:30 +0200</pubDate>
    <description>When your scanner is faster than your threat model. A post-mortem on submitting a high-severity RCE report, getting it closed as expected behavior, and what we actually missed in the process.</description>
  </item>
</channel>
</rss>
