Transparent, opt-in, open source. Here's exactly what happens inside your editor.
One click from the VS Code Marketplace โ or paste ext install devcut.devcut in the command palette. The extension is open source (MIT), zero telemetry beyond impression counting, and stores nothing on your local machine beyond a pseudonymous user ID.
Build, test, install โ exactly as you do today. DevCut hooks into the VS Code Tasks API (onDidStartTask / onDidEndTask events). When a task runs for longer than 3 seconds, the extension makes a single HTTP call to fetch an ad line โ nothing is sent before that threshold. No background polling. No always-on connection.
Every 30-second slot where an ad is visible is one impression. At the end of the slot, a lightweight POST records the impression ID and your pseudonymous user ID โ no task content, no code, no keystrokes, nothing personal. Clicks earn more: when you click an ad, a click event is recorded (again, just the ad ID and your user ID). Your running balance is visible in the Command Palette at any time via DevCut: Show Earnings.
Set your UPI ID once in the extension settings (devcut.upiId). When your balance crosses โน50, we trigger a Razorpay X payout automatically โ weekly. You get a GPay / PhonePe / Paytm notification within 48h. No bank forms. No SWIFT codes. No waiting 14 days.
Nothing about your code, teammates, or projects ever leaves your editor. Here is the complete list.
| Data | Why it's needed | Sent to server? |
|---|---|---|
| Pseudonymous user ID (random UUID, generated locally on first install) | Associate impressions and earnings with your account without requiring an email or login | Yes โ every request |
| Task event type (build / test / install โ derived from task name regex) | Fetch the right ad category for the slot type | Yes โ on task start |
| Impression duration (seconds the ad was visible) | Validate the impression and calculate earnings | Yes โ on task end |
| UPI ID (only if you set one) | Route your payout to the right account | Yes โ on payout trigger only |
| Code content, file names, or repo names | โ | Never |
| Keystrokes or editor activity | โ | Never |
| Team members, Git commits, or PR data | โ | Never |
| IP address (stored) | โ | Received but not logged |
devcut.backendUrl in settings.
No. It only makes a single lightweight HTTP call when a task starts (to fetch the ad line) and another when it ends (to record the impression). No background polling, no analytics SDK, no always-on WebSocket.
Yes. One command โ DevCut: Toggle โ or flip devcut.enabled to false in settings. Earnings pause instantly and resume when you re-enable. The status bar item disappears completely while disabled.
At each impression, the server ranks all active bids for the matching slot type. The highest bidder wins and pays โน0.01 above the second-highest bid โ never more than their stated max. This prevents advertisers from overpaying and encourages honest bidding.
Any VS Code task that fires onDidStartTask and runs for >3 seconds. This includes npm run build, cargo build, jest, pytest, docker pull, npm install, and any custom task in your tasks.json. You can whitelist or blacklist specific task names in settings.
The server issues a signed token with each ad fetch. The extension sends that token back when recording the impression, along with the measured slot duration. The server verifies the signature and rejects impressions that were never fetched or that arrive outside the valid time window.
Yes โ the impression counter, earnings tally, and Razorpay payout trigger are all in the open-source server repo. You can also run DevCut: Show Earnings Breakdown in the Command Palette to see a per-day log of slots, impressions, clicks, and accrued balance.
Open VS Code, press โP, paste the install command.