Mistral Vibe: six CVEs say allowlists aren't sandboxes
HiddenLayer disclosed six command-allowlist bypasses in Mistral Vibe on September 11, four at CVSS 10.0. What an AI coding agent's approval prompt actually protects.
If your team runs Mistral Vibe, the approval prompt you have been clicking through is not a security boundary. HiddenLayer published six CVEs against the coding agent on September 11. Four of them scored a CVSS 4.0 of 10.0. They are six variations of one bug: the command allowlist inspects a string, and then bash executes something different.
What actually happened
HiddenLayer filed the records as its own CNA against mistralai/mistral-vibe. The mechanics are worth reading in full, because the pattern is not Mistral-specific.
CVE-2026-87985 (10.0) is the cleanest example. Vibe parses a proposed command with tree-sitter to decide whether it needs approval. Write a dangerous find predicate in ANSI-C quoting — $'-exec' instead of -exec — and the parser produces an ansi_c_string node that _extract_commands() never inspects. Bash restores the argument at runtime. An approved command becomes arbitrary code execution, and HiddenLayer's advisory notes it is reachable through indirect prompt injection. Affected: v2.9.0 and later.
The rest rhyme. CVE-2026-87987 (10.0): environment-variable assignments placed before an allowlisted command are excluded from inspection. CVE-2026-87986 (10.0): shell constructs the parser cannot interpret go uninspected entirely. CVE-2026-87988 (10.0): unconditionally-allowed commands skip path validation, so the workspace fence does not hold. CVE-2026-87984 (9.3): shell redirection targets are omitted from permission checks — arbitrary file write. CVE-2026-87983: quoted absolute paths read files outside the workspace.
As of this writing the project's GitHub security advisories page is empty and none of the six records names a fixed version. Treat "upgrade" as advice you cannot yet act on precisely.
Why it matters for your business
Here is the durable lesson, and it applies to every coding agent you run, not just this one. An allowlist that works by parsing a command string is a second implementation of bash — and it will always be a worse one than bash. Two parsers, one execution. The gap between them is the vulnerability, and there is no version of this design where that gap closes permanently.
So stop buying the boundary and start building it somewhere real:
Put the agent in a container, not in a prompt. The thing that should stop an agent from reading ~/.aws/credentials is that the file is not in the container, not that a regex declined to approve cat.
Assume prompt injection is the delivery mechanism. Your agent reads issues, READMEs, dependency changelogs, and scraped pages. Any of those can carry the payload. The attacker does not need your keyboard.
Scope the credentials the agent actually holds. A deploy token that can only touch one staging project turns a CVSS 10 into an incident report instead of a breach.
Key takeaways
- HiddenLayer disclosed six Mistral Vibe command-allowlist bypasses on September 11, four rated CVSS 4.0 10.0
- CVE-2026-87985 hides a
find -execpredicate in ANSI-C quoting that Vibe's tree-sitter parser skips and bash restores at runtime - The other five bypass inspection via env-var prefixes, unparsable shell constructs, missing path validation, redirection targets, and quoted absolute paths
- No published GitHub advisory and no named fixed version in the CVE records at time of writing
- The root design flaw is generic: a string-parsing allowlist is a second, worse bash — the parser/executor gap is the bug
- Contain agents at the OS boundary and scope their credentials; approval prompts are UX, not isolation
Running coding agents against your production repo? We set up agent environments where the blast radius is defined by the container and the token, not by a parser that has to out-guess bash. See how we scope agent access, or send us your current setup.
Sources: HiddenLayer Security Advisory, OpenCVE CVE-2026-87985.
- #mistral-vibe
- #coding-agents
- #prompt-injection
- #sandboxing
- #cve
Tommy Rush — Founder, Rush Commerce
Operator turned builder. 15+ years running operations — now shipping the systems businesses run on. More
Get The Rush Report weekly — one email, zero fluff.
Keep reading
SGLang CVE-2026-86793: unauthenticated RCE on your GPU box
SGLang's SafeUnpickler can be bypassed through an unauthenticated endpoint for full RCE. No patch at disclosure. How to close it on a self-hosted inference server.
Read itAn AI agent swarm took 440 PaperCut servers
GreyNoise traced hundreds of AI agents compromising 440 PaperCut servers at 395 organizations in 48 countries. First RCE in under four hours. What it changes.
Read it