Summary
Claude Agent SDK: Argument Injection via resume Option Allows Arbitrary Command Execution
Advisory details
The Claude Agent SDK for Python passed the resume option to the Claude CLI without validation, allowing a value beginning with - to be interpreted as a separate CLI flag. An attacker who controlled the resume value could inject an --mcp-config flag defining a stdio MCP server, resulting in arbitrary command execution at CLI startup that bypassed the SDK's permission controls. Exploitation required an application to pass untrusted input as the session ID to resume.
Users are advised to update to the latest version of the claude-agent-sdk package.
Thank you to hackerone.com/moamenmahmood for reporting this issue.
References
- https://github.com/advisories/GHSA-h4mw-j7qp-8mwm
- https://github.com/anthropics/claude-agent-sdk-python/security/advisories/GHSA-h4mw-j7qp-8mwm
- https://github.com/anthropics/claude-agent-sdk-python/pull/1123
- https://github.com/anthropics/claude-agent-sdk-python/commit/347a1cb88d7652199399db1b7f914e0a459a6662
- https://github.com/anthropics/claude-agent-sdk-python/releases/tag/v0.2.121
Related vulnerabilities
All Supply chain →- HIGHGHSA-w2vw-w76x-qr89
Nx: OS command injection via git revisions and remote refs
- CRITICALCVE-2026-73294
Semaphore U: OS Command Injection
- HIGHCVE-2026-55673
PowSyBl Core has Command Injection in LocalCommandExecutor-s
- HIGHCVE-2026-103929
mise permits untrusted local configuration to override default shell arguments
- MEDIUMCVE-2026-100347
kin-openapi: Unauthenticated panic (DoS) in openapi3filter legacy router via non-canonical/unsupported HTTP method on a static path
- HIGHCVE-2026-84316
Nginx UI: nginx config directive denylist (ValidateConfigFile) is bypassable via same-line ";" separation → authenticated directive injection (RCE on the official image)