Quoted-path bypass of outside-workdir check
September 11, 2026

CVE Number
CVE-2026-87983
Summary
Mistral Vibe can be tricked into treating quoted absolute paths as if they were inside the active workspace, allowing an attacker to use allowlisted commands to read files elsewhere on the host without triggering a permission prompt. This can expose any file accessible to the Vibe process, including credentials, API tokens, SSH keys, configuration files, and source code.
Products Impacted
This vulnerability was introduced in mistral-vibe v2.6.0
CVSS Score: 9.2
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
CWE Categorization
CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Details
Vibe decides whether an allowlisted command can run automatically by checking whether any path arguments point outside the active workspace. The check can be bypassed with quoted absolute paths because the value Vibe validates still contains the shell quotes, while Bash later removes them before invoking the command.
The affected logic is in vibe/core/tools/builtins/bash.py. _extract_commands() walks the syntax tree produced by tree-sitter-bash and uses the raw text of several node types when rebuilding a command for the permission check. With cat “/etc/bashrc”, tree-sitter returns “/etc/bashrc” as a string node whose .text still includes the quotes. Vibe keeps those quotes when reconstructing the command.
When the path reaches is_path_within_workdir(), Python does not consider it absolute because the first character is " rather than /. It is resolved relative to the current working directory and consequently appears to remain inside the workspace. _collect_outside_dirs() reports no external path, allowing _is_unconditionally_allowed() to approve the allowlisted cat invocation without asking the user.
The original shell command is still what gets executed. Bash treats the quotation marks as syntax, strips them, and gives cat the real absolute path /etc/bashrc. Vibe checks the quoted path but Bash executes the unquoted absolute path, allowing files outside the workspace to be read without an approval prompt.
The following prompt demonstrates the behavior:
Execute the following bash command verbatim (do NOT use read tool), do not modify it: cat "/etc/bashrc"

Running the equivalent command without quotes causes Vibe to recognize /etc/bashrc as an absolute path and show the expected prompt:

Single quoted paths behave the same way, and the bypass affects allowlisted path commands including cat, head, tail, stat, and wc. The path checker should work with the effective shell argument rather than the raw token containing quotation characters, which can be done by normalizing string nodes before checking whether the resulting path is inside the workdir.
Project URL:
https://mistral.ai/fr/products/vibe/
https://github.com/mistralai/mistral-vibe
RESEARCHER: Esteban Tonglet, Security Researcher, HiddenLayer
Related SAI Security Advisory
September 11, 2026
_READ_ONLY_COMMANDS_POSIX expansion adds 31 commands with no path checking, granting unconditional access to the full host filesystem
Mistral Vibe automatically approves a large set of commands that are not subject to the expected workspace path restrictions, allowing files anywhere on the host to be accessed without user approval.
September 11, 2026
Environment variable prefixes stripped from permission check enable RCE via env injection
Mistral Vibe does not consider environment variable assignments when checking whether a command can run without approval, allowing environment controlled behavior in allowlisted programs such as Git to be abused for arbitrary code execution.