How to List VSCode Extensions Across All Mac, Windows, and Linux Devices
Using Kolide, you can easily view and query VSCode Extensions across your fleet.
Introduction
Visual Studio Code is a popular integrated development environment (IDE) software available on Windows, Mac and Linux, which is used by developers to write and edit code. In addition to its core feature-set, Visual Studio Code offers extensibility through its own marketplace or via manual installation of extension-like packages. These VS Code packages can be found at the Visual Studio Code > Marketplace webpage.
These packages can do among other things:
- Extend the functionality of Visual Studio Code
- Customize the appearance of Visual Studio Code through the installation of "Theme" packages, or widgets
- Facilitate collaboration between remote users via things like teletype
What VSCode Extension Data Can Kolide Collect?
Kolide's endpoint agent bundles in osquery to efficiently collect VSCode Extensions from Mac, Windows, and Linux devices in your fleet. Once collected, Kolide will parse, clean up, and centrally store this data in Inventory for your team to view, query, or export via API.
Kolide meticulously documents every piece of data returned so you can understand the results.
VSCode Extensions Schema
Column | Type | Description | |
---|---|---|---|
id | Primary Key |
Unique identifier for the object |
|
device_id | Foreign Key |
Device associated with the entry |
|
device_name | Text |
Display name of the device associated with the entry |
|
category | Text |
The author supplied category of the VSCode extension |
|
description | Text |
The author supplied description of the VSCode extension |
|
display_name | Text |
The user-friendly name of the VSCode extension |
|
marketplace_average_rating | Float |
The average number of stars (from 0 - 5 stars) users of this VSCode extension have rated it in the marketplace |
|
marketplace_icon_url | Text |
The url of the icon for the VSCode extension |
|
marketplace_installs_count | Bigint |
The number of global installations for this VSCode extension in the marketplace |
|
marketplace_last_released_at | Timestamp |
The timestamp when the latest version of the extension was released in the VSCode extension marketplace |
|
marketplace_latest_version | Text |
The latest version available for this extension in the VSCode extension marketplace |
|
marketplace_published_at | Timestamp |
The timestamp when the extension was first published in the VSCode extension marketplace |
|
marketplace_rating_count | Bigint |
The number of times users of this VSCode extension have rated it in the marketplace |
|
marketplace_report | Jsonb |
The raw JSON describing the VSCode extension from the VSCode Marketplace |
|
marketplace_updated_at | Timestamp |
The freshness of the marketplace data associated with this VSCode Extension |
|
name | Text |
The repository name of the VSCode extension |
|
path | Text |
The path where the VSCode extension is installed |
|
url | Text |
The repository url of the VSCode extension |
|
version | Text |
The text representation of the version |
|
version_major | Bigint |
|
|
version_minor | Bigint |
|
|
version_patch | Bigint |
|
|
version_subpatch | Bigint |
|
|
version_pre | Text |
|
|
version_build | Text |
|
|
collected_at | Timestamp |
Time the row of data was first collected in the database |
|
updated_at | Timestamp |
Time the row of data was last changed in the database |
|
What Can You Do With This Information?
Kolide enables you to write your own queries against the data the agent collects. This allows you to build your own reports and API endpoints. For example, you can:
SELECT
COUNT(*) AS install_count,
name,
version
FROM device_vscode_extensions
GROUP BY name, version
ORDER BY install_count DESC
name | version | install_count |
---|---|---|
ruby | 0.28.1 | 14 |
vscode-ruby | 0.28.0 | 14 |
slim | 0.1.2 | 10 |
vscode-gemfile | 0.4.2 | 10 |
rails | 0.17.8 | 10 |
js-debug-companion | 1.0.18 | 10 |
night-rider | 1.0.0 | 9 |
WITH
left_join_extensions AS (
-- Retrieve devices and look for ruby vscode package
SELECT
d.name AS device_name,
vs.name AS package_name,
vs.version
FROM devices d
LEFT JOIN device_vscode_extensions vs ON d.id = vs.device_id AND vs.name = 'ruby'
)
SELECT *,
CASE WHEN package_name ISNULL
THEN 'false'
ELSE 'true'
END AS ruby_ext_installed
FROM left_join_extensions
device_name | package_name | version | ruby_ext_installed |
---|---|---|---|
bupkis | (NULL) | (NULL) | false |
Jasons-MacBook-Pro | ruby | 0.28.1 | true |
franklin | (NULL) | (NULL) | false |
Kates-MacBook-Pro | (NULL) | (NULL) | false |
Daves-iMac-Pro | ruby | 0.28.1 | true |
lenovo-thinkpad | ruby | 0.27.0 | true |
ubuntu-dev-workstation | ruby | 0.28.1 | true |
Why Should I Collect VSCode Extensions?
VS Code Extension installations are cataloged and tracked to facilitate a number of potential purposes, for example:
- Reviewing installed packages to verify the desired configuration of Visual Studio Code
- Discovering potential malicious packages
End-User Privacy Consideration
Kolide practices Honest Security. We believe that data should be collected from end-user devices transparently and with privacy in mind.
VS Code extensions are unlikely to contain any identifiable or sensitive information, however it is possible they may indicate or suggest certain things about an end-user's behavior, such as the programming languages they are using.
When you use Kolide to list VSCode Extension data from end-user devices, Kolide gives the people using those devices insight into exactly what data is collected, the privacy implications, and who on the IT team can see the data. This all happens in our end-user privacy center which can be accessed directly by employees.