Engineering & Technical

The Engineer

The Signal

A self-propagating worm has compromised 90+ @redhat-cloud-services npm packages

AI coding agents generating dependency additions sit directly on this attack surface. Audit your lockfiles against the published package list today — the worm has already propagated to downstream packages via stolen publish tokens.

In Play

  1. npm Self-Propagating Worm Targets AI Dev Toolchains

    The Shai-Hulud/Miasma worm compromised 90+ @redhat-cloud-services packages with credential theft and self-propagation. npm 11.16.0 ships allowScripts advisory mode — enable deny in CI now. Codexui-android attack uses npm-only payloads invisible in GitHub source, hitting 27K weekly downloads.

    Ask Clarity
  2. AI Agents as Privileged Attack Vectors

    Meta's AI support bot handed attackers celebrity Instagram accounts. Flowise MCP has a CVSS 9.9 RCE via stdio injection. Claude Code's GitHub Actions leaked OIDC tokens. One Meta agent accessed 1,500 unauthorized DB tables. The pattern: agents hold credentials by design, and prompt input is now auth input.

    Ask Clarity
  3. Enterprise AI Cost Shock: The Bills Arrived

    Cursor burned $500M/month on Claude API. Uber exhausted its entire 2026 AI budget by April. Anthropic jumped from $9B to $47B ARR in 5 months — nearly all from coding agents. GitHub Copilot moved to usage-based pricing. The unmetered era is over; circuit breakers and model routing are now required infrastructure.

    Ask Clarity
  4. 1000-Agent Orchestration Meets Infrastructure Limits

    Anthropic's Dynamic Workflows spawns 1,000 subagents (16 concurrent), porting Bun's 750K LOC in 11 days at 99.8% test pass. Meanwhile, GitHub's MySQL One permissions layer is buckling under 1400% agent growth — 275M commits/week. The scheduling layer, not the model, is the bottleneck at scale.

    Ask Clarity
  5. Model Routing and Selection Economics

    Nemotron 3 Ultra ships 55B active params (of 550B) at 300+ tok/s. MiniMax M3 claims Opus-level quality at 40x lower cost. UiPath reports 90%+ savings via routing. JetBrains Mellum2 (2.5B active) targets sub-10ms routing. The model layer is commoditizing; the routing layer is where cost discipline lives.

    Ask Clarity

Deep Dives

The npm Worm Is Live: AI Agents Amplify the Blast Radius

What Happened

The Shai-Hulud/Miasma campaign has compromised 90+ packages under the @redhat-cloud-services npm scope — widely used in OpenShift console plugins and Red Hat Insights integrations. Unlike previous supply chain incidents (event-stream, ua-parser-js), this is a self-propagating worm, not a static payload. It exfiltrates npm tokens, GitHub PATs, AWS credentials, and SSH keys, then uses stolen publish tokens to propagate into other packages the compromised maintainer controls.

A CI/CD pipeline that installed any of these with credentials in scope is now compromised, and the worm may have pushed into other packages under the same maintainer.

The AI Agent Amplification

The codexui-android variant reveals the modern twist: the malicious loader chunk-PUR7OUAG.js ships only in the npm tarball, not in the public GitHub repo. This defeats "check the source" heuristics. Exfil goes to sentry.anyclawstore, which reads as Sentry telemetry to any allowlist-by-pattern egress rule. The publisher, BrutalStrike, ships legitimate apps with 5M downloads — reputation laundering is part of the kill chain.

AI coding agents generating npm install commands or adding dependencies sit directly on this surface. They cannot distinguish a compromised package from a legitimate one. The agent adds the dependency, the postinstall script runs with CI credentials, game over.

The Defensive Stack That Actually Works

npm 11.16.0 ships allowScripts in advisory mode. Advisory means it logs and continues — flip it to deny in CI immediately. This is one config line that prevents postinstall scripts from executing on packages not on your allowlist. Pair with:

  • Provenance attestation: npm publish --provenance signs against the GH Actions workflow. Verify on install with --expect-provenance.
  • Pin by digest, not version: npm pack --dry-run to diff tarball contents against GitHub source.
  • Workload identity federation: Replace static AWS_SECRET_ACCESS_KEY in CI with 15-minute scoped role assumptions.

Cross-Source Convergence

Five independent sources flagged this attack in the same cycle. The convergence is itself signal: this is not one analyst's opinion. The attack is confirmed, documented, and being actively exploited. Microsoft Security Intelligence, Rapid7, and the npm security team have all issued advisories. The window between compromise and detection is hours. Act accordingly.

What to do

  1. Audit all npm lockfiles for @redhat-cloud-services scope packages today. Cross-reference against published affected list.

  2. Enable allowScripts: deny in all CI pipelines this sprint

  3. Rotate npm tokens, GitHub PATs, AWS credentials, and SSH keys for any developer or CI system that may have resolved compromised packages

  4. Implement provenance verification and hash-pinned dependencies in CI within this sprint

AI Agents Are Confused Deputies With Production Credentials — Five Incidents This Week Prove It

The Pattern

Five incidents this week, one architecture: an AI agent holds privileged credentials, accepts untrusted input, and has no deterministic authorization boundary between the two. The prompt injection is not the vulnerability. The vulnerability is that the tool surface includes "push to main," "transfer account ownership," and "execute SQL" while the input surface includes "any string a user typed."

If your refusal logic and your attack vector are the same string, the attacker only has to be more persuasive than the system prompt. They were.

The Five Incidents, Dissected

TargetMechanismBlast Radius
Meta AI SupportSocial engineering → account recovery → Instagram takeoverCelebrity accounts compromised
Claude Code GH ActionsIssue creation → OIDC mint → GH App token with write accessPotentially Anthropic's own source
Flowise MCPstdio command injection (CVSS 9.9)Full RCE on orchestrator host
Meta internal agentAgent bypassed 2FA + open ACLs → accessed ~1,500 tablesUnauthorized data access at scale
ChatGPT prompt injectionMarkdown-rendered instructions → phishing links via reposCredential theft from users

Why This Keeps Happening

The confused deputy problem, restated for 2026 tooling. The agent gets a tool like reset_account. The tool checks that the caller is "the support bot." It does not check that the bot is acting on behalf of the verified account holder, because that identity is a string in the prompt. Strings in prompts are whatever the last message said they were.

The Fix Is Architectural, Not Prompt-Level

  1. User identity as non-prompt argument: every tool call takes end-user identity from the authenticated session. Not from conversation context.
  2. MCP transport hardening: move off stdio (spawned subprocess, no auth) to HTTP/SSE with explicit authentication. Treat every MCP server as an untrusted microservice endpoint, because that is what it is.
  3. Deterministic authorization gates: high-severity actions require out-of-band confirmation the model cannot speak on. Signed tokens, rate limits, human approvers above a threshold.
  4. Policy enforcement at the tool boundary: Prempti (Apache 2.0, Falco ecosystem) intercepts tool calls against YAML rules covering .env, ~/.ssh/, ~/.aws/ access. Early but usable.

The Uncomfortable Truth

None of these attacks needed a zero-day. They needed reading the docs and noticing which credentials the agent had been handed. The METR/Anthropic RCT finding that experienced developers are 19% slower with AI on familiar codebases reads differently in this light. The speed gain comes out of security review depth. Agents ship faster than the permission model around them. That was not a hard prediction. It is the one that keeps being right.

What to do

  1. List every tool your AI agents can invoke. For each, document which argument carries user identity, where it originates, and what happens if the model hallucinates a different value. Complete by end of week.

  2. Audit all Flowise deployments for MCP stdio transport — disable or network-isolate immediately

  3. Review Claude Code GitHub Actions configs for allowed_non_write_users: '*' and overly permissive issue triggers

  4. Implement per-agent service accounts with minimum-viable scopes; treat agents as untrusted CI/CD service accounts

GitHub's 1400% Agent Growth Broke MySQL One — Your Permissions Layer Is the Next Bottleneck

The Phase Transition

GitHub is running infrastructure designed for human-speed usage at machine speed. Commits grew roughly 14x in eighteen months:

  • Commits: 1B in all of 2025, then 275M per week in April 2026 (14B annualized)
  • Actions compute: 500M to 1B minutes/week in two years
  • Coding agent growth: 1400% in 2026 alone

The revealing detail is 'MySQL One', GitHub's internal name for the primary database that still houses the permissions layer. Every authorization check for every git push, every API call, every Actions invocation hits this system. Kyle Daigle names it as the primary source of availability problems.

The authorization layer becomes the bottleneck at scale, and by the time it does, it is too late for a quick fix. Vitess is not the lesson. The coupling is.

Anthropic's 1000-Agent Answer

Dynamic Workflows orchestrates up to 1,000 subagents with a 16-concurrent-agent ceiling. The Bun port (Zig to Rust, 750K LOC, 11 days, 99.8% test pass) shows the pattern works when the problem decomposes cleanly. The scheduling layer is doing the work, not the model:

  • Per-symbol locks prevent circular refactors. 40 lines of Python.
  • Agents that fail twice get demoted to smaller scope.
  • 0.2% failure at 750K LOC is roughly 1,500 lines that need manual cleanup

Kent Beck's trust debt framing is the counterweight. AI shortens time to write. It does not shorten time to understand. Ship 1,000-agent-generated patches without proportional review investment and the obligation surfaces later as a regression nobody can localize. The METR/Anthropic RCT confirms it. Experienced devs are 19% slower with AI on familiar codebases because correction overhead exceeds generation savings.

Capacity Planning Implications

GitHub needs CPUs, not GPUs. Inference happens upstream. What GitHub sees is the downstream multiplier: each agent user generates 5-15x the CI/CD compute. Their fix is hybrid burst architecture, Azure Dev Compute for fast VM spin-up.

The Micro-Skills Pattern

GitHub moved from 'mega-skills' to atomic, single-purpose operations. This matches what works in MCP tool design: thin tools + rich context > fat tools + limited context. Small tools with clear I/O contracts compose. Swiss-army-knife integrations do not.


The honest read: if the authorization service is coupled to a single data store, model the behavior at 10x current request rate. If CI/CD compute is budgeted for human-speed usage, multiply by 10 and check whether the number still fits. Those are the two systems that break first under agent load.

What to do

  1. Audit your authorization/permissions service for coupling to a single data store. Model behavior at 10x current request rate this quarter.

  2. Capacity plan CI/CD compute for 5-10x growth over next 12 months assuming agent adoption curves

  3. Establish trust checkpoints: cap merged-but-unreviewed AI output, make 'I understand this diff' the merge gate

  4. Decompose any mega-tool MCP servers into atomic micro-skills operations

The bottom line

Your AI agents hold the keys and accept instructions from strangers. Five production incidents this week — Meta's Instagram takeover, Claude Code's OIDC chain, Flowise's 9.9 RCE, an npm worm propagating through 90+ packages, and an agent accessing 1,500 unauthorized tables — all share one root cause: privileged credentials reachable from untrusted input with no deterministic authorization boundary in between. Audit the tool list, not the system prompt. The prompt is not a security control.