[BUG] Settings schema: `extraKnownMarketplaces` git source requires `.git` suffix, but runtime accepts suffix-less URLs (breaks Azure DevOps)
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 thegit 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
- Claude Code version: 2.1.197 (managed settings deployment)
- Schema: https://json.schemastore.org/claude-code-settings.json
- Git host: Azure DevOps (
dev.azure.com)
Suggested fix
Remove the "pattern": "\\.git$" constraint from the git source url field inextraKnownMarketplaces, matching the runtime's actual validation and thestrictKnownMarketplaces definition.
What Should Happen?
The settings schema should accept any valid, clonable git URL in the url field of thegit 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 understrictKnownMarketplaces has no .git$ pattern on its url field — only theextraKnownMarketplaces 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
- 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}"
}
}
}
}
- 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.
- Observe the validation error on the
urlfield.
- (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" />