License Filter
Filter the extensions you have installed, and pages of Marketplace or Open VSX results, by license. Every row shows the license the publisher shipped: an SPDX id such as MIT or Apache-2.0, a proprietary or custom-terms label, or Unknown when nothing recognizable is there.
The registries still cannot query by license. This extension reads the metadata, then the filters run on the rows it has loaded.
What you see
Installed: family chips, open-source and unknown toggles, and a license badge on each extension. Built-in extensions stay hidden until you include them.
Marketplace: search by extension name. License chips and the name-or-license box filter that page. Load more fetches the next page and resolves those licenses too.
Layout stand-ins live at media/screenshot-installed.png and media/screenshot-marketplace.png. They are not shipped in the VSIX and this README does not embed them. The Origin repository is private, so a Marketplace image link would 404.
Use
Open the License Filter icon in the Activity Bar, or run License Filter: Open from the Command Palette.
- Installed lists your extensions. Include built-in adds the ones that ship with the editor.
- Marketplace searches the registry in
licenseFilter.registry (marketplace or openvsx). An empty search lists popular extensions.
- Family chips select permissive, weak copyleft, strong copyleft, proprietary, or unknown. More than one chip is a union.
- Open source only keeps permissive and copyleft rows. Hide unknown drops rows with no recognizable license.
- The text box matches display name, id, description, and license together.
prettier mit keeps a Prettier row whose license is MIT.
- Show in Extensions opens that extension in the Extensions view. Registry page opens the public listing. Terms appears when the license field is an
https URL.
- License Filter: Filter Installed by License is a quick pick of families and the license ids found on disk.
MIT OR GPL-3.0 is treated as permissive, because you can choose MIT. MIT AND GPL-3.0 is treated as strong copyleft. A URL in the license field, which is what GitHub Copilot publishes, is Custom terms in the proprietary family.
Where the license text comes from
- The
license field in package.json (a string, { "type": "MIT" }, or the legacy licenses array).
- When that field is missing, unparseable, or
SEE LICENSE IN …, the LICENSE file. Installed extensions are read from disk. Marketplace results use the gallery Microsoft.VisualStudio.Services.Content.License asset. Open VSX results use files.license.
A known SPDX id in package.json wins over a different header in the LICENSE file.
Settings
| Setting |
Default |
What it does |
licenseFilter.registry |
marketplace |
marketplace queries marketplace.visualstudio.com. openvsx queries open-vsx.org. |
Limits
The labels are metadata plus a header sniff, not a legal opinion. WITH exception clauses stay on the SPDX id and do not change the family. Registry license filters apply only to pages this extension has fetched. Resolved licenses are cached in global state by extension id and version.
Develop
npm install
npm test
npm run compile
Open this folder in VS Code and press F5 (Run Extension). That starts an Extension Development Host with the extension loaded. npm run watch rebuilds while you edit. The F5 launch config runs that watch task first.
npm test covers license parsing, LICENSE-file sniffing, filters, and gallery payload parsing. It does not download VS Code. To check the live Marketplace once:
LICENSE_FILTER_LIVE=1 npm test
That checks Prettier (MIT in package.json), PowerShell (SEE LICENSE plus an MIT license file), Copilot (a terms URL), and the C/C++ extension (Microsoft terms in the LICENSE asset).
Publish
Packaging and the Marketplace / Open VSX upload commands are in PUBLISHING.md in the repository. The publisher id is ggk.