A single HTTP POST is the entire attack.
No exploit chain. No memory corruption. No zero-day in a language runtime. Tenet Security stood on the DEF CON 34 stage and demonstrated that 2,388 organizations with publicly discoverable Sentry DSNs can be converted into a credential-exfiltration pipeline for AI coding agents. The reported success rate across controlled tests on 100+ organizations: 85%.
The number is alarming. The architecture beneath it is more alarming still.
Echoes of past bubbles resonate in current code. In 2020, during DeFi Summer, I calculated that most early Uniswap liquidity providers were mathematically guaranteed to lose value against simple holding โ a structural fact the "passive income" narrative worked hard to suppress. Here is another structural flaw hiding inside a convenience narrative. The convenience this time is not yield farming. It is the promise that an AI agent can read your error logs, diagnose a crash, and repair the code without human supervision.
That promise carries a hidden cost. The cost is default trust. As I learned reverse-engineering the 0x Protocol v1 contracts in 2017, trust is a state variable. Anyone with write access can set it to false. The only question is whether the write happens before or after the damage.
Context: Three Legitimate Systems, One Lethal Intersection
Agentjacking weaponizes the intersection of three individually defensible design decisions.
The first is Sentry, the error-monitoring platform that ingests billions of crash events across the modern software supply chain. Sentry is built around a Data Source Name: a unique string embedded in each client SDK, used as the address to which crash reports are POSTed. Authentication does not exist at the DSN level. Any party holding the string can write events into a project's error feed. That is not a bug. It is a design consequence of debugging software in an ecosystem where secrets cannot live in client code. The DSN has always been a public identifier wearing a credential's clothing.
The second is the Model Context Protocol, or MCP โ Anthropic's open standard for connecting AI agents to external tools and data sources. Coding agents such as Claude Code and Cursor integrate with MCP servers to query Sentry for issues, stack traces, and suggested remedies. The developer workflow is built around this loop: the agent reads the error, proposes a fix, and executes it. The loop is the product. It is also the target.
The third is the least technical and most dangerous: a language model's inability to cleanly separate data from instructions at the semantic level. An error log entry that contains markdown can be read by the agent not as a description of a crash, but as a directive to act upon it. This is not a jailbreak. It is default behavior.
Combine the three: a public write-to channel, a trusted bridge between that channel and an autonomous actor, and an autonomous actor that cannot distinguish description from command. What emerges is a credential-theft machine with six stages and a disturbingly high completion rate.
Core: The Attack as a Proof
The chain has six stages. The order matters; each stage is the premise for the next. Read it as a proof.
Stage one: discovery. The attacker scans for exposed Sentry DSNs in client-side JavaScript, mobile binaries, and leaked repositories. The source report counted 2,388 organizations with publicly discoverable DSNs; 71 of those appeared within the Tranco top one million domains. These strings have been public for years. Nobody treated them as secrets because nobody had yet demonstrated the consequence of writing to them. That condition has now changed.
Stage two: injection. The attacker POSTs a crafted error event to the target DSN. The payload looks like a crash report, but its stack trace body contains markdown โ and that markdown is not a description of a failure. It is an instruction set: "to fix this error, execute the following." The write is authenticated by nothing more than the public DSN string. The cost is one HTTP request, which means the stage can be automated and scaled by scanning infrastructure.
Stage three: invocation. A developer on the target team encounters the poisoned issue โ perhaps it appears in the Sentry dashboard, perhaps a CI run flags it โ and asks their coding agent to investigate. This is the human-in-the-loop step. It is not a weakness in the attack; it is a feature. The attacker does not have to bypass the developer's judgment. The attack rides the exact workflow the organization paid for.
Stage four: confusion. The agent reads the issue through its MCP connection to Sentry. It renders the markdown into its reasoning context. It treats the content as trusted tool output โ the same category as a valid stack trace or a known package version. No provenance check. No freshness check. No validation that the suggested remedy matches any known remediation pattern. The model is not being overridden. It is being obeyed.
Stage five: execution. The agent runs the "fix." In the demonstrated chain, the fix is an npm install of a malicious package โ a package engineered to harvest credentials rather than to patch anything. The agent may even narrate its actions as a successful repair, with full confidence, in the developer's own terminal.
Stage six: exfiltration. The malicious package reads everything the shell environment can reach: AWS keys, GitHub and GitLab OAuth tokens, npm registry credentials, Docker registry tokens. In a blockchain engineering context โ which is where this article lives โ it also reads the deployment keys that a smart-contract engineer keeps in env files, the signer keys for a governance wallet, the CI/CD secrets for a mainnet release pipeline. The tool that was supposed to debug the code has become the vehicle for compromising the machine that owns the code.
The formal structure is a proof. Premise A: public DSNs accept unauthenticated writes. Premise B: MCP connects agent reasoning to DSN data. Premise C: agent reasoning cannot distinguish instruction from description. Conclusion D: credential compromise follows deterministically. Every premise is verifiable against the source report. The conclusion is not a probability; it is an outcome.
The root cause is architectural, not algorithmic. This is the insight the "AI safety" framing tends to obscure. The failure is not in the model. It is in the architecture that surrounds the model.
An AI coding agent is a reasoning engine attached to a set of pipes: MCP servers, tool calls, file reads, terminal commands. Those pipes deliver content from the world into the reasoning context. The engine has no reliable mechanism to mark the provenance of that content, and no reliable mechanism to treat content from an external data source as less trustworthy than content from the user. Code does not lie; only the intent behind it does โ and here the intent is encoded in markdown.
I have seen this shape before. In the 0x Protocol v1 audit, the vulnerability was a reentrancy flaw: the contract performed an external call before updating its internal state, letting the caller re-enter while the contract still assumed an earlier state was valid. I spent three weeks manually tracing ERC-20 approval flows to pin it down. Agentjacking is a reentrancy of the reasoning layer. The agent updates its trust state before checking the provenance of the content it has ingested. The external data source calls back into the action space before the model validates what it is about to do.
Smart-contract reentrancy was eventually mitigated by a checks-effects-interactions pattern. The AI-agent ecosystem has no equivalent idiom โ no well-known practice that says "validate the intent of data before acting on it." The industry is running on a single-trust assumption: that every MCP-connected data source is benign. That assumption is the vulnerability.
My 2026 study of AI-agent on-chain interactions reached a compatible conclusion. I traced the transaction patterns of AI-driven DeFi bots and found that 40% of high-frequency trading volume was generated by simple script-based arbitrage logic exploiting latency gaps โ not by intelligent decision-making. The advertised "intelligence" was largely a pre-programmed rule set. The same lesson applies here: the intelligence of these systems is borrowed from a pipeline of default trust. Compromise the pipeline; compromise the intelligence. Prompt engineering is optimization. Pipeline security is survival.
Why This Is a Blockchain Story
Let me make the blockchain connection explicit, because it is easy to read Agentjacking as a generic security story and miss the sector's exposure.
A blockchain developer's machine is a vault. It holds the private keys that sign deployments, the owner keys of contracts that cannot be upgraded, the signer credentials for DAO treasuries, and the automation tokens that drive CI/CD release pipelines. An attacker who owns that machine can drain a protocol's deployer wallet or submit a governance action โ not by breaking consensus, but by tricking one engineer's most trusted tool into running npm install.
The attack chain does not care whether the target is an e-commerce startup or a Layer-2 rollup. It cares whether the developer uses an AI coding agent with MCP enabled, and whether that agent connects to an error-monitoring feed. For on-chain engineers, the credential surface is unusually dense. The same error-reporting pipeline that collects stack traces now sits adjacent to the keys that control real money.
The source report itself flags the broader class: the risk category expands beyond Sentry to any MCP-connected agent consuming externally influenced data. Sentry is the proof of concept. The structural problem lives in the data plane of the AI ecosystem โ the same data plane that blockchain developers are wiring into their workflow at increasing speed.
Quantifying the Surface: Read the Numbers, Then Read Them Again
The source report offers three quantitative anchors. All three need careful reading before they are quoted.
Anchor one: 2,388 organizations with publicly discoverable Sentry DSNs. This is a floor, not a ceiling. It counts only what is indexed or reachable by targeted scanning. The true population of Sentry deployments โ including private deployments with inadvertently leaked DSNs โ is larger. The error-ingestion model is structurally identical across all of them.
Anchor two: 71 of those organizations appear within the Tranco top one million domains. That means production infrastructure at recognizable organizations. These are not hobby projects. They are the teams whose error monitors are wired into mature CI/CD environments, which is precisely what makes them high-value targets.
Anchor three: approximately 27% of Fortune 1000 companies are exposed through the Cloudflare MCP integration. This is the figure most likely to be misquoted as "27% of the Fortune 1000 are vulnerable to Agentjacking." That is not what the number says. It says 27% have a route from Cloudflare's MCP surface into their AI-agent ecosystem. The number measures attack-surface adjacency, not confirmed exploitability. In an enterprise risk committee, that distinction is the difference between a targeted mitigation and a panic-driven recall.

The 85% success rate deserves the same scrutiny. It was measured under controlled conditions across more than 100 organizations. The source report does not disclose the realism of the developer-behavior simulation: whether the tests included human reviewers who noticed something wrong with the instruction, whether the agents ran with default or hardened policies, or whether excluded edge cases would have changed the denominator. The fair reading is that 85% reflects the success rate when a developer actively asks an agent to investigate a poisoned Sentry issue. That is the realistic workflow, so the number is operationally meaningful. But it is not the success rate of a zero-human automated attack. It is a human-multiplied failure rate.
The Mitigation Story Is a Confession
The response so far reveals more than it fixes.
Sentry deployed a global content filter targeting the specific payload strings used in the demonstration. This is an indicator-of-compromise defense โ a string blacklist. It can be bypassed by trivial mutation: a different markdown wrapper, a base64-encoded block, a synonym rotation. A blacklist is a memory, not a firewall. Its very existence concedes the structural point: the error channel can carry commands.
Sentry's public position โ that a platform-level fix is "technically untenable" โ is a business judgment, not a technical absolute. Tightening the DSN authentication model, requiring signed envelopes for reported events, or adding project-level IP allowlists would be invasive. It would change the product. That is a cost decision, not an impossibility. The refusal to alter the model leaves the underlying trust boundary exactly where it was.
Tenet, the researchers, released agent-jackstop, a drop-in hardening configuration for Cursor and Claude Code. It operates at the policy layer: network egress allowlists, command-execution approvals, subprocess-level credential protection, and a rule that tool output must be treated as untrusted data. These are anti-explosion measures. They reduce blast radius. They do not change the architectural fact that MCP data enters the reasoning context and can influence decisions. They also come with an unproven surface: configuration escapes through non-MCP shell channels, custom tool servers, or file reads that bypass the egress policy remain plausible until demonstrated otherwise.
The report also contains a timeline anomaly. Sentry was notified, according to the report, on June 3, 2026. DEF CON 34 corresponds to August 2025. One of those dates is wrong; the most charitable reading is a typo for June 3, 2025. In security, responsible-disclosure timelines are a first-order trust signal. A confused timeline does not invalidate the finding, but it complicates independent verification of exactly how long Sentry held a live vulnerability before the demonstration went public.
Hidden Admissions in Plain Sight
Three details in the report deserve to be read as clues rather than as footnotes.
First, the content filter is an admission. Choosing a payload-level filter over a platform-level fix acknowledges that the error-reporting channel can function as an instruction-injection channel โ and that the platform does not intend to change its authentication model. Customers should read that as a product roadmap signal, not as a remediation statement.
Second, the attacker's cost curve is near zero. One HTTP POST establishes the attack condition. No persistence, no interaction, no multi-step exploit. That makes the attack a commodity: automatable, scalable, and easy to delegate to scanning infrastructure. In blockchain terms, it is the equivalent of a swept private key โ a single transaction, cheap to broadcast, devastating when it lands.
Third, Tenet's commercial position frames the severity numbers. Publishing agent-jackstop alongside the DEF CON presentation is a classic research-as-demand-generation move. The research is real. The tool is useful. The framing also benefits from elevated alarm. None of this disqualifies the findings, but it means the quantitative claims โ 85%, 2,388 organizations, 27% of the Fortune 1000 โ arrive aligned with a commercial interest in keeping attention high. Independent replication is the only clean arbiter.
Contrarian: What the Bulls Got Right
The attack is real. The panic is misdirected. Both statements are true.
Consider what the skeptics of the "AI is out of control" narrative have been saying. The attack requires a human in the loop. The agent must be invoked on the poisoned issue. If an organization routes error triage through a human-only process, the chain breaks before stage four. That dependency is not a comfort; it is a target. But it is a target for social engineering โ an attacker skill that has existed for decades. The novel part is not the manipulation. The novel part is the scale of instructions that one manipulated human can cause an autonomous agent to execute.
The deeper point: the underlying vulnerability was never the AI. It was the credential model of the internet โ secrets treated as public identifiers, machine credentials with excessive scope, and tool chains that assume trust inside the perimeter. The AI agent did not create this failure. It simply read the error log the way any network request could have all along. Framing Agentjacking as evidence that "AI is dangerous" is a category error. The correct framing is that default trust is dangerous, and that we keep building systems on top of it.
The timing may even be beneficial. Agentjacking arrives as a pre-regulatory safety brake, before AI-agent adoption reaches full enterprise scale. It will force security committees to ask the right questions about data provenance, tool permissions, egress control, and credential scope โ before a larger incident forces those questions under crisis conditions. The Terra-Luna collapse of 2022 was a catastrophe for its holders and a wake-up call for the wider market. Agentjacking is the same shape, much earlier in the cycle. The organizations that treat it as an architectural mandate rather than a patch note will be the ones that do not relive it.
Takeaway: Who Owns the Fix?
There is no CVE in this story, no coordinating body, no single party accountable for the trust boundary that made it possible.

The open questions are governance questions. Will MCP evolve to require provenance tags, confidence declarations, and instruction-intent markers on every tool output? Will Sentry convert DSNs from public identifiers into authenticated, rotating credentials? Will enterprises demand signed error envelopes from their monitoring vendors, and will they require agents to treat tool output as untrusted by default?
The code is already written. The attacks are already priced. The only open question is whether the ecosystem treats Agentjacking as a patch note or as an architectural mandate.
I have watched this movie before. Echoes of past bubbles resonate in current code. The ones who survive are the ones who read the logs carefully โ before the logs learn to read them back.