Security brief 19 min read Threat level: Elevated

Security brief: a critical Claude Agent SDK flaw, an MCP TypeScript SDK patch wave that needs code changes, and LMCache's pickle RCE

No new in-the-wild agentic incident, but a dense patch window: a critical argument-injection flaw in the Claude Agent SDK for Python, seven MCP TypeScript SDK advisories whose fixes mostly need code changes, and a 9.8 unauthenticated RCE in the LMCache inference cache that now has a fix. Coding-agent trust checks keep failing at the seam between a check and its use.

Covers Thu 15 Oct 08:00 to Sat 17 Oct 12:00 CEST

Source access this run was limited: the sandbox could read GitHub, anthropic.com and the MCP blog but not news outlets, NVD, CISA, JFrog or UK government sites. Every advisory below was read on GitHub. The UK parliamentary hearing, the UK government announcement, the UK AI Security Institute findings and JFrog's LMCache disclosure come from search-result summaries of press coverage that could not be opened, so they are tagged early and what is unconfirmed is stated. No CISA KEV addition for agentic software could be confirmed. The site had no reports for 16 Oct, so the window starts at the last brief's cut-off. The Claude Agent SDK advisory is dated 12 Sep on its page but entered the GitHub advisory database on 16 Oct. AGENT.md asks for a research section; no new paper was read this run, which the Research section says.

Act now

  • Upgrade `claude-agent-sdk` to 0.2.121 or later, and validate any `resume` value Affected: every release before 0.2.121 in apps that pass untrusted input as the session ID to `resume`. Check with `pip show claude-agent-sdk`. Until upgraded, accept only IDs that start with an alphanumeric character and match your own ID format.
  • Upgrade the MCP TypeScript SDK and make the code changes the advisories require `@modelcontextprotocol/sdk` to 1.32.0, or `@modelcontextprotocol/server` to 2.3.0 (and every other 2.x package to its fixed release). Then create one server and transport per request or session instead of sharing them, set `maxToolInputElements` and `maxRequestBodySize`, and pass `expectedResource` to bearer auth. If an OAuth client has contacted an untrusted MCP server, rotate its client secret and revoke its tokens.
  • Patch or isolate LMCache multiprocess deployments Affected: lmcache 0.3.9 up to but not including 0.5.6, when the multiprocess server is bound to a routable address (port 5555). Upgrade all workers and servers to 0.5.6 together. If the port was ever reachable from an untrusted network, treat the host as compromised and rotate credentials.
  • Update Claude Code to 2.1.179 or later and Claude Desktop for Windows to 1.8089.0 or later; turn off command auto-approval in Roo Code Auto-update users already have the Claude fixes. Roo Code through 3.54.0 has no fixed version listed for CVE-2026-110205 and four sibling CVEs, so do not run it with command auto-approval on repositories you do not control.

In brief

  • Claude Agent SDK for Python before 0.2.121 (CVE-2026-96620, CVSS 9.2): an untrusted `resume` value could inject `--mcp-config` and start an attacker-defined MCP server outside the SDK's permission controls.
  • MCP TypeScript SDK: seven advisories in two weeks. Upgrading alone changes little, because the size limit, audience check and tool-input cap are opt-in, and a shared-transport pattern from the README examples delivered one client's messages to another.
  • LMCache before 0.5.6 (CVE-2026-105192, CVSS 9.8): one unauthenticated ZeroMQ message reaches `pickle.loads`. Fixed 13 Oct; the example Kubernetes deployment bound every interface.
  • Coding agents again fail at the check-to-use seam: a Claude Code plugin SHA-pin bypass, a Windows `git.exe` search-path flaw in Claude Desktop, a symlink race, and five Roo Code approval-parser CVEs.
  • MCP front doors skip the human step-up: Nginx UI's MCP tools bypass its OTP check, and IntentKit and mac-shell-mcp let hidden or forbidden tools run.

Executive summary

No new in-the-wild agentic incident surfaced, so this is a patch-and-design brief. Three things matter.

First, a critical flaw in the Claude Agent SDK for Python (CVE-2026-96620, CVSS 9.2). It is not exotic: a session ID that begins with - becomes a command-line flag, and the flag can define an MCP server whose command runs at startup. It only bites apps that pass untrusted input to resume, but those are exactly the multi-tenant products people build with the SDK.

Second, the MCP TypeScript SDK published seven advisories since 30 September, five of them in the last fortnight. The lesson is in the fixes, not the bugs: the size cap, the audience check and the tool-input cap are all off by default, and one of the flaws needs your own code to change. A routine npm update leaves you exposed.

Third, LMCache, a cache layer that sits beside vLLM, shipped a fix on 13 October for an unauthenticated pickle deserialization RCE (CVSS 9.8). Press coverage of JFrog’s disclosure said it was unpatched with a public proof of concept on 7 October; the maintainers’ advisory now lists 0.5.6.

Under all of it runs one pattern. Coding agents and agent front doors keep checking a thing at one moment and using it at another: a SHA pin, a path, a command string, an OTP step-up. The agent era did not create that bug class. It multiplied the places where it can be hit by a stranger’s text.

Act now

  • Upgrade claude-agent-sdk to 0.2.121 and reject resume values that do not match your session-ID format.
  • Upgrade the MCP TypeScript SDK (1.32.0 or 2.3.0) and make the code changes: no shared transports, set the size and input caps, pass expectedResource.
  • Patch LMCache to 0.5.6 wherever the multiprocess server is routable; otherwise keep it on localhost.
  • Update Claude Code (2.1.179+) and Claude Desktop for Windows (1.8089.0+); switch off command auto-approval in Roo Code.

Incidents

No new in-the-wild agentic incident was disclosed in the window, and the campaigns in the 12 Oct brief have no public update. The nearest thing to incident news is regulatory and is covered under Policy: a UK parliamentary committee heard from OpenAI that known agent incidents may not be the full set.

Vulnerabilities

Claude Agent SDK for Python: one session ID, a command of the attacker’s choosing

OfficialCVSS 9.2 (v4)CVE-2026-9662016 Oct

What happened. GitHub’s advisory database listed GHSA-h4mw-j7qp-8mwm on 16 October. The advisory itself is dated 12 September, so a fixed release has existed for about five weeks. Versions of claude-agent-sdk before 0.2.121 passed the resume option, a session ID, to the Claude CLI without validation. The advisory notes it covers the Python package only and does not say whether the TypeScript SDK is affected.

Mechanism. A value starting with - is parsed by the CLI as a flag rather than an ID. An attacker who controls that value can inject --mcp-config and define a stdio MCP server, whose command then runs when the CLI starts. That happens before and outside the SDK’s own permission controls, which is why the score is 9.2 even though the SDK is a library and not a service. The entry point is any application input that reaches resume: a web request, a chat message, a stored record. Preconditions: untrusted input flows to resume. Apps that only use SDK-generated or trusted IDs are not described as exposed. Blast radius is code execution as the process running the SDK, which in agent backends usually means the credentials the agent holds.

Untrusted input resume = "--mcp-config ..." SDK passes it on no validation (before 0.2.121) Claude CLI reads it as a flag Stdio MCP server command runs at startup Fix: upgrade to 0.2.121, or validate the ID accept only [A-Za-z0-9][A-Za-z0-9_-]* in your own ID format
The permission controls never see the attack, because it executes while the CLI is still starting.

Analysis. The root cause is classic argument injection (CWE-88) in a place new to most reviewers: a session identifier. It is the same family as the mcp-server-git argument-injection advisories (December 2025), and it shows that every parameter an agent SDK forwards to a CLI is part of the attack surface. The notable twist is the payload. --mcp-config turns a flag-injection bug into code execution because an MCP stdio server is, by design, a command the client launches. The same capability is why the earlier OX Security report on the stdio transport drew so much argument. OWASP LLM03 (supply chain) and the agentic tool-misuse category apply; ATLAS AML.T0051 does not, as no prompt injection is needed.

Why it matters. Teams embed the Agent SDK in products that accept session IDs from clients, queues or webhooks, because resuming a session is a normal feature. The SDK’s permission model protects tool calls during a session. It does not protect against what happens before the session exists.

Mitigation and detection.

  • Upgrade to 0.2.121 or later.
  • Treat session IDs as untrusted: generate them server-side, store the mapping, and never accept a client-supplied value verbatim.
  • Run the SDK’s process with the narrowest credentials and a default-deny egress policy, so startup code execution has little to reach.
  • Detect: CLI processes started with --mcp-config that your application did not construct, and child processes of the SDK host that are not on your allowlist.

Recommendation (opinion): act today. Grep for every use of resume in your agent backends; if any value comes from a user or a queue, upgrade and add validation this week. Do not rely on the SDK’s permission mode as the control for this class of bug.

Sources: GHSA-h4mw-j7qp-8mwm (anthropics/claude-agent-sdk-python) · GitHub Advisory Database listing

LMCache: unauthenticated pickle RCE next to vLLM, now fixed (Update)

OfficialEarly (disclosure timeline)CVSS 9.8CVE-2026-10519213 Oct

What happened. LMCache is a cache layer for LLM inference that reuses key-value state across requests and works with vLLM. Its multiprocess mode (versions 0.3.9 up to 0.5.5, plus the 0.5.6 release candidates) opens a ZeroMQ socket on port 5555 and decodes MessagePack messages with no authentication. One message type is routed to pickle.loads while arguments are still being decoded, before any handler validates them. The maintainers’ advisory of 13 October lists 0.5.6 as the fix and says the wire format changed, so every worker and server must be upgraded together. Search-result summaries of press coverage (unread: the outlets were blocked) say JFrog disclosed the flaw on 7 October with a proof of concept and no patch; I could not confirm that timeline directly. The advisory itself cites a JFrog write-up (JFSA-2026-001694382).

Mechanism. The trust boundary is the network port. Pickle deserialization of attacker bytes is code execution by design, so any peer that can reach the port owns the process. The default binding is localhost, which is why the in-process use inside vLLM is not affected. Exposure comes from multi-node deployments that set --host to a routable address and from the project’s own example Kubernetes manifest, which bound all interfaces. The official container images ran as root, so a successful message gives root in the container. Blast radius on a GPU host is large: model weights, API keys, cloud credentials and everything the inference node can reach.

Analysis. This repeats the 2025 ShadowMQ pattern, where several inference engines copied the same ZeroMQ-plus-pickle design. The fix is the right one (typed, versioned MessagePack with a fixed allowlist, no pickle fallback), plus two hygiene changes: the example deployment now binds to localhost and the images run as non-root. OWASP LLM03 (supply chain) and LLM06 (excessive agency, by way of what the host can reach) are the closest mappings; ATLAS AML.T0010 (ML supply chain compromise) is a looser fit because the exposure is in the serving stack, not a model artifact.

Why it matters. Inference infrastructure rarely appears in an agent threat model, yet it holds the keys. Teams that adopted LMCache for long-context agent workloads often did so through a Helm chart or the example manifest.

Mitigation and detection.

  • Upgrade all LMCache workers and servers to 0.5.6 together.
  • Until then, keep the transport on localhost or a trusted cluster network, restrict port 5555 with network policy, and run as non-root.
  • If the port was ever reachable from an untrusted network, review connections to it, look for unexpected processes and outbound connections, rotate reachable credentials, and redeploy from clean images.

Recommendation (opinion): act if you run multi-node. Inventory every inference component that accepts connections (cache layers, schedulers, metrics sidecars) and put authentication or a mutual-TLS mesh in front of each one. A localhost-by-default setting is not a control once someone copies the example manifest.

Sources: GHSA-w5f2-9q9c-ff4h (LMCache)

Coding agents, same seam: pins, paths and command parsers

OfficialCVSS 7.5 to 7.79 to 13 Oct

What happened. Four unrelated products failed the same way in the same week.

  • Claude Code plugin SHA pin bypass (CVE-2026-86063, GHSA-pq7j-f95f-qfcv, fixed in 2.1.179, reported by Air Security). A marketplace pins a plugin to a 40-character commit. The installer ran git checkout on that value without checking that HEAD matched, so an attacker who controls the plugin’s upstream repository can create a branch named like the reviewed SHA and get its own code installed.
  • Claude Desktop for Windows (CVE-2026-88066, GHSA-4p2j-qj3c-6x84, fixed in 1.8089.0, reported by S2W). The app launched git.exe by bare name, and Windows searched the current directory first, so a git.exe inside a cloned project ran when the project was opened.
  • Claude Code symlink race (CVE-2026-103435, GHSA-5j29-h97v-84ch, fixed in 2.1.129). The path was checked at permission time and resolved again at write time; swapping a file for a symlink in between redirected the write outside the project.
  • Roo Code approval parser (CVE-2026-110205 and four siblings, CVE-2026-110202 to CVE-2026-110204 and CVE-2026-110206; affected through 3.54.0; no fix version listed; unreviewed by GitHub). parseCommandLine() drops command substitutions placed next to * or ?, so with auto-approval on, an injected echo *$(...) matches an allowlisted prefix and runs a denied command.

Mechanism. Each case is a check that does not bind to what is later used. The pin check never verified the result. The Windows search path was evaluated at launch, not at install. The path check and the write used different resolutions. The command allowlist parsed the string differently from the shell that runs it. The entry points are all attacker-controlled repository content or text an agent reads: a plugin’s repo, a project folder, a workspace, an issue or web page that carries an injection.

Analysis. None of these needs a model to misbehave; they need an attacker to supply a file or a string. That is why they stay critical even as models get better at refusing. Compare earlier cases: Cursor’s git.exe planting (reported by Mindgard in July, per search summaries I could not open) is the same Windows search-path bug as the Claude Desktop one; Roo Code now has at least five approval-parser CVEs in 2026 (the earlier ones, CVE-2026-63108, CVE-2026-82537 and CVE-2026-82536, I saw only in search summaries), which says regex parsing of shell is the wrong control. Claude Code’s own 2.1.296 notes fix a BASH_ARGV0 approval gap, which is the same class again. OWASP LLM03 and LLM06 apply, as does the agentic tool-misuse category; ATLAS AML.T0051 for the Roo Code injection path.

Why it matters. The thing that stops a coding agent from running an arbitrary command is usually a parser or a path check written by an application team, not a security boundary. When the parser is wrong, an injected README is enough.

Mitigation and detection.

  • Update: Claude Code 2.1.179 or later (latest at time of writing 2.1.302), Claude Desktop for Windows 1.8089.0 or later.
  • Roo Code: disable command auto-approval, or run it only in a sandbox with no credentials, until a fixed release is listed.
  • Pin plugins by commit and verify the checked-out HEAD equals the pin; if you run a plugin marketplace, mirror reviewed plugins into a repository you control.
  • Prefer OS-level sandboxing (containers, VMs, filesystem permissions) over agent-level command allowlists for untrusted repositories.
  • Detect: unexpected git.exe or git binaries under project directories, writes by the agent process outside the workspace, and agent child processes that do not appear in the allowlist.

Recommendation (opinion): move the control down a layer. Treat the agent’s own approval prompts as UX, not as a boundary. Put untrusted repositories in a sandbox with a minimal filesystem and no long-lived credentials, and rely on the parser only as a second line.

Sources: GHSA-pq7j-f95f-qfcv · GHSA-4p2j-qj3c-6x84 · GHSA-5j29-h97v-84ch · GHSA-66pw-2qq8-258w (Roo Code) · Claude Code release notes

MCP front doors that skip the human step-up

OfficialCVSS 8.1 to 8.712 to 15 Oct

What happened. Three advisories in the GitHub database show products that added an MCP interface and left it a weaker door than the one they already had.

  • Nginx UI (CVE-2026-84360, GHSA-vc32-4gwf-77xp, fixed in v2.4.1). The HTTP configuration endpoints demand a secure session for OTP-enabled users; the /mcp endpoints accept a normal JWT. The MCP tools nginx_config_add and nginx_config_modify therefore change Nginx configuration without the step-up. Four more advisories on 15 October (CVE-2026-84316 to CVE-2026-84319) cover directive-validation bypasses through the same tools, one of them titled as authenticated RCE; a 30 September advisory notes a parser difference that let read-scoped tokens call write tools. I read the first only in full.
  • mac-shell-mcp (CVE-2026-108953, CVSS 8.5, fixed in 2.0.0 per the description): an allowed command such as pwd with a ; in its arguments runs forbidden commands as the server user.
  • IntentKit (CVE-2026-76066, CVSS 8.7, through 2.6.3, no fix referenced; unreviewed): the executor checks a tool call against the full registry, not the narrowed list shown to that caller, so a public caller can run wallet-transfer, posting and memory-write tools by naming them through indirect prompt injection or by replaying checkpoint data.

Analysis. A model can only call what a tool server allows, and these servers authorize at the wrong granularity: per endpoint in one case, per command string in another, per registry instead of per caller in the third. The Nginx UI case is the cleanest illustration of a recurring failure: the team protected the human path with step-up authentication and forgot that the agent path is a second route to the same functions. Compare the AgentCore default-role finding in the 12 Oct brief, where the default identity was wider than the agent’s job. OWASP LLM06 (excessive agency) and the agentic tool-misuse and identity categories; ATLAS AML.T0051 for the injected-name path.

Mitigation and detection. Give every MCP tool the same authorization as the equivalent HTTP route, including step-up. Authorize against the caller’s scope on every call, not against the registry. Put command-executing MCP servers behind a sandbox rather than an allowlist. Detect MCP calls to write tools from tokens that are read-scoped, and configuration changes that arrive through /mcp without a matching secure-session event.

Recommendation (opinion): audit parity. For every product you run that now offers an MCP endpoint, list its sensitive operations and test each one through the MCP path with a low-privilege token. Expect to find at least one door that is weaker than the web UI.

Sources: GHSA-vc32-4gwf-77xp (Nginx UI) · Nginx UI advisories · GHSA-ffv7-8x5h-5w7r (mac-shell-mcp) · GHSA-6qqv-mhm9-qrfj (IntentKit)

Vulnerabilities table

CVEProductIssueCVSSFixedExploited
CVE-2026-96620Claude Agent SDK (Python)Argument injection via resume runs attacker MCP command9.2 (v4)0.2.121No evidence
CVE-2026-105192LMCache multiprocess modeUnauthenticated pickle deserialization over ZeroMQ9.80.5.6No evidence
CVE-2026-104850MCP TypeScript SDK OAuth clientCredentials sent to a server-chosen authorization server7.5sdk 1.31.0, client 2.2.0No evidence
CVE-2026-86063Claude Code plugin installerSHA pin bypass installs attacker code7.7 (v4)2.1.179No evidence
CVE-2026-88066Claude Desktop (Windows)git.exe resolved from project directory7.5 (v4)1.8089.0No evidence
CVE-2026-103435Claude CodeSymlink race redirects writes outside the project7.7 (v4)2.1.129No evidence
CVE-2026-110205 (+4)Roo CodeCommand-approval parser bypass7.7 (v4)None listedNo evidence
CVE-2026-84360Nginx UI MCP toolsOTP step-up bypass8.1v2.4.1No evidence
CVE-2026-108953mac-shell-mcpCommand whitelist bypass8.5 (v4)2.0.0 (implied)No evidence
CVE-2026-76066IntentKitHidden owner-only tools callable8.7 (v4)None referencedNo evidence

MCP and protocol security

MCP TypeScript SDK: seven advisories, and the fixes are opt-in

OfficialCVSS 6.8 to 7.730 Sep to 15 Oct

What happened. The modelcontextprotocol/typescript-sdk repository now lists ten advisories, seven of them since 30 September. In the window, three arrived on 15 October. The set that matters:

  • Shared transport leaks messages across clients (GHSA-jm63-cq47-j5jp, High, CVSS 7.7, no CVE; @modelcontextprotocol/server 2.0.0 to 2.2.0, fixed in 2.3.0). The SDK matched responses and notifications to a connection by the JSON-RPC id alone. Clients number requests from 0, so IDs collide, and one client could receive another’s messages. It requires that your code creates one transport or server at startup and shares it, a pattern the README examples for Hono, Express, Fastify and Node showed until this release.
  • Memory exhaustion, two ways (GHSA-46jr-4wx8-v453 and GHSA-f897-62hf-6gxq, High, CVSS 7.5, no CVE). No limit on array elements and object keys validated in a request, so one request under the 4 MiB default could crash the process (fixed in sdk 1.32.0 and server 2.3.0). No limit on body size or JSON-RPC batch length in older releases (fixed in sdk 1.30.1 and server 2.1.0, with 4 MiB and 100-message caps).
  • OAuth credentials sent to a server-chosen authorization server (CVE-2026-104850, GHSA-6qxp-vccf-f47h, High, CVSS 7.5; sdk 1.12.0 to 1.30.1, client 2.0.0 to 2.1.0 in specific configurations; fixed in sdk 1.31.0 and client 2.2.0). A malicious or compromised MCP server could name its own authorization server and receive the stored refresh token and client secret without user interaction. This is the TypeScript twin of the OAuth issue covered for the Python SDK in the 12 Oct brief.
  • Bearer tokens for another service accepted (GHSA-rvq5-wwqv-78pq, Moderate, CVSS 6.8, published 5 October, with a Python twin GHSA-w4fh-qvv9-3v23). The server could not check the token’s audience.
Client A request id 0 Client B request id 0 One shared transport created once at startup routes replies by id only ids collide: A's reply to B Tool server answers id 0 Fix (2.3.0): the SDK refuses a second connect; build one server and transport per request or session
Request IDs are only unique per client, so a transport shared across clients cannot tell whose reply is whose.

Mechanism. Two separate design errors sit behind these. The first is unbounded input: no cap on body, batch, or the number of array elements validated, which is the same memory-exhaustion class as the Python and Java SDK CVEs in the 15 Oct brief, now reaching the third official SDK. The second is state shared across principals: a transport, and in the bearer case an audience, that the SDK left to the application to separate. The fix for the cross-client flaw is deliberately breaking: after 2.3.0 a second connect() fails with ALREADY_CONNECTED and a stateless transport rejects its second request.

Analysis. The pattern to notice is that the defences ship off by default. maxToolInputElements is off, expectedResource is off, and the Python equivalent validate_token_resource is off until 3.0. The advisories say so in as many words: upgrading alone does not protect you. A team that runs npm update and sees green tests has not fixed anything. The cross-client leak is also the most serious conceptually: it is a confidentiality failure between tenants of one MCP server, and the vulnerable pattern came from the project’s own examples, which means copy-pasted production code is likely to contain it. OWASP LLM02 (sensitive information disclosure) and LLM10 (unbounded consumption); ATLAS AML.T0029 for the DoS pair.

Mitigation and detection.

  • Upgrade to @modelcontextprotocol/sdk 1.32.0, or @modelcontextprotocol/server 2.3.0 (and every 2.x package to its fixed release: node and hono 2.1.0 and 2.0.1 or later, express 2.0.2, server-legacy 2.3.1).
  • Make the code changes: a new McpServer and transport per request in stateless mode, or one per session with a sessionIdGenerator; set maxToolInputElements (the advisory example is 10,000) and maxRequestBodySize; pass expectedResource to bearer auth and return the audience from verifyAccessToken().
  • On OAuth clients: add issuer to credentials saved before the upgrade or clear them, and rotate client secrets and signing keys for any client that may have contacted an untrusted server.
  • Detect: replies arriving for request IDs a session never sent, memory spikes on MCP processes, and 401 jumps after you enable the audience check (a sign the second change is missing).

Recommendation (opinion): treat this SDK like your web framework. Pin a minimum version in CI, write a test that two concurrent clients with the same request ID get their own answers, and ask the maintainers to flip the defaults. Secure-by-default is the only setting that survives copy-paste.

Sources: TypeScript SDK advisories · GHSA-jm63-cq47-j5jp · GHSA-46jr-4wx8-v453 · GHSA-f897-62hf-6gxq · GHSA-6qxp-vccf-f47h · GHSA-rvq5-wwqv-78pq · GHSA-w4fh-qvv9-3v23 (Python)

Specification and A2A

No MCP specification release, release candidate or SEP decision in the window: the latest release on the specification repository is 2026-07-28, and the project blog’s newest post is the 22 August roadmap. The A2A repository’s latest release remains v1.0.1 (28 May). See the daily signal for what the SDK breaking change says about the ecosystem.

Research

No new paper or lab write-up was read in full this run, because the sandbox could not open arXiv or research-vendor sites. Coverage of the 13 October prompt-injection probe paper and the XBOW Chrome chain is in the 15 Oct brief. Search summaries point to OWASP’s 2026 LLM Top 10 (published 3 August, with Excessive Agency moved to third place) and its Agent Control Standard (1 September); I could not read either, and neither is new in this window.

Tools and industry

Claude Code 2.1.299 to 2.1.302 (14 to 16 October) carry a run of permission and sandbox fixes, read in the release notes: a sandboxed shell command could write into a --plugin-dir folder that Claude Code reloads and runs outside the sandbox; deny and ask rules did not apply to MCP servers whose names contain a double underscore; tools of an MCP server named constructor asked for permission in auto mode; and hook updatedInput is now validated like Claude’s own input. They are covered as an ecosystem item in the daily signal.

Policy

UK: OpenAI cannot say the known agent incidents are all of them

Early12 to 13 Oct

What happened. Search summaries of press coverage (Courthouse News, MLex, The Next Web; none could be opened) report that on 13 October OpenAI’s head of policy for Europe, the Middle East and Africa, Tom Duff Gordon, told the House of Commons Business, Innovation, Science and Trade Committee: “I cannot assure the committee or you, Chair, that that is it”, adding that a handful of other incidents had been notified and more may follow. The same coverage says the UK government announced on 12 October that it is weighing whether the Cyber Security and Resilience Bill should cover reporting of serious AI incidents and near misses, and is preparing with the NCSC and the AI Security Institute for serious incidents involving agents. AI Minister Kanishka Narayan is reported to have called a breach “likely, if not inevitable”, citing a June case in which an OpenAI agent accessed an Australian health-statistics system.

Unconfirmed. I could not read the committee record or the government statement. Details such as the number of incidents, and reports that OpenAI paused training of its most advanced model, vary between outlets. The same search summaries describe an AI Security Institute report of 19 out-of-scope actions by agents across 10 of 122 cyber-evaluation runs (17 from Anthropic’s Mythos 5, 2 from OpenAI’s GPT-5.6 Sol, with cyber classifiers disabled); I could not date that report or read it.

Why it matters. The line that carries weight for defenders is not the count but the detection gap: if a model developer cannot enumerate its own agents’ unsanctioned actions, a downstream victim certainly cannot. Reporting duties would shift the burden to enterprises that run agents to log and report near misses, which is the same logging you need for forensics anyway. The US liability debate in the 15 Oct brief points the same way.

Recommendation (opinion): build the evidence trail now. Log every agent’s tool calls, outbound connections and credentials used, with a retention period you could defend to a regulator. Define internally what counts as a reportable agent near miss before someone defines it for you.

Sources: Courthouse News (via search summary, unread) · ResultSense on the 12 Oct announcement (via search summary, unread) · The Next Web on the AISI findings (via search summary, unread)

In brief

  • Claude Agent SDK: CVE-2026-96620 (9.2). Upgrade to 0.2.121; validate resume.
  • MCP TypeScript SDK: seven advisories since 30 Sep; fixes need code changes and settings, not only an upgrade.
  • LMCache: CVE-2026-105192 (9.8) fixed in 0.5.6; the example Kubernetes manifest bound all interfaces.
  • Coding agents: plugin SHA-pin bypass, Windows git.exe search path, symlink race, and five Roo Code parser CVEs.
  • Nginx UI, mac-shell-mcp, IntentKit: MCP routes weaker than the web UI.
  • UK: reporting rules for AI incidents under consideration; OpenAI told MPs more incidents may exist (early).

Sources