VS Code Marketplace Verified

TokenGuard Copilot

by AdGuard · 443 users · 5.0 rating
7ca0e2f5-4fad-5ee5-986c-83c95ecc9bdc | v1.7.0
50/ 100
MEDIUM risk
No change since v1.6.2
Analyst verdict
Review before use

The AI review rates the findings as likely false positive, but the risk score (50/100) still counts them.

Analysis record

Analysed
2 weeks ago
Version
v1.7.0
Artifact
SHA256 570…4A7
Source
Findings (non-IoC)

Is TokenGuard Copilot safe?

TokenGuard Copilot routes VS Code's Copilot Chat to OpenAI-compatible models, so you supply the endpoint and the API key and it passes your prompts along. This extension declares no special permissions, and the listing names no network endpoints, which is what you would expect from a tool whose only job is to forward a chat request to the model server you choose.

The scan's four network hits all sit in the compiled file extension/out/extension.js. One of them, NET-SOCKET_IO-extension/out/extension.js-44, is a socket connection opened from the extension's entry point. In a chat extension that is the streaming link that carries tokens back from the model. Opened against an endpoint you configured, it is the feature working. Opened against a domain you never chose, it would be a leak, and no unexpected domain shows up anywhere in the scan.

The rest of the scan is 79 low-severity matches on that same build output, of the kind that fire on almost any bundled Node.js code because it uses fetch, crypto and environment variables. Nothing here reads .env files, SSH keys or cloud credentials, and no malware signature or obfuscation hit turned up. The scanner tripped on compiled JavaScript and the ordinary HTTP calls this extension is built to make, not on behavior that harms you. One detail worth knowing: the publisher is listed as AdGuard, a company better known for ad blocking, which is an unusual name for a Copilot model router.

Evidence ledger

Ranked by severity · findings with a source location link to the code viewer

83 detail rows

YARA Rule Matches

13 rules
SeverityRuleHitsFilesMetadata
LOWcredential env files 2
out/extension.jsout/webview/settings-app.js.map
-
LOWAPT1 WEBC2 Y21K 1
assets/model/o200k_base.tiktoken
-
LOWpostinstall persistence mechanism 3
changelog.mdpackage.jsonout/webview/settings-app.js.map
-
LOWpostinstall registry modification 5
out/extension.jschangelog.mdreadme.md +2 more
-
LOWpostinstall crypto operations 4
assets/models.dev.jsonout/webview/settings-app.js.mapout/extension.js +1 more
-
LOWpostinstall file manipulation 25
changelog.mdout/webview/settings-app.js.mapout/db/migrations/20260520130114_free_christian_walker/snapshot.json +22 more
-
LOWpostinstall network communication 10
readme.mdLICENSE.txtout/webview/settings-app.js.map +7 more
-
LOWpostinstall obfuscation 5
assets/models.dev.jsonout/extension.jsassets/model/o200k_base.tiktoken +2 more
-
LOWpostinstall system command 10
extension.vsixmanifestout/webview/settings-app.js.mapout/webview/codicon.ttf +7 more
-
LOWpostinstall file download 9
out/extension.jsout/webview/codicon.ttfchangelog.md +6 more
-
LOWcredential gcp credentials 1
assets/models.dev.json
-
LOWSQLInjection 1
out/webview/settings-app.js
-
LOWNoUseWeakRandom 3
out/extension.jsout/webview/settings-app.jsout/webview/settings-app.js.map
-

Publisher Evidence

Low

AdGuard

Publisher identity, store signals, distribution reach, and warning signals used for context. Treat this as supporting evidence, not a clean bill of health.

86
Noisy-finding weight
x1.00
Publisher domain
adguard.com
Observed
Store verification signal
Verified publisher
Verified
Extension portfolio
13
Portfolio

11 evidence rows available.

Finding Categories

4
Network

YARA Rules Matched

13 rules(79 hits)
credential env files APT1 WEBC2 Y21K postinstall persistence mechanism postinstall registry modification postinstall crypto operations postinstall file manipulation postinstall network communication postinstall obfuscation postinstall system command postinstall file download credential gcp credentials SQLInjection NoUseWeakRandom

AI Security Report

AI Security Review

Evidence context: threat category none; evidence quality moderate.

TokenGuard Copilot exists to point VS Code Copilot Chat at OpenAI-compatible model endpoints, so outbound HTTP is the feature, not a side effect. Every network finding lives in the compiled entry point, extension/out/extension.js, as NET-FETCH-extension/out/extension.js-1, NET-FETCH-extension/out/extension.js-47, NET-FETCH-extension/out/extension.js-49 and NET-SOCKET_IO-extension/out/extension.js-44. A fetch call at the top of a bundle and a socket connection at line 44 are what a chat model provider looks like in practice: one HTTP client for the completion request, one streaming connection for the response tokens. No finding in this scan involves shell execution, child processes or install-time hooks.

On filesystem and process access, nothing turned up at the manifest level, and the listing declares no permissions and no endpoints. The 79 code-smell hits are all low severity and land on compiled output, which is where a bundler funnels several npm packages into one file. Those rules match generic Node patterns such as crypto, fs and process.env, so they describe the runtime the extension sits in rather than anything it chooses to do.

Credential findings: there are none in the secret category. Nothing reads .env files, .git/config, SSH keys or cloud credential stores, and nothing reaches into VS Code secret storage. That matters here because this extension does accept an API key you paste in, and the real question is where that key travels. The only outbound calls in the evidence are the ones the extension advertises, and no indicator-of-compromise hit names a domain that would route a key somewhere unexpected. With zero IoC entries, zero malware signatures and no obfuscation finding, the scan contains no artifact pointing at exfiltration.

The strongest argument against this call is the publisher name. The listing attributes the extension to AdGuard, a company known for ad blocking and DNS privacy products, while the extension itself is a model router for Copilot Chat. That mismatch is odd and worth flagging for anyone weighing the install. It does not change the conclusion, because a spoofed name only matters when the code backs it up, and here the code does the documented job: it fetches from the endpoint you configure. The other mild caveat is scale, 415 installs at version 1.7.0 is a small audience, so less community scrutiny than a mainstream extension draws.

A second counterargument is that any extension forwarding prompts, and whatever workspace context Copilot Chat attaches, to a third-party endpoint moves data off your machine. That is true, and it is the trade a user makes when installing a tool described in those exact words. Nothing in the findings shows it sends that data anywhere beyond the endpoint you set up.

Key Reasons

  • All four network findings (NET-FETCH and NET-SOCKET_IO) sit in extension/out/extension.js and match the extension's stated purpose of calling OpenAI-compatible model endpoints
  • No secret-category findings: no .env, .git/config, SSH key or cloud credential access anywhere in the scan
  • Zero malware signatures, zero IoC matches, zero obfuscation findings and no tool-poisoning indicators
  • The 79 remaining findings are low-severity code-smell rules firing on bundled build output, which is expected noise
  • The extension declares no permissions and no endpoints, leaving the four NET-* titles as the only concrete signal

False Positive Considerations

  • 79 low-severity code-smell matches on compiled extension/out/extension.js bundle output rather than hand-written source
  • Network findings are fetch and socket calls that a chat model provider has to make, not unexplained callbacks
  • Code-smell rules match generic Node.js patterns (crypto, fs, process.env) present in any bundled extension
  • Empty permissions and network_endpoints arrays mean no declared capability supports a malicious reading

Reviewed 2026-10-11; recommended action: no action; model confidence 72%.

VS Code version history

Risk trend by version

11 analyzed versions. Each point is the latest successful scan for that version; failed zero-score scans are hidden. Dates are based on first seen by risky plugins.

Selected
50
Change since first
+7
Change from previous
No change
Versions:
First analyzed version
0.1.0
May 29, 2026
Risk range
44 to 50
Across analyzed versions
Latest analyzed version
1.7.0
Oct 9, 2026
Selected version
medium
Version
v1.7.0
2 weeks ago
Risk score
50
Findings
83
Change vs previous
No change

Pick any point on the chart to explore that version's code below.

About This Extension

Use third-party OpenAI-compatible models with VS Code Copilot Chat

Frequently Asked Questions