<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hamvero Technologies</title>
    <description>The latest articles on DEV Community by Hamvero Technologies (@hamvero).</description>
    <link>https://dev.to/hamvero</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4220518%2Fd1ffb927-7169-4453-95ed-6a375af8b54a.png</url>
      <title>DEV Community: Hamvero Technologies</title>
      <link>https://dev.to/hamvero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamvero"/>
    <language>en</language>
    <item>
      <title>Next.js 16.3 Instant Navigations: What It Actually Does to Your Page Loads</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:35:15 +0000</pubDate>
      <link>https://dev.to/hamvero/nextjs-163-instant-navigations-what-it-actually-does-to-your-page-loads-1l7</link>
      <guid>https://dev.to/hamvero/nextjs-163-instant-navigations-what-it-actually-does-to-your-page-loads-1l7</guid>
      <description>&lt;p&gt;The long complaint about server-rendered React is navigation speed. A click waits on the server before anything changes on screen, and the app feels slower than a client-side SPA. Next.js 16.3 ships features aimed at that gap. The mechanism matters more than the feature names, because the trade-off is real.&lt;/p&gt;

&lt;h2&gt;
  
  
  What shipped
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Instant Navigations&lt;/strong&gt; gives each route a strategy: &lt;code&gt;Stream&lt;/code&gt; or &lt;code&gt;Cache&lt;/code&gt; makes the navigation instant, and &lt;code&gt;Block&lt;/code&gt; opts out. "Instant" changes from a global setting to a per-route decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partial Prefetching&lt;/strong&gt; carries the architectural weight. It caches a reusable shell per route on the client. On click, the shell renders immediately while the page data streams in behind it.&lt;/p&gt;

&lt;p&gt;The release also added server-rendered data, optimistic updates, and live client capabilities. The direction is a responsiveness match with client-driven SPAs, without giving up server rendering.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the shell works
&lt;/h2&gt;

&lt;p&gt;Most routes have a stable outer structure and a variable inner one. Nav, sidebar, layout chrome, and page skeleton stay the same between two product pages. The product data changes.&lt;/p&gt;

&lt;p&gt;The framework caches that stable part client-side ahead of time. On click it paints, and the variable part streams into a visible frame instead of a blank screen. Skeletons did this manually. 16.3 makes it automatic per route.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-off release notes skip
&lt;/h2&gt;

&lt;p&gt;Prefetching spends bandwidth and server work on navigations that may never happen.&lt;/p&gt;

&lt;p&gt;Prefetch shells for every link in view and you pay for routes the user does not visit. A desktop connection hides that cost. A metered mobile connection with a link-heavy page does not, and the user pays it rather than you, which makes it easy to under-weigh while testing on a fast laptop.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Block&lt;/code&gt; exists for this. Treat it as configuration rather than an escape hatch. Routes that cost a lot to prepare, routes people rarely open, and anything behind a confirmation step are reasonable candidates.&lt;/p&gt;

&lt;p&gt;Measure prefetch volume on a representative page before turning this on broadly, and check data transfer on a throttled connection instead of a Lighthouse score on an unthrottled one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Versions and support
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;16.3.x is the Active LTS line.&lt;/strong&gt; The August 2026 security release moved to 25 August, fixed two critical vulnerabilities, and shipped 16.3.3 alongside 15.5.24.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15.5.x is Maintenance LTS&lt;/strong&gt;, still receiving backported security fixes. Staying there is a supported choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16 dropped Edge runtime support.&lt;/strong&gt; Canary work removed Edge runtime handling from the use-cache wrapper. Anything depending on Edge runtime needs a migration plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recent 16.3 backports covered &lt;code&gt;next/image&lt;/code&gt; disk cache handling (skipping and rejecting 0-byte entries), CSP nonces on script tags in loading and template files, and standalone output emitting whole-app server NFTs with an adapter. The CSP nonce fix matters if you run a strict policy and had been working around missing nonces by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrade or wait
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Users complain the app feels slow between pages:&lt;/strong&gt; upgrade, and try Partial Prefetching first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pages are mostly static with little navigation:&lt;/strong&gt; the gain is marginal and the prefetch cost is not free. Upgrade for the security fixes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You are stable on 15.5:&lt;/strong&gt; Maintenance LTS still gets security backports, so there is no rush to change majors for a performance feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One signal about direction: 16.2 stabilized the Adapter API and shared tests across providers, and 16.3 added agent-facing tooling including React state introspection from a real browser and a focused MCP server. The framework now invests in two developer experiences, human and agent, which is a bet about who writes this code next.&lt;/p&gt;

&lt;p&gt;The full analysis, with the LTS table and backport details: &lt;a href="https://www.hamvero.space/blog/nextjs-16-3-instant-navigations/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/nextjs-16-3-instant-navigations/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>performance</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A New Open-Weight Model Finds Security Bugs for $2.38 a Run, and It's Not More Accurate Than Claude</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:34:33 +0000</pubDate>
      <link>https://dev.to/hamvero/a-new-open-weight-model-finds-security-bugs-for-238-a-run-and-its-not-more-accurate-than-claude-2987</link>
      <guid>https://dev.to/hamvero/a-new-open-weight-model-finds-security-bugs-for-238-a-run-and-its-not-more-accurate-than-claude-2987</guid>
      <description>&lt;p&gt;Cantina Security released apex-flash-1 on 2 October: an open-weight, MIT-licensed model built to read code, use tools, pursue an exploit, and verify that it worked against a live target. Most coverage led with the cost figure, $2.38 to run a 60-task benchmark against $74.68 for Claude Opus 5 High.&lt;/p&gt;

&lt;p&gt;That figure is not a capability claim. Opus solved more tasks. apex-flash-1 solved fewer for a fraction of the money, which is a useful trade and not a win on accuracy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the model is
&lt;/h2&gt;

&lt;p&gt;Cantina built it with Yeta Labs as a reinforcement-learning (GRPO) post-train of Z.ai's GLM-5.3-Flash, at 321.3 billion total parameters. Cantina describes it as a worker model: something a larger orchestrating agent directs at a focused investigation, rather than an agent you point at a codebase and leave.&lt;/p&gt;

&lt;p&gt;Training data came from Cantina's own security work. Fifty real vulnerability cases, each expanded into three versions with different access and direction, produced 150 training tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The benchmark
&lt;/h2&gt;

&lt;p&gt;Cantina tested three models on 60 held-out tasks drawn from 20 vulnerability cases outside the training set. Each task ran in an isolated environment, and a verifier checked the target's end state instead of trusting the model's report:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Tasks solved&lt;/th&gt;
&lt;th&gt;Pass@1&lt;/th&gt;
&lt;th&gt;Estimated cost (60 tasks)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5 High&lt;/td&gt;
&lt;td&gt;43/60&lt;/td&gt;
&lt;td&gt;71.7%&lt;/td&gt;
&lt;td&gt;$74.68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;apex-flash-1&lt;/td&gt;
&lt;td&gt;40/60&lt;/td&gt;
&lt;td&gt;66.7%&lt;/td&gt;
&lt;td&gt;$2.38&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3-Flash (base model)&lt;/td&gt;
&lt;td&gt;36/60&lt;/td&gt;
&lt;td&gt;60.0%&lt;/td&gt;
&lt;td&gt;$4.56&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Opus remains the most accurate of the three. apex-flash-1 closes most of the gap to Opus over the untuned base model, at roughly 31 times lower cost than Opus and about half the cost of its own base model.&lt;/p&gt;

&lt;p&gt;Missing three or four more tasks out of 60 in exchange for that bill is a legitimate trade. Needing the last few points of accuracy regardless of cost is also legitimate, and this result does not change which model wins there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware the name hides
&lt;/h2&gt;

&lt;p&gt;apex-flash-1 needs roughly 640GB of GPU memory for BF16 inference. "Flash" describes the base model lineage, not the machine you run it on. It deploys through vLLM, SGLang, Transformers, or Docker Model Runner, and it is not a workstation experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The second checkpoint
&lt;/h2&gt;

&lt;p&gt;Cantina shipped apex-flash-1-abliterated alongside it, an experimental derivative with modified refusal behavior. None of the published numbers describe that variant, and it has no evaluation at all.&lt;/p&gt;

&lt;p&gt;Standardizing on this model family means pinning the exact weights you deploy. A checkpoint with modified safeguards does not inherit the tested behavior of the one with the benchmark attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  The wider field
&lt;/h2&gt;

&lt;p&gt;Aikido Security's Altar-1 (expert pruning and quantization, reporting 60.4% recall on a 32-CVE internal set) and Cisco's Foundation-Sec-8B-Reasoning (instruction-tuned and RLHF'd on security data) both test the same bet: a model tuned for security work can approach frontier accuracy on narrow tasks for far less money.&lt;/p&gt;

&lt;h2&gt;
  
  
  The caveat that matters
&lt;/h2&gt;

&lt;p&gt;Every number above comes from Cantina, on Cantina's 60-task internal benchmark, with no independent replication. That does not make the result wrong. It makes 66.7% a vendor figure until somebody else runs it.&lt;/p&gt;

&lt;p&gt;If this model matters to your work, run it against your own vulnerability cases before treating the published table as generalizable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authorized use
&lt;/h2&gt;

&lt;p&gt;A model trained to pursue an exploit and verify its effect on a running target is dual-use by design. The same capability makes defensive verification work. Cantina frames the release around authorized security research, and the MIT license plus published benchmark show a company being explicit about what it built.&lt;/p&gt;

&lt;p&gt;Deploy it in controlled, scoped, authorized environments. Not against systems you do not own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you evaluate it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test your own cases&lt;/strong&gt; before trusting 66.7% on your codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget for 640GB of GPU memory&lt;/strong&gt; before planning anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirm the standard checkpoint&lt;/strong&gt;, not the abliterated variant, if you need the behavior the benchmark describes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat it as a cost tool for narrow, authorized work&lt;/strong&gt;, not a replacement for a frontier model where accuracy outweighs cost per task.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full analysis, with methodology and sources: &lt;a href="https://www.hamvero.space/blog/cantina-apex-flash-1-security-model/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/cantina-apex-flash-1-security-model/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>llm</category>
    </item>
    <item>
      <title>Twelve Exploited CVEs in One Year: Why Attackers Keep Coming Back to Langflow</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:33:55 +0000</pubDate>
      <link>https://dev.to/hamvero/twelve-exploited-cves-in-one-year-why-attackers-keep-coming-back-to-langflow-1kbg</link>
      <guid>https://dev.to/hamvero/twelve-exploited-cves-in-one-year-why-attackers-keep-coming-back-to-langflow-1kbg</guid>
      <description>&lt;p&gt;Twelve Langflow vulnerabilities were exploited in the wild during 2026. In all prior years combined, there was one. Successful exploitation attempts across that set exceed 15,000.&lt;/p&gt;

&lt;p&gt;A run like that points at what AI development infrastructure has become worth attacking.&lt;/p&gt;

&lt;h2&gt;
  
  
  The current flaw
&lt;/h2&gt;

&lt;p&gt;CVE-2026-0768 is a CVSS 9.8 unauthenticated remote code execution flaw in Langflow's custom component editor, specifically the code validator. ZDI published it as a zero-day advisory on 9 January 2026. It affects Langflow 1.4.2 and earlier.&lt;/p&gt;

&lt;p&gt;The mechanism is short: the &lt;code&gt;validate&lt;/code&gt; endpoint takes a user-supplied &lt;code&gt;code&lt;/code&gt; parameter and passes it to Python's &lt;code&gt;exec()&lt;/code&gt; without sanitization. No authentication, and execution happens as root.&lt;/p&gt;

&lt;p&gt;VulnCheck saw exploitation attempts on its UK honeypots hours before public disclosure. About 50 attempts over a weekend became 360 observed attacks, mostly from Russia. Separate analysis put the exposed population near 7,000 servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What gets taken
&lt;/h2&gt;

&lt;p&gt;This is where the story stops being about one CVE. After root execution, the attacker runs reconnaissance and reads environment variables, according to VulnCheck's Caitlin Condon. The target list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;OPENAI_API_KEY&lt;/code&gt; and Anthropic tokens&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AWS_ACCESS_KEY_ID&lt;/code&gt; and &lt;code&gt;AWS_SECRET_ACCESS_KEY&lt;/code&gt;, plus GCP and Azure credentials&lt;/li&gt;
&lt;li&gt;Langflow superuser authentication keys&lt;/li&gt;
&lt;li&gt;Database connection strings&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/root/.cache/langflow/secret_key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.ssh&lt;/code&gt; access and &lt;code&gt;.bash_history&lt;/code&gt;, for lateral movement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nobody attacks Langflow for the flow diagrams. A server that runs your workflows also holds every credential those workflows need, usually as static values in environment variables.&lt;/p&gt;

&lt;p&gt;That is an architectural property of the category. Any self-hosted platform that executes user-defined workflows and stores long-lived provider keys has the same shape. Langflow gets hit because it is popular and exposed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 2026 pattern
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-33017&lt;/strong&gt; (March): unauthenticated RCE in the public flow build endpoint, weaponized within about 20 hours, used to harvest OpenAI, Anthropic, and AWS credentials before pivoting to Monero mining. Added to CISA KEV on 25 March.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-5027&lt;/strong&gt; (CVSS 8.8): path traversal and arbitrary file write through the files endpoint, escalatable to RCE, with exploitation observed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-55255&lt;/strong&gt;: unauthorized access to workflows, data theft, second-stage malware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-0770&lt;/strong&gt;: root-level command execution for credential extraction and malware deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-9198&lt;/strong&gt;: CISA flagged it after public proof-of-concepts surfaced.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two problems repeat across that list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incomplete patching.&lt;/strong&gt; CVE-2025-3248, disclosed in April 2025, was a different RCE in the same validate endpoint, fixed in 1.3.0. CVE-2026-0768 is a later injection in the same area. JFrog found versions reported as patched for related CVEs still exploitable after fixes shipped. A version number has not been a reliable signal here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A shorter window than your process assumes.&lt;/strong&gt; Twenty hours from disclosure to weaponization in March. Exploitation attempts before public disclosure in the current case. A response plan built on days is already behind.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you run Langflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find exposed instances.&lt;/strong&gt; Exposure is the biggest risk factor, and many instances reach the internet by accident.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set &lt;code&gt;LANGFLOW_AUTO_LOGIN&lt;/code&gt; to false&lt;/strong&gt; and enforce authentication at the network edge rather than relying on the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restrict network access.&lt;/strong&gt; Rarely does a Langflow instance need to be reachable from the open internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate exposed credentials&lt;/strong&gt;: OpenAI, Anthropic, AWS, GCP, Azure, database strings. Assume anything exposed was harvested. Rotation is the only remedy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check environment variables, local secret files, and &lt;code&gt;.bash_history&lt;/code&gt;&lt;/strong&gt; for signs of access and lateral movement.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The structural fix and its cost
&lt;/h2&gt;

&lt;p&gt;Patching faster helps and will not close this. Twelve CVEs in a year, with a history of incomplete fixes, calls for a smaller blast radius.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop embedding static API keys in flows.&lt;/strong&gt; Brokered, short-lived credentials through Vault or a cloud KMS shrink the value of a successful exploit. A stolen 15-minute token is an incident. A stolen long-lived &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; is a bill and a breach.&lt;/p&gt;

&lt;p&gt;The stronger version of the argument holds up too: a server that executes your flows and stores your keys is a high-value target by construction, and the safest architecture has no hosted endpoint executing anything. That trade costs you one-click cloud runs. Whether it pays depends on what the convenience buys your team.&lt;/p&gt;

&lt;p&gt;Treating AI tooling as outside vulnerability management stopped being defensible. Twelve exploited CVEs in twelve months puts Langflow-class infrastructure in the same tier as any internet-facing application server, with the same patching cadence, exposure monitoring, and credential hygiene.&lt;/p&gt;

&lt;p&gt;The full write-up, with the exploitation timeline and sources: &lt;a href="https://www.hamvero.space/blog/langflow-twelfth-exploited-cve/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/langflow-twelfth-exploited-cve/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MCP vs. REST APIs for Agentic Tools: When Each Actually Wins</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:32:58 +0000</pubDate>
      <link>https://dev.to/hamvero/mcp-vs-rest-apis-for-agentic-tools-when-each-actually-wins-2296</link>
      <guid>https://dev.to/hamvero/mcp-vs-rest-apis-for-agentic-tools-when-each-actually-wins-2296</guid>
      <description>&lt;p&gt;Building something agentic means hitting this decision within the first week: connect a REST API the model can call, or expose an MCP server. Most explanations stop at "MCP is for tools, REST is for services", which does not help anyone choose. This one goes further.&lt;/p&gt;

&lt;h2&gt;
  
  
  The structural difference
&lt;/h2&gt;

&lt;p&gt;A REST API has fixed, known endpoints. The client, here an LLM-driven agent, needs the request and response shape ahead of time, usually through an OpenAPI spec translated into a tool definition. A new capability means a new endpoint and an updated spec.&lt;/p&gt;

&lt;p&gt;MCP inverts that. The server exposes &lt;code&gt;list_tools&lt;/code&gt; and tells the model at runtime what it can do and which parameters each action takes. No capability has to be baked into the client, and the schema is written for a model rather than adapted from a human-facing API.&lt;/p&gt;

&lt;p&gt;Sessions differ too. MCP carries persistent, stateful sessions over stdio or SSE. REST stays stateless, and the client handles session state itself through tokens or cookies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where REST wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maturity.&lt;/strong&gt; Two decades of auth standards, caching layers, rate limiting, monitoring, and documentation conventions. MCP has a fraction of that history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-agentic consumers.&lt;/strong&gt; Web frontends, mobile apps, and internal services all speak REST. An MCP-only build leaves you maintaining a second interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small fixed surfaces.&lt;/strong&gt; Three endpoints that never change gain nothing from runtime discovery, and a static OpenAPI spec is easier to test and secure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure support.&lt;/strong&gt; Cloud providers, frameworks, and load balancers understand REST without configuration. MCP hosting patterns are still settling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where MCP wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Runtime discovery.&lt;/strong&gt; Plugins, user-installed extensions, and evolving toolsets change what is available. Discovery avoids the redeploy cycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model-native schemas.&lt;/strong&gt; Tool definitions are read by a model directly, which removes the wrapper that turns OpenAPI into a function-calling schema.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency across vendors.&lt;/strong&gt; An agent connected to several MCP servers gets one interaction pattern. Several independently designed REST APIs mean several auth schemes, error formats, and pagination styles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateful tool use.&lt;/strong&gt; A server that remembers context across calls in a session is native to MCP. REST needs session code written on top.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;You are building an agent that triages support tickets. It reads ticket details, searches a knowledge base, and occasionally creates a follow-up task in a project tool.&lt;/p&gt;

&lt;p&gt;Ticket reads and knowledge base search are stable operations the whole team already depends on. Keep them on REST. The endpoints exist, they are documented, and other parts of the product call them.&lt;/p&gt;

&lt;p&gt;Creating a follow-up task means calling a third-party project tool where the available actions expand over time: comment, reprioritize, assign, and whatever ships next quarter. That belongs on MCP. You get discovery of whatever the tool exposes without writing a wrapper per action.&lt;/p&gt;

&lt;p&gt;The agent's reasoning loop benefits from MCP's session awareness, since it may need something it looked up two calls ago without your code threading that state through.&lt;/p&gt;

&lt;p&gt;Nothing migrated wholesale in that example. Stable infrastructure stayed on REST. The agent-facing, changing surface went to MCP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migrating without a rewrite
&lt;/h2&gt;

&lt;p&gt;If a REST API already exists, put a thin MCP server in front of it. Translate &lt;code&gt;list_tools&lt;/code&gt; and &lt;code&gt;call_tool&lt;/code&gt; into calls against the endpoints you have. The agent gets discovery and model-native schemas, your business logic and auth stay in one place, and the web and mobile clients notice nothing.&lt;/p&gt;

&lt;p&gt;You maintain a translation layer. That costs less than rebuilding core services, and far less than running two full interfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four things to check before committing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security.&lt;/strong&gt; MCP's permission and vetting ecosystem has not caught up with the access a typical server receives. REST auth patterns are better understood. Vet an MCP server the way you vet a new dependency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation quality.&lt;/strong&gt; Server quality varies widely on a young spec. A popular server is not automatically a careful one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency by transport.&lt;/strong&gt; A local stdio server can beat a network call. Remote SSE servers bring their own profile, so benchmark rather than assume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging.&lt;/strong&gt; curl, Postman, and browser devtools have covered REST for years. MCP tooling is thinner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the numbers say
&lt;/h2&gt;

&lt;p&gt;TrueFoundry's benchmarks put Streamable HTTP, MCP's current remote transport, at roughly 10ms per call under load, holding 290 to 300 requests per second at full success in a shared-session deployment. The older SSE transport dropped to 7 to 30 requests per second under the same load with latency in the hundreds of milliseconds, which is why Streamable HTTP replaced it in the spec.&lt;/p&gt;

&lt;p&gt;Library bugs can outweigh all of that. A 2026 benchmark traced about 40ms of fixed overhead on every HTTP tool call to rmcp v0.16, a Rust MCP library that hardcoded SSE-style framing for stateless replies that should have returned plain JSON. That inflated latency roughly 35 times over the tool's actual I/O time. It was fixed in v0.17.0.&lt;/p&gt;

&lt;p&gt;A slow MCP server may be measuring the protocol or one library's bug. Only your own benchmark separates the two.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;Default to REST for stable, high-traffic operations with consumers beyond the agent. Use MCP at the tool-calling boundary where capabilities change at runtime. Keep core services on REST and build the agent-facing layer on MCP.&lt;/p&gt;

&lt;p&gt;The full breakdown, including transport benchmarks and sources: &lt;a href="https://www.hamvero.space/blog/mcp-vs-rest-apis-agentic-tools/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/mcp-vs-rest-apis-agentic-tools/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>architecture</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Why Rust Quietly Became the Backbone of AI Agent Infrastructure</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:32:15 +0000</pubDate>
      <link>https://dev.to/hamvero/why-rust-quietly-became-the-backbone-of-ai-agent-infrastructure-7db</link>
      <guid>https://dev.to/hamvero/why-rust-quietly-became-the-backbone-of-ai-agent-infrastructure-7db</guid>
      <description>&lt;p&gt;Most "why Rust" pieces reach for speed. Speed is true and irrelevant to why infrastructure teams picked Rust for the layer under AI agents. The reason has more to do with what happens when you hand software root access and let it run unsupervised.&lt;/p&gt;

&lt;h2&gt;
  
  
  The growth numbers
&lt;/h2&gt;

&lt;p&gt;GitHub's fastest-growing AI agent repositories in Q1 2026 show a clear shift. Rust AI tools from 2023 and 2024 averaged about 25 stars a day. The 2026 wave of Rust AI infrastructure projects averaged roughly 404 stars a day, a 16x jump that holds when you exclude corporate-backed repos and look only at community projects.&lt;/p&gt;

&lt;p&gt;That pattern describes infrastructure teams making a language choice for a specific job, not Rust enthusiasts building niche LLM tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  The job changed
&lt;/h2&gt;

&lt;p&gt;Early agent frameworks, LangChain and AutoGPT and CrewAI in their original form, called APIs and returned strings. A failure produced a malformed response.&lt;/p&gt;

&lt;p&gt;Agents in 2026 run shell commands, manage files, spawn processes, and drive browsers, often with permission modes that skip manual approval for speed. Software at that access level runs autonomously for hours. Memory safety moves from preference to requirement.&lt;/p&gt;

&lt;p&gt;Rust's ownership model and borrow checker provide memory safety without a garbage collector. Predictable behavior matters more than raw throughput when a tool call can delete a branch or reach production credentials. Avoiding a GC pause is a small win. Avoiding a use-after-free in a process holding your keys is the whole point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the pattern shows up
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vector databases.&lt;/strong&gt; Qdrant, widely used in RAG pipelines, is written in Rust for throughput and memory efficiency in high-volume similarity search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tooling that runs constantly.&lt;/strong&gt; Astral's &lt;code&gt;ruff&lt;/code&gt; and &lt;code&gt;uv&lt;/code&gt; replaced slower Python equivalents for the work happening in the background of every developer session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent frameworks.&lt;/strong&gt; Rig gives Rust developers one trait-based interface across LLM providers, where switching from OpenAI to Anthropic comes close to a one-line change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common thread is Rust at the systems, execution, and sandboxing layer. That is where a bug becomes an incident rather than a wrong answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not mean
&lt;/h2&gt;

&lt;p&gt;Your agent stack does not need a rewrite. Python still runs agent logic, RAG pipelines, and most of the framework ecosystem, because the LLM tooling, examples, and hiring pool live there.&lt;/p&gt;

&lt;p&gt;Production systems in 2026 look mixed: Python for reasoning, Go or similar for API and governance routing, Rust for the sandboxed executor where agent-generated actions reach the machine.&lt;/p&gt;

&lt;p&gt;The cost is real. Engineers who know both Rust systems work and agent tooling are rare, which pushes compensation up at well-funded companies. Rust's agent ecosystem is smaller than Python's, so you write more yourself and find fewer examples to copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four companies, one boundary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft&lt;/strong&gt; made Rust a Tier-1 language for new projects internally, alongside C++ and C#.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt; rewrote Codex CLI from TypeScript to a native Rust binary and removed the Node.js runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare&lt;/strong&gt; built Kitesurf, an agent-first browser engine in Rust compiled to WebAssembly, using roughly 7x less memory than Chromium for the same work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; made a comparable infrastructure bet in the same window.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of the four rewrote their AI logic. All four moved the execution, sandboxing, or runtime layer. Four unrelated teams drawing the same architectural line tells you something about where the risk sits.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do with this
&lt;/h2&gt;

&lt;p&gt;An agent that runs shell commands, touches the filesystem, or holds real permissions earns a Rust rewrite at the execution layer faster than anywhere else. An agent that calls APIs and returns text does not, and Python's ecosystem depth still wins there.&lt;/p&gt;

&lt;p&gt;For a cheaper entry point, adopt the Rust tools already in the workflow. &lt;code&gt;ruff&lt;/code&gt; and &lt;code&gt;uv&lt;/code&gt; deliver the performance and reliability argument without a line of Rust.&lt;/p&gt;

&lt;p&gt;The data and the four examples are in the full write-up: &lt;a href="https://www.hamvero.space/blog/rust-ai-agent-infrastructure/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/rust-ai-agent-infrastructure/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>architecture</category>
      <category>performance</category>
    </item>
    <item>
      <title>GitSpawn: Your AI Coding Agent Runs Attacker Code Before You Type Anything</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:31:28 +0000</pubDate>
      <link>https://dev.to/hamvero/gitspawn-your-ai-coding-agent-runs-attacker-code-before-you-type-anything-15ln</link>
      <guid>https://dev.to/hamvero/gitspawn-your-ai-coding-agent-runs-attacker-code-before-you-type-anything-15ln</guid>
      <description>&lt;p&gt;Open a folder with Claude Code and it runs &lt;code&gt;git status&lt;/code&gt; before you type anything. It runs before the workspace-trust prompt appears, and on some agents before you have authenticated. A folder that came from somewhere else decides what that command executes.&lt;/p&gt;

&lt;p&gt;Manifold Security disclosed the flaw in early September as GitSpawn: eight findings across seven command-line AI coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git does the work, not the model
&lt;/h2&gt;

&lt;p&gt;Manifold's framing explains the case better than any summary: nothing here is new, and nothing here lives in the model. The bug sits in the subprocess an agent starts at session startup to work out where it is.&lt;/p&gt;

&lt;p&gt;Agents need context constantly. Which branch is this? What changed? What is staged? Several products answer those questions by invoking Git in the background. Git reads repository-local configuration when it runs, and some settings, &lt;code&gt;core.fsmonitor&lt;/code&gt; among them, name a command that Git executes.&lt;/p&gt;

&lt;p&gt;A malicious &lt;code&gt;.git/config&lt;/code&gt; needs one section:&lt;br&gt;
source links: &lt;a href="https://www.hamvero.space/blog/gitspawn-ai-agents-git-config-rce/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/gitspawn-ai-agents-git-config-rce/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>git</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Auditing MCP Servers for Supply-Chain Risk with Bumblebee</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:30:07 +0000</pubDate>
      <link>https://dev.to/hamvero/auditing-mcp-servers-for-supply-chain-risk-with-bumblebee-1pdc</link>
      <guid>https://dev.to/hamvero/auditing-mcp-servers-for-supply-chain-risk-with-bumblebee-1pdc</guid>
      <description>&lt;p&gt;Install a dozen MCP servers in a few months and you lose track of what any of them do. Most of us run one install command from a Discord recommendation, grant filesystem or terminal access, and move on. Bumblebee, an open-source CLI from Perplexity, targets that gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it checks
&lt;/h2&gt;

&lt;p&gt;Bumblebee is a read-only scanner written in Go with no external dependencies. That matters more than it sounds: a security tool carrying twenty transitive dependencies is a supply-chain risk pretending to solve one. It covers four surfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Package manifests&lt;/strong&gt; across npm, PyPI, Go modules, RubyGems, and Composer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installed MCP servers&lt;/strong&gt;, matched against known-malicious and suspicious registries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code extensions&lt;/strong&gt; installed on the machine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser extensions&lt;/strong&gt; in your inventory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It changes nothing. It reads, compares against threat registries, and reports. You do not want the scanner to be the component with write access to your environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it sits next to npm audit and Snyk
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;npm audit&lt;/code&gt;, Dependabot, and Snyk handle package manifests well. None of them look at MCP servers, editor extensions, or browser extensions, and that gap grew as MCP servers started receiving broad permissions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;npm audit&lt;/code&gt; and Dependabot&lt;/strong&gt; track dependency vulnerabilities inside one ecosystem and run in CI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snyk&lt;/strong&gt; has a broader vulnerability database and better remediation guidance. It is paid beyond basic use, and it does not cover MCP servers as of this writing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bumblebee&lt;/strong&gt; has the narrower scope. It will not tell you how to fix a flagged package, and it is the only one of the three checking installed MCP servers, editor extensions, and browser extensions against threat data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most teams end up running more than one. Bumblebee covers the surfaces the others ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who needs it now
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Solo developers installing MCP servers from GitHub and Discord links.&lt;/strong&gt; Least existing tooling covers this gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teams on shared dev machines or shared CI runners.&lt;/strong&gt; A compromised server there becomes a lateral-movement problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone running servers with filesystem or terminal permissions.&lt;/strong&gt; That access level is what makes a bad server dangerous.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teams enforcing extension allowlists through MDM.&lt;/strong&gt; Lower priority, though a second check still helps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why MCP specifically
&lt;/h2&gt;

&lt;p&gt;Auditing npm and PyPI packages is old ground. The MCP server check is new. MCP adoption ran ahead of its vetting culture, and the ecosystem resembles npm around 2015: many small, single-maintainer servers, thin review, and users granting filesystem access, terminal execution, and API keys without much thought.&lt;/p&gt;

&lt;p&gt;A compromised MCP server is a program that can read your codebase and send data anywhere it likes. People grant that access in one click.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Install. Go 1.25 or newer.&lt;/strong&gt;&lt;br&gt;
source links: &lt;a href="https://www.hamvero.space/blog/auditing-mcp-servers-bumblebee/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/auditing-mcp-servers-bumblebee/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>mcp</category>
      <category>opensource</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Plugin4Shell</title>
      <dc:creator>Hamvero Technologies</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:25:58 +0000</pubDate>
      <link>https://dev.to/hamvero/plugin4shell-2dag</link>
      <guid>https://dev.to/hamvero/plugin4shell-2dag</guid>
      <description>&lt;p&gt;A plugin pinned to a reviewed commit hash should install that exact code. That assumption underpins how most organizations secure AI coding agents. In September it failed across all four major ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  The broken check
&lt;/h2&gt;

&lt;p&gt;The AIR Security research lab named the flaw &lt;strong&gt;Plugin4Shell&lt;/strong&gt;. Researchers Or Nevo, Dor Granat, and Niv Hoffman found it in May 2026 and built working exploits against Claude Code, OpenAI Codex, GitHub Copilot, and Gemini CLI. They disclosed to each vendor the following month.&lt;/p&gt;

&lt;p&gt;The mechanics are simple enough to explain in a paragraph. A marketplace or your security team reviews a plugin at a specific Git commit and records that commit's SHA hash. The agent should then fetch exactly that code.&lt;/p&gt;

&lt;p&gt;The affected agents request the pinned SHA during Git checkout. None of them verify that the checked-out working tree matches it. That gap runs straight into Git reference-name ambiguity: an attacker creates a branch whose name is the same 40-character hexadecimal string as the pinned commit, sets it as the default branch, and Git may resolve the branch instead of the commit. The agent installs attacker code while reporting a successful install of the trusted version.&lt;/p&gt;

&lt;p&gt;One missing verification step removes the entire pinning guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why nobody has to click anything
&lt;/h2&gt;

&lt;p&gt;Several coding agents update installed plugins automatically. An attacker can publish a benign plugin, pass marketplace review on merit, wait for adoption, and swap the code later. The victim takes no action and makes no mistake.&lt;/p&gt;

&lt;p&gt;The researchers made this point directly, and it undercuts the usual "users install sketchy things" defense. Exposure requires only that a plugin is installed, from a marketplace you trust, reviewed and pinned the way the security model intends.&lt;/p&gt;

&lt;p&gt;The blast radius follows from what plugins can reach. Agent plugins, skills, and extensions run with the permissions of the developer operating the agent: source code, secrets, cloud environments, production systems, internal services, enterprise data. An attacker gets the same reach as the employee.&lt;/p&gt;

&lt;p&gt;AIR calls Plugin4Shell the first true supply-chain vulnerability of the AI agent ecosystem. Earlier agent security research went after the model or the agent's reasoning. This one targets the distribution layer, the marketplaces feeding code to millions of machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patch status differs by vendor
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt;: patched by Anthropic in 2.1.179&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex&lt;/strong&gt;: patched by OpenAI in 0.146.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot&lt;/strong&gt;: Microsoft received the report and has not shipped a fix&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini CLI&lt;/strong&gt;: Google deprecated the CLI instead of patching it, and points users at Antigravity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deprecation is not remediation. An install on a developer's machine stays vulnerable after the vendor stops supporting it. If Gemini CLI runs anywhere on your team, migrating off it is now a security task, not a roadmap item.&lt;/p&gt;

&lt;h2&gt;
  
  
  Marketplaces cannot fix this centrally
&lt;/h2&gt;

&lt;p&gt;You might expect GitHub or whichever marketplace you use to close the gap for everyone. AIR is explicit that it cannot: the verification check runs inside the agent, not at the marketplace. Each vendor has to fix it in the agent.&lt;/p&gt;

&lt;p&gt;Updating is the complete fix wherever one exists. Copilot and Gemini CLI have no configuration that restores the pinning guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four things to do now
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Update Claude Code to 2.1.179+ and Codex to 0.146.0+.&lt;/strong&gt; A real fix exists for both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat Gemini CLI installs as a migration task.&lt;/strong&gt; No patch is coming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assume pinning does not protect Copilot.&lt;/strong&gt; Review which secrets and production access sit in the environments where it runs, and reduce what a successful plugin swap would reach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit installed plugins across your team's agents.&lt;/strong&gt; A pinned plugin from a trusted marketplace was the failing scenario, so "we only install reviewed plugins" describes the problem rather than the defense.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The same layer failed twice in one month
&lt;/h2&gt;

&lt;p&gt;GitSpawn came earlier in September: a malicious &lt;code&gt;.git/config&lt;/code&gt; executed code across Claude Code, Codex, Cursor, and four other agents, and four vendors were still unpatched at a September 1 retest.&lt;/p&gt;

&lt;p&gt;The tooling around agents matured faster than the verification underneath it. Marketplaces, SHA pinning, and approval layers all existed. None of them were enforced end to end. Expect more of these, and treat each one as a class of bug rather than an isolated incident.&lt;/p&gt;

&lt;p&gt;The full write-up has the vendor-by-vendor patch table and source links: &lt;a href="https://www.hamvero.space/blog/plugin4shell-ai-coding-agents/" rel="noopener noreferrer"&gt;https://www.hamvero.space/blog/plugin4shell-ai-coding-agents/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
