Environment
- Copilot CLI:
1.0.88
- OS: macOS
Problem
copilot plugin marketplace add <owner>/<repo> performs strict Zod validation
of marketplace.json and rejects the entire marketplace if any plugin
entry has a description longer than 1024 characters. There is no partial
load, warning-and-skip, or truncation — a single non-conformant plugin entry
makes the whole marketplace (hundreds of otherwise-valid plugins) unusable.
This may be related to/duplicate work for #3494 (SKILL.md description >1024
chars silently dropped from skills.list()), but the failure mode here is the
opposite and arguably worse: instead of silently dropping the SKILL.md entry
in an installed plugin, the CLI hard-fails to add an entire marketplace
because of a handful of over-length description fields in marketplace.json.
Reproducer
$ copilot plugin marketplace add Rippling/claude-marketplace
Failed to add marketplace: Error: Request plugins.marketplaces.add failed with message: Invalid marketplace.json: plugins.27.description: String must contain at most 1024 character(s), plugins.89.description: String must contain at most 1024 character(s), plugins.147.description: String must contain at most 1024 character(s), plugins.171.description: String must contain at most 1024 character(s), plugins.394.description: String must contain at most 1024 character(s), plugins.406.description: String must contain at most 1024 character(s), plugins.417.description: String must contain at most 1024 character(s), plugins.439.description: String must contain at most 1024 character(s), plugins.580.description: String must contain at most 1024 character(s), plugins.610.description: String must contain at most 1024 character(s)
The referenced marketplace.json has 672 plugin entries; 10 of them have
description fields between 1084 and 6103 characters (one is nearly 6x the
cap). Trimming just those 10 descriptions to ≤1024 chars allows the
marketplace to be added successfully — every other field/entry is otherwise
valid.
Impact
- A single contributor adding an overlong description (easy to do
accidentally, e.g. via generated/templated descriptions) blocks marketplace
adoption for the entire org, not just their plugin.
- The error message lists the offending indices but not plugin names, making
it hard to locate/fix the entries without manually indexing into the JSON
array.
- There's no
--force/lenient mode to add the marketplace while skipping or
truncating invalid entries.
Suggested fix
Environment
1.0.88Problem
copilot plugin marketplace add <owner>/<repo>performs strict Zod validationof
marketplace.jsonand rejects the entire marketplace if any pluginentry has a
descriptionlonger than 1024 characters. There is no partialload, warning-and-skip, or truncation — a single non-conformant plugin entry
makes the whole marketplace (hundreds of otherwise-valid plugins) unusable.
This may be related to/duplicate work for #3494 (SKILL.md
description>1024chars silently dropped from
skills.list()), but the failure mode here is theopposite and arguably worse: instead of silently dropping the SKILL.md entry
in an installed plugin, the CLI hard-fails to add an entire marketplace
because of a handful of over-length
descriptionfields inmarketplace.json.Reproducer
The referenced
marketplace.jsonhas 672 plugin entries; 10 of them havedescriptionfields between 1084 and 6103 characters (one is nearly 6x thecap). Trimming just those 10 descriptions to ≤1024 chars allows the
marketplace to be added successfully — every other field/entry is otherwise
valid.
Impact
accidentally, e.g. via generated/templated descriptions) blocks marketplace
adoption for the entire org, not just their plugin.
it hard to locate/fix the entries without manually indexing into the JSON
array.
--force/lenient mode to add the marketplace while skipping ortruncating invalid entries.
Suggested fix
(matching the description in SKILL.md files with description > 1024 chars are silently dropped from skills.list() — no warning, no error #3494) instead of failing the whole
marketplace add, OR
name/id(not just array index) in the validationerror so it's actionable, and/or
descriptioncap formarketplace.jsonpluginentries (currently not called out anywhere in
https://docs.github.com/copilot/how-tos/copilot-cli/customize-copilot/plugins-marketplace).