[BUG] Claude Desktop: first-party Filesystem extension unusable — all tools rejected, "outputSchema declares an unsupported dialect (draft-07)"

Status Open
Reported on v2.1.233
Maintainer reply None cached
Activity 4 comments · opened Sep 14, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Anthropic's own Filesystem extension is completely unusable in Claude
Desktop. Every tool is rejected before dispatch by the host's own
schema validator. Clean install, current version, no user config
involved.

Related: #86142 — closed 2026-08-20 as non-reproducing after a test on
Claude Code CLI 2.1.233 (Linux). The reports were Claude Desktop
(macOS/Windows). Those surfaces select different MCP client stacks at
runtime via tengu_brindle_causeway: v1 accepts draft-07, v2 rejects it.
Confirmations continued after closure across Desktop, Cowork, and
numerous third-party servers. Filing fresh rather than commenting on a
closed thread.

ENVIRONMENT
Surface: Claude Desktop (Cowork session), macOS, Apple Silicon
Host: 1.52386.3
Extension: ant.dir.ant.anthropic.filesystem 2026.7.10 (current, no update offered)
Bundles: @modelcontextprotocol/server-filesystem 2026.7.4
SDK: @modelcontextprotocol/sdk 1.29.0

SYMPTOM
Every tool fails before dispatch. No tool has ever executed.

invalid outputSchema: JSON Schema declares an unsupported dialect
("$schema": "http://json-schema.org/draft-07/schema#"). The default
validator supports JSON Schema 2020-12 only; pass a pre-configured
Ajv instance to AjvJs

Identical for list_allowed_directories, list_directory, and every
other tool in the manifest.

RULED OUT

  • Client-side caching. Forcing a live tool-list re-query returns

"refreshed" with no adds/removes; the next call errors identically.

  • Stale or duplicate install. One copy on disk, dated to a clean

uninstall/reinstall. No other server-filesystem copy under
Claude Extensions or ~/.npm/_npx.

  • User config. mcpServers in claude_desktop_config.json is {} — the

extension installs through the UI, so editing or deleting that file
changes nothing.

  • Extension version. 2026.7.10 is current; no update offered.
  • Preferences / folder grants. The failure occurs during tool

definition parsing, before any preference is read.

MECHANISM — SERVER SIDE (confirmed on disk)
dist/index.js contains no draft-07 literal; the string appears only
under node_modules. The SDK routes server-side schema generation
through:

@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
@modelcontextprotocol/sdk/dist/cjs/server/zod-json-schema-compat.js

which calls zod-to-json-schema, defaulting $schema to draft-07. zod v4
ships in the same bundle and its native z.toJSONSchema() emits
2020-12, but the compat shim is the path taken.

MECHANISM — HOST SIDE
Per #86142, the v2 validator accepts only:

https://json-schema.org/draft/2020-12/schema
http://json-schema.org/draft/2020-12/schema

and throws on anything else rather than registering the declared
meta-schema. Since MCP permits draft-07, this rejects conforming
servers. Registering draft-04/06/07 meta-schemas in the v2 Ajv
instance is the durable fix; changing the shim only patches
first-party servers.

SCOPE
Not specific to Filesystem — any server on SDK 1.29.0 declaring
outputSchema fails identically against a v2-strict host.

IMPACT
No user-side action resolves it. Reinstall, config edit, and
preference reset all leave the error byte-identical. A first-party
Anthropic extension failing schema validation against the host it
ships alongside, with the tracking issue closed and no fix released.

What Should Happen?

Claude reads/writes to mac OS local filesystem

Error Messages/Logs

Steps to Reproduce

  1. On macOS, open Claude Desktop 1.52386.3 (or current).
  1. Settings → Extensions → install the first-party "Filesystem"

extension (ant.dir.ant.anthropic.filesystem, v2026.7.10).

  1. When prompted for user_config.allowed_directories, select any

directory you can read — e.g. ~/Documents.

  1. Start a new conversation. Confirm the Filesystem tools are

announced and visible to the model.

  1. Invoke any tool on that server. The simplest takes no arguments:

list_allowed_directories

Or with a path:

list_directory path: /Users/<you>/Documents

EXPECTED
The tool executes and returns a directory listing.

ACTUAL
The call never dispatches. It fails during tool-definition parsing:

Error: Tool 'list_allowed_directories' has an invalid outputSchema:
JSON Schema declares an unsupported dialect
("$schema": "http://json-schema.org/draft-07/schema#").
The default validator supports JSON Schema 2020-12 only;
pass a pre-configured Ajv instance to AjvJs

Every tool in the manifest fails identically. No tool has ever
executed.

FREQUENCY
100%. Every call, every session, every tool.

NOTES ON SURFACE
Reproduce on Claude Desktop (macOS), not Claude Code CLI. Per #86142
the two select different MCP client stacks at runtime via
tengu_brindle_causeway — v1 accepts draft-07, v2 rejects it. A
CLI/Linux test will not reproduce this and is what led to #86142
being closed in error.

OPTIONAL VERIFICATION (on-disk, no repro needed)
grep -rl "zod-to-json-schema" \
~/Library/Application\ Support/Claude/Claude\ Extensions/\
ant.dir.ant.anthropic.filesystem/node_modules/@modelcontextprotocol/sdk/dist/

Returns server/zod-json-schema-compat.js in both esm and cjs —
the schema-generation path that emits draft-07.

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.63 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

Claude Desktop 1.52386.3 (macOS, Apple Silicon)
NOT Claude Code CLI — see Steps to Reproduce. This is a Desktop-only
surface; the CLI runs a different MCP client stack and will not
reproduce.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗