Dev Encyclopedia
ArticlesToolsContactAbout

Get notified when new content drops

No spam. Just new articles, tools, and updates straight to your inbox.

Dev Encyclopedia

A reference for builders

Dev.to
Discord
WhatsApp Channel
daily.dev
Hashnode
X

Content

  • Articles
  • Tools
  • About
  • Contact

Connect

  • support@devencyclopedia.com
  • RSS Feed

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

ยฉ 2026 Dev Encyclopedia

Back to top โ†‘
  1. Home
  2. /
  3. Tools
  4. /
  5. ExtensionAudit
Free ยท Live

Audit all your VS Code extensions in one paste.

After the GitHub breach, you should know what's running inside your editor. ExtensionAudit checks your entire installed list for unverified publishers and stale extensions, instantly, no install required.

  1. 1

    Run in terminal

    code --list-extensions
  2. 2

    Paste the output

    into the box below
  3. 3

    See your risk report

    per extension, in seconds
Zeeshan Tofiq

Zeeshan Tofiq

Full Stack Developer

How ExtensionAudit works

The whole audit happens in the page you are looking at. There is no install, no OAuth prompt, and no server of ours in the path between your extension list and the marketplace.

  1. 1

    You export your installed extension list

    Run code --list-extensions in any terminal. VS Code prints one extension ID per line in publisher.name form. That list is the complete inventory of what can execute inside your editor, which is the thing being audited.

  2. 2

    The pasted text is parsed into extension IDs

    Each line is trimmed, blank lines and lines beginning with a hash are dropped, and everything before the first dot becomes the publisher. IDs are lowercased and de-duplicated, so pasting the same list twice does not double the work. The counter in the corner of the box shows how many valid IDs were recognised.

  3. 3

    The IDs are queried against the VS Code Marketplace

    The IDs are sent in batches of 50 to the public marketplace gallery API, straight from your browser, with all batches running in parallel. Nothing is routed through a Dev Encyclopedia server, so we never see the list.

  4. 4

    Three facts are pulled back for every extension

    Whether the publisher carries the verified badge, the total install count, and the date the latest version was published. Anything the marketplace does not recognise comes back as not found rather than being silently dropped.

  5. 5

    A risk level is derived from verification plus staleness

    Unverified and last published over a year ago is red. Unverified, or last published over six months ago, is yellow. Verified and published within six months is green. Install count is shown for context but does not change the level, because popularity is not the same as safety.

  6. 6

    Results are sorted worst first and can be exported

    The table puts red at the top, then yellow, then unknown, then green, so the extensions that need a decision are the ones you see first. Export CSV writes the same data to a file for a ticket, an audit trail, or a team review.

What the risk signals mean

Low risk

Publisher is verified on the marketplace AND the extension was updated within the last 6 months.

Review recommended

Publisher is unverified, or the extension hasn't been updated in 6โ€“12 months. Worth a manual check.

High risk

Publisher is unverified AND the extension hasn't been updated in over a year. Strong candidate for uninstalling.

Unknown

Not found in the public marketplace. Could be a private, corporate, or typo'd extension ID.

What to do with each result

Green: No action needed

  • Continue using. Publisher is verified and the extension is actively maintained.

Yellow: Review recommended

  • Click the marketplace link and check the extension's GitHub repository for recent activity.
  • If you still need it: enable it per-workspace only instead of globally, press Ctrl+Shift+P โ†’ "Enable Extension (Workspace Only)".
  • If you don't use it: uninstall it. Unused extensions are pure attack surface.

Red: Evaluate carefully

  • Check the last commit date on the GitHub repository. Abandoned + unverified = high risk.
  • Ask yourself: have you used this extension in the last 90 days? If no, uninstall it now.
  • If you keep it: enable per-workspace only, Ctrl+Shift+P โ†’ "Enable Extension (Workspace Only)".

Unknown: Not in the public marketplace

  • This is expected for corporate or private extensions hosted on Azure DevOps.
  • If you don't recognise the extension ID, investigate: it may be a typo, a renamed extension, or something you don't remember installing.
  • Verify the source through your internal security channels before keeping it.

Make this a quarterly habit

Run code --list-extensions every 3 months and re-paste here. Extensions get compromised after you install them: a verified publisher today is not a guarantee for tomorrow.

Input format reference

The parser expects one extension ID per line in publisher.name form, which is exactly what the VS Code CLI prints. The counter in the corner of the input box shows how many valid IDs were recognised, so you can confirm the paste worked before running the audit.

Getting your list
# VS Code
code --list-extensions

# Forks use the same flag
cursor --list-extensions
codium --list-extensions
code-insiders --list-extensions

# Copy straight to the clipboard
code --list-extensions | pbcopy        # macOS
code --list-extensions | clip          # Windows
code --list-extensions | xclip -sel c  # Linux

# Versions are not needed, strip them if you have them
code --list-extensions --show-versions | cut -d@ -f1
What the parser accepts
ms-python.python          # standard form, counted
esbenp.prettier-vscode    # hyphens in the name are fine
  dbaeumer.vscode-eslint  # leading spaces are trimmed
MS-Python.Python          # case is normalised to lowercase

# lines starting with a hash are treated as comments

ms-python.python          # a repeat of an earlier ID is dropped
prettier                  # no dot, so this line is ignored
LineResultWhy
ms-python.pythonAuditedPublisher and name split on the first dot
GitHub.copilotAuditedLowercased before the marketplace lookup
ms-python.python@2026.2.0UnknownThe version suffix is part of the name, so no match is found
# my work machineSkippedComment line
(blank line)SkippedNothing to parse
prettierIgnoredNo dot, so there is no publisher to check

IDs are queried in batches of 50, all batches in parallel, so a list of 120 extensions is three requests to the marketplace and takes about as long as one.

When to use ExtensionAudit

The tool is most useful at the moments when your editor's extension list changes, or when someone needs evidence that it was reviewed.

SituationWhat to pasteWhat to look for
Quarterly personal cleanupYour full code --list-extensions outputRed rows and anything you have not opened in months
A marketplace compromise makes the newsYour full list, plus your teammates' listsThe named publisher, and any unverified publisher
Setting up a new machineThe list you are about to restoreStale extensions worth dropping before they are reinstalled
Onboarding a recommended extension setThe recommendations from .vscode/extensions.jsonUnverified publishers you would be asking the whole team to trust
Security questionnaire or audit evidenceYour full list, then Export CSVA dated CSV of publisher, verification, and last update
Reviewing an unfamiliar repo or a contractor machineThat machine's extension listUnknown rows, which are private, renamed, or mistyped IDs

Frequently Asked Questions

How does ExtensionAudit work?
  1. Run code --list-extensions in your terminal and paste the output into the text box.
  2. ExtensionAudit parses the list, then queries the VS Code Marketplace API directly from your browser.
  3. It fetches publisher verification status, install counts, and last update dates for each extension.
  4. The risk signal is calculated from those factors. No data is sent to DevEncyclopedia servers.
What does the risk signal mean?
SignalMeaning
๐ŸŸข GreenPublisher verified + updated within 6 months
๐ŸŸก YellowPublisher unverified, or not updated in 6โ€“12 months
๐Ÿ”ด RedPublisher unverified AND not updated in 1+ year
โšซ UnknownNot found in the public marketplace
What is a verified publisher?

The blue checkmark means the publisher verified domain ownership and has maintained good standing for at least six months.

โš  Warning

A verified badge is a meaningful signal, but not a guarantee. The May 2026 Nx Console breach happened through a verified publisher whose account token was stolen. A badge reduces risk: it doesn't eliminate it.

I have red or yellow extensions. What should I do?
  1. Click the marketplace link and review the extension's GitHub repository for recent activity.
  2. Ask yourself: have you used this extension in the last 90 days? If no, uninstall it: unused extensions are pure attack surface.
  3. If you keep it: enable it per-workspace only, press Ctrl+Shift+P โ†’ "Enable Extension (Workspace Only)".
Is my extension list private?

ExtensionAudit processes your list entirely in your browser. Extension names are sent directly to the VS Code Marketplace API to fetch metadata. DevEncyclopedia never receives or stores your extension list.

What about private or corporate extensions?

Private extensions hosted on a corporate Azure DevOps feed will not appear in the public VS Code Marketplace. ExtensionAudit shows them as Unknown, that is expected. Evaluate those extensions through your internal security channels.

Why doesn't a high install count improve the risk level?

Popularity is a measure of reach, not of safety. Install count is shown for context so you can tell a widely used tool from something you picked up once, but it never changes the colour of the row.

The reason is that a popular extension is a more valuable target, not a safer one. Supply chain attacks on editors and package registries work precisely because the compromised package already has a large installed base and an auto-update channel into every one of those machines.

โ„น Info

Two signals do change the level: publisher verification and how recently a version was published. Both are things a maintainer controls and keeps current, which makes them better proxies for whether anyone is still watching the codebase.

What is in the CSV export?

Export CSV downloads the same table you are looking at, one row per extension, generated in your browser with no upload step.

ColumnContents
ExtensionThe full publisher.name ID
PublisherThe publisher's display name
Verifiedyes, no, or unknown
InstallsTotal install count, blank when not found
Last UpdatedPublish date of the latest version
Riskgreen, yellow, red, or unknown

Attach it to a ticket, diff it against last quarter's export to see what changed, or hand it to whoever asked for evidence that the review happened.

Related reading

Guide

How to Audit Your VS Code Extensions for Security

The full guide on what to check, how to reduce your attack surface, and what to do if you're concerned.

Guide

Environment Variables in Next.js

Keep secrets out of your workspace and out of reach of extensions: how to manage env vars correctly.

Zeeshan Tofiq

Zeeshan Tofiq

Full Stack Developer

Full stack developer with over 6 years of experience building production applications. Writes practical guides on JavaScript, TypeScript, React, Node.js, and cloud infrastructure. Focused on helping developers solve real problems with clean, maintainable code.

Enjoyed this article?

Get practical dev guides, tool updates, and new articles delivered straight to your inbox. No spam, unsubscribe anytime.