TokenGuard Copilot
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
YARA Rule Matches
13 rules| Severity | Rule | Hits | Files | Metadata |
|---|---|---|---|---|
| LOW | postinstall registry modification | 5 | readme.mdchangelog.mdout/extension.js +2 more | - |
| LOW | postinstall crypto operations | 4 | assets/models.dev.jsonout/webview/settings-app.js.mapout/extension.js +1 more | - |
| LOW | postinstall file manipulation | 25 | changelog.mdout/webview/settings-app.js.mapout/db/migrations/20260520130114_free_christian_walker/snapshot.json +22 more | - |
| LOW | postinstall network communication | 10 | assets/models.dev.jsonLICENSE.txtout/webview/settings-app.js.map +7 more | - |
| LOW | postinstall obfuscation | 5 | assets/model/o200k_base.tiktokenassets/models.dev.jsonout/extension.js +2 more | - |
| LOW | postinstall system command | 10 | extension.vsixmanifestout/webview/settings-app.js.mapout/webview/codicon.ttf +7 more | - |
| LOW | postinstall file download | 9 | changelog.mdout/webview/codicon.ttfpackage.json +6 more | - |
| LOW | credential gcp credentials | 1 | assets/models.dev.json | - |
| LOW | SQLInjection | 1 | out/webview/settings-app.js | - |
| LOW | NoUseWeakRandom | 3 | out/extension.jsout/webview/settings-app.jsout/webview/settings-app.js.map | - |
| LOW | credential env files | 2 | out/webview/settings-app.js.mapout/extension.js | - |
| LOW | APT1 WEBC2 Y21K | 1 | assets/model/o200k_base.tiktoken | - |
| LOW | postinstall persistence mechanism | 3 | changelog.mdpackage.jsonout/webview/settings-app.js.map | - |
Publisher Evidence
LowAdGuard
Publisher identity, store signals, distribution reach, and warning signals used for context. Treat this as supporting evidence, not a clean bill of health.
11 evidence rows available.
Finding Categories
YARA Rules Matched
13 rules(79 hits)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.
Pick any point on the chart to explore that version's code below.
Source Code Not Available
Source code is not available for this version of the extension.
About This Extension
Frequently Asked Questions
Similar Extensions
Related extensions from the same publisher or marketplace