Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>fairexamNew to Visual Studio Code? Get it now.
fairexam

fairexam

VNAP

|
123 installs
| (0) | Free
Regularly sends a list of enabled extensions and buffer contents to a central server.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

fairexam README

This is an extension for monitoring what is happening inside of VSC in an exam context.

Features

  • Sends contents of open buffers to a server
  • Sends information regarding recent paste operations

Usage

The extension simply collects info and sends it to a server in JSON format. MongoDB is well-suited for receiving this data and then querying it.

Development

Open the project root folder in VSC and "Run → Debug" (or use F5). Note that there is a dev dependency on @types/normalize-url due to this issue.

Useful MongoDB queries

If you send the data to MongoDB, these queries will come in handy. You can run these in mongosh.

This assumes you have uploaded identification data to a collection called users with fields userID and email.

Translating user IDs to email addresses

db.users.find(
  { userID: { $in: ids } },
  { _id: 0, userID: 1, email: 1 }
);

Finding all active users between specific times

Make sure to replace A and B here.

let startOfExam = new Date("2026-01-01T12:00:00");
let endOfExam = new Date("2026-01-01T15:00:00");
let ids = db.readings.distinct("userID", {timestampInMillis: { $gt: startOfExam, $lt: endOfExam}});

Finding all inactive users

Assuming active users have been saved to ids.

db.users.find(
  { userID: { $not: { $in: ids } } },
  { _id: 0, userID: 1, email: 1 }
);

Finding out which users had AI features enabled after a certain timestamp

let ids = db.readings.distinct("userID", {aiDisabled: false, timestampInMillis: {$gt: startOfExam}})

Finding all observed extensions

db.readings.aggregate([
  { $unwind: "$activeExtensions" },
  {
    $group: {
      _id: "$activeExtensions.id"
    }
  }
])

Find out which users are running extension X

db.readings.distinct(
  "userID",
  { "activeExtensions.id": "vscode.merge-conflict" }
)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft