[BUG] Settings schema: `extraKnownMarketplaces` git source requires `.git` suffix, but runtime accepts suffix-less URLs (breaks Azure DevOps)

Open 💬 0 comments Opened Jul 13, 2026 by brunopbarrote

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?

Summary

The published settings JSON schema enforces a \.git$ pattern on the url field of the
git source type under extraKnownMarketplaces, but Claude Code's runtime validation
accepts git URLs without the .git suffix. This mismatch produces false-positive editor
errors for git hosts whose clone URLs don't end in .git — notably Azure DevOps, which
rejects the .git suffix entirely (repo not found), making it impossible to satisfy
both the schema and the git host at the same time.

Environment

Suggested fix

Remove the "pattern": "\\.git$" constraint from the git source url field in
extraKnownMarketplaces, matching the runtime's actual validation and the
strictKnownMarketplaces definition.

What Should Happen?

The settings schema should accept any valid, clonable git URL in the url field of the
git source type under extraKnownMarketplaces, without requiring a .git suffix —
matching Claude Code's actual runtime validation, which accepts suffix-less URLs.

This matters for Azure DevOps specifically: its clone URLs
(https://dev.azure.com/{org}/{project}/_git/{repo}) do not end in .git, and appending
the suffix is not a workaround — Azure DevOps treats .git as part of the repository
name and fails to resolve the repo. So for Azure DevOps users it is currently impossible
to satisfy both the schema and the git host at the same time.

Note the inconsistency within the schema itself: the same git source type under
strictKnownMarketplaces has no .git$ pattern on its url field — only the
extraKnownMarketplaces variant enforces it. Removing the "pattern": "\\.git$"
constraint from the extraKnownMarketplaces variant would align schema, runtime, and
the sibling definition.

Error Messages/Logs

Editor validation (VS Code, using https://json.schemastore.org/claude-code-settings.json):

> String does not match the pattern of "\.git$".

This is a false positive: Claude Code's runtime accepts the same URL, and the marketplace
installs and loads plugins correctly with this configuration.

Steps to Reproduce

  1. Add an Azure DevOps repository as a marketplace source in managed-settings.json

(or .claude/settings.json):

    {
      "extraKnownMarketplaces": {
        "my-marketplace": {
          "source": {
            "source": "git",
            "url": "https://dev.azure.com/{org}/{project}/_git/{repo}"
          }
        }
      }
    }
  1. Open the file in an editor with JSON schema validation enabled (e.g. VS Code), which

resolves the schema from https://json.schemastore.org/claude-code-settings.json.

  1. Observe the validation error on the url field.
  1. (Confirming runtime accepts it) Launch Claude Code with this config plus a matching

strictKnownMarketplaces entry — the marketplace installs and plugins load without
error, demonstrating the schema is stricter than the runtime.

Claude Code version: 2.1.197

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.197 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

<img width="1062" height="534" alt="Image" src="https://github.com/user-attachments/assets/8dab385f-e263-4caa-bc82-63c438dc1468" />

View original on GitHub ↗