Tool dispatch did not check the caller-supplied input.vault against the caller's bound vault (ctx.vaultId); the folder ACL was a single global instance and the JWT carried no vault claim. As a result, any valid token could read, write, or delete any configured vault by passing input.vault, defeating multi-tenant isolation across ~90 tool sites. (resources/read was the only surface that already guarded this.)
Fixed in 1.3.1 (the fix was developed on the v1.3.0 tag, which never published to npm; 1.3.1 is the first published release with the fix). Upgrade to >= 1.3.1.
Run a single vault per server process, or isolate each tenant on a separate process/credential.
A central input.vault === ctx.vaultId guard was added in dispatch before the scope check.
{
"cwe_ids": [
"CWE-639",
"CWE-863"
],
"github_reviewed": true,
"github_reviewed_at": "2026-10-23T17:29:17Z",
"nvd_published_at": "2026-10-12T18:17:23Z",
"severity": "CRITICAL"
}