A path check is meaningful only for the exact object later opened. In the disclosed test, the normalized candidate matched an allowed directory while the operating system followed a different, quote-suffixed sibling. An agent receiving hostile file or page content could be induced to supply such a path through its filesystem tool. primary evidence documents…
Inspect the ClaimsCase · DiggingBeagle record
MCP Filesystem validated one path spelling and used another
Filesystem allowlisting could be bypassed by a sibling pathname whose trailing quote or whitespace was interpreted inconsistently by validation and file operations.
Assessment profile
Assessment method- Setting
- research demonstration
- Exploitation
- demonstrated
- Evidence
- Grade B
- Remediation
- patch available
- AI role
- AGAINST AI
Basis and provenance
Maintainer case with local file access reproduction, no field compromise statistics. The impact band remains unknown: available evidence does not establish actual deployed victim outcomes or a comparable measured loss.
Assessed Oct 26, 2026 using diggingbeagle.assessment/1.
Evidence basis: CLM-CP20-MCP-FS-QUOTE · CLM-CP20-ENRICH-MCP-FS-QUOTE · MCP Filesystem quote normalization authorizes sibling outside allowlist
At a glance
The experiment is a local check/use demonstration. It does not establish deployment prevalence or that a remote attacker without influence over an agent or tool arguments already had filesystem access.
Limits and uncertaintyFull account
A path check is meaningful only for the exact object later opened. In the disclosed test, the normalized candidate matched an allowed directory while the operating system followed a different, quote-suffixed sibling. An agent receiving hostile file or page content could be induced to supply such a path through its filesystem tool. primary evidence documents a controlled read and the possibility of write or move when the sibling directory exists.
The experiment is a local check/use demonstration. It does not establish deployment prevalence or that a remote attacker without influence over an agent or tool arguments already had filesystem access.
Version 2.0.1 addressed the reported class; the advisory notes that date-based npm versions may not automatically upgrade to semver 2.0.1. Canonical path identity must be shared by validation and operations.
This is a check/use mismatch without a race. validatePath authorizes normalizePath(absolute), which strips a trailing quote or whitespace; fs.realpath and the subsequent call use the original absolute spelling. An attacker-controlled argument can thus be approved as /allowed/proj while resolving to a separate sibling such as /allowed/proj'. The relevant precondition is control over the tool argument and existence of the sibling, not an existing remote shell. Official release 2.0.1 lists the fix; migration from date-stamped package versions to semver may require an explicit upgrade.
Claims & evidence
CLM-CP20-MCP-FS-QUOTEThe server-filesystem advisory reproduces read outside allowedDirectories because validatePath trims a trailing quote for comparison while subsequent file access uses the original pathname.supported
Basis: reported finding
- supportsMCP Filesystem quote normalization authorizes sibling outside allowlistrole not specified
Impact; reproduction using sibling path with trailing quote; upgrade warning
CLM-CP20-ENRICH-MCP-FS-QUOTEGHSA-7rgq-gccq-qphx reports an MCP Filesystem path validation inconsistency in which the checked spelling strips trailing quotes or whitespace while the filesystem operation uses the original path; 2.0.1 is listed as patched.supported
Basis: reported finding
- supportsMCP Filesystem quote normalization authorizes sibling outside allowlistrole not specified
Summary; validation versus realpath identity and affected version/patch table
Unknowns and contradictions
- The experiment is a local check/use demonstration. It does not establish deployment prevalence or that a remote attacker without influence over an agent or tool arguments already had filesystem access.
Sources and citation
Material revision history
- Oct 26, 2026 · Canonical change recorded · new in release · revision 193