Two CodeWhale CVEs record tools that declared themselves auto-approved and overrode the user's approval policy
CVE-2026-75857 and CVE-2026-75858, published 2026-08-18, describe two CodeWhale tools whose approval_requirement returned ApprovalRequirement::Auto, which the engine treats as never prompt. That overrode the default Required approval for code-executing tools and the user's configured --approval-policy, so model-supplied Python ran outright and LLM-controlled stdin reached an already-approved shell. One commit on 2026-06-21 fixed both.
VulnCheck published two records on 2026-08-18 against CodeWhale, a coding
agent distributed as the codewhale and codewhale-tui packages. Both
describe the same root cause in different tools, and both were fixed by a
single commit two months earlier.
The mechanism is a tool declaring its own approval requirement. CodeWhale's
engine reads an approval_requirement() value from each tool, and
ApprovalRequirement::Auto is treated as "never prompt". Two tools that
execute code returned it. CVE-2026-75858 covers rlm_eval, where the
record states arbitrary model-supplied Python ran in a python3
interpreter without consulting the user's configured --approval-policy
and with no approval prompt or audit step. CVE-2026-75857 covers
exec_shell_interact, where LLM-controlled stdin was written into an
already-approved long-running interactive shell, the record naming a
python3 -i REPL, mysql, ssh and sudo -i sessions as examples. In
that second case the privilege level is whatever the approved session
already held, which is what makes it an escalation rather than plain
execution.
Both records name the same delivery path: prompt injection through untrusted content the agent reads. CVE-2026-75857 lists the candidates explicitly as a fetched page, an MCP result, or a repository file, which puts a tool result from a connected MCP server on the same footing as a web page for this purpose.
The interesting part for the wider ecosystem is which safeguard failed.
The user had a configured approval policy and code-executing tools had a
Required default; a per-tool metadata value silently outranked both. Any
host that lets a tool describe its own risk level, whether through an
internal enum or through the specification's tool annotations, is trusting
that declaration with the human-in-the-loop guarantee. The fix, commit
57f3c894 on 2026-06-21, is titled "require approval for interactive
execution tools" and closed both records at once, eight weeks before either
was published. The codewhale package recorded 19,593 downloads in the
last month.
How was this verified, and what are the sources?
Published · last verified · confidence 1.00.
- CVE-2026-75858 CNA record, assigner VulnCheck, datePublished 2026-08-18T15:21:57Z - title "CodeWhale rlm_eval before 0.8.64 Remote Code Execution"; states the rlm_eval tool's approval_requirement() "returns ApprovalRequirement::Auto, which the engine treats as 'never prompt,' causing arbitrary model-supplied Python code to run in a python3 interpreter without consulting the user's configured --approval-policy and without any approval prompt or audit step"; names prompt injection in untrusted content the agent reads as the attack path; affects packages codewhale and codewhale-tui >= 0.8.41 and < 0.8.64; CVSS 7.8 high - accessed
- CVE-2026-75857 CNA record, assigner VulnCheck, datePublished 2026-08-18T15:21:56Z - title "CodeWhale before 0.8.64 Privilege Escalation via exec_shell_interact"; states the exec_shell_interact (alias exec_interact) tool's approval_requirement returns ApprovalRequirement::Auto, that this "overrides the default Required approval for code-executing tools, so LLM-controlled stdin is written into an already-approved long-running interactive shell (e.g., a python3 -i REPL, mysql, ssh, or sudo -i session) without any approval prompt", and that an attacker who can inject instructions "via untrusted content the agent ingests (a fetched page, MCP result, or repo file)" can cause commands to run at that shell's privilege level; affects >= 0.8.41 and < 0.8.64; CVSS 7.0 high - accessed
- CodeWhale commit 57f3c89471e27ac4032d9791f6885e5d4408c381, dated 2026-06-21T22:13:29Z, "fix(tui): require approval for interactive execution tools" - the single commit both CVE records reference as the fix, eight weeks before either record was published - accessed
- npm registry download statistics for codewhale - 19,593 downloads in the last month, retrieved 2026-08-20 - accessed