---
id: GHSA-j99q-93c9-h869
title: >-
  MCPVault: PathFilter restricted-directory deny-list bypass via case and
  trailing dot/space equivalence
summary: >-
  MCPVault: PathFilter restricted-directory deny-list bypass via case and
  trailing dot/space equivalence
severity: medium
cwe:
  - CWE-41
  - CWE-178
vendor: bitbonsai
product: '@bitbonsai/mcpvault'
affected:
  - '@bitbonsai/mcpvault < 0.11.4'
patched:
  - '@bitbonsai/mcpvault 0.11.4'
published: '2026-06-18'
updated: '2026-06-18'
source: GHSA
sourceUrl: 'https://github.com/advisories/GHSA-j99q-93c9-h869'
references:
  - url: >-
      https://github.com/bitbonsai/mcpvault/security/advisories/GHSA-j99q-93c9-h869
  - url: 'https://github.com/advisories/GHSA-j99q-93c9-h869'
tags:
  - ghsa
  - npm
ingestedAt: '2026-06-19T03:39:00.820Z'
ecosystem: npm
---

## Overview

On case-insensitive filesystems (macOS, Windows), PathFilter compiled its deny-list patterns case-sensitively and matched the path verbatim, so names like `.Git/config`, `.GIT/config`, or `.oBsIdIaN/secrets.md` slipped past the `.git`/`.obsidian`/`node_modules` restriction while the OS opened the real file. On Windows, trailing dots/spaces (`.git./config`, `.git /config`) bypassed it the same way. Affects both `isAllowed` (read/write/move/search) and `isAllowedForListing`. Vault-root `..` containment is NOT affected. Fixed in 0.11.4 by case-insensitive matching plus per-segment canonicalization before the deny-list check. Reported privately by novice-22.

## Affected packages

- `@bitbonsai/mcpvault < 0.11.4`

## Remediation

Upgrade to a patched release:

- `@bitbonsai/mcpvault 0.11.4`
