DarkCoder for VS Code
A coding agent in your sidebar, signed in with your DarkCoder.ai account. Chat with any model on your plan, and let the agent read, search and edit your code and run commands, with your approval at every step.
Works in VS Code, Cursor, Windsurf and VSCodium (1.90 or newer).
Features
- Sidebar chat with streaming Markdown, copy / insert-at-cursor / apply-to-file on code blocks, and clickable
src/app.ts:42 links. Open it in an editor tab for a wider view.
- Any model on your plan. Pick DarkCoder Auto or a specific model (badges show which support tools and images). If your plan includes your own providers, switch the source to My providers.
- Agent mode with tools: list, read and search files, find files, edit and write files, delete files, run commands, read VS Code Problems, ask you a question.
- Diff approval. Every edit opens as a diff you Apply or Reject. Applied edits show Undo, and each task has "Undo all changes".
- Commands with approval. Output streams into the chat. Destructive commands (
rm -rf, git reset --hard, force pushes, DROP TABLE, sudo, ...) always ask, even when auto-approve is on.
- Context. The current file, your selection, the Problems panel,
@file mentions and pasted images (for vision models). Slash commands: /new, /explain, /fix, /tests, /review, /commit.
- History per workspace with search, rename and delete.
- Usage from your plan. The status bar and header show today's messages. One message is one unit, however many tool rounds the task takes.
- Right-click menus ("Ask / Explain / Fix with DarkCoder"), a lightbulb quick fix on diagnostics, and keybindings
Ctrl/Cmd+Alt+D (open chat) and Ctrl/Cmd+Alt+L (ask about selection).
Install
- From the Marketplace: search for "DarkCoder" (listing coming soon).
- From a .vsix: download it from darkcoder.ai/vscode, then run Extensions: Install from VSIX... or
code --install-extension darkcoder-ai-0.2.3.vsix.
Sign in
- Click the DarkCoder icon in the Activity Bar and choose Sign in with DarkCoder.
- Your browser opens your DarkCoder account. Check it and press Allow.
- The browser returns you to the editor. Your editor appears under Connected editors on your DarkCoder account page, where you can revoke it any time.
If the browser cannot open, use Open sign-in link manually to copy the link. Sign-in uses a revocable device token (PKCE), never your password or a gateway key. The token is kept in VS Code's SecretStorage.
Self-hosting? Set darkcoder.baseUrl (for example http://localhost:3000).
Agent safety
- The agent only touches files inside your open workspace folders.
.. escapes and symlinks pointing outside are rejected.
- It never reads secret files (
.env*, *.pem, *.key, id_rsa*, *.p12, *secret*, *.keystore) unless you @-mention them, and it respects .gitignore and darkcoder.excludeGlobs.
- In an untrusted workspace it can chat and read, but edits, deletes and commands are disabled.
- Edits and commands ask first by default. Before the first write in a task, each file is snapshotted so the whole task can be undone.
Settings
| Setting |
Default |
|
darkcoder.baseUrl |
https://darkcoder.ai |
Server URL |
darkcoder.defaultModel |
(server default) |
Model for new chats |
darkcoder.source |
shared |
shared (your plan's models) or own (your providers) |
darkcoder.autoApprove.reads |
true |
List, read and search without asking |
darkcoder.autoApprove.edits |
false |
Apply edits without asking |
darkcoder.autoApprove.commands |
false |
Run commands without asking (destructive ones still ask) |
darkcoder.maxSteps |
0 |
Tool rounds per task before asking to continue (0 = server value) |
darkcoder.commandTimeoutSeconds |
120 |
Default command timeout |
darkcoder.telemetry |
true |
Anonymous usage counters |
darkcoder.excludeGlobs |
node_modules, .git, dist, ... |
Files the agent never sees |
darkcoder.thinking / darkcoder.effort |
off / medium |
Reasoning for models that support it |
Privacy
- Your messages, the context you attach (files, selection, problems, images) and the files the agent reads are sent to the DarkCoder server at
darkcoder.baseUrl, which forwards them to the model you choose. Nothing is sent to anyone else.
- Telemetry (turn off with
darkcoder.telemetry) is limited to these counters: session_start, message_sent, task_completed (steps, tool calls, token counts, model id, duration, outcome), tool_call (tool name, approved), edit_applied (file count, lines added and removed), edit_rejected, command_run (exit code), error (error code). Never file paths, code, command text or prompts.
- Chat history is stored locally in VS Code's global state; agent checkpoints live in the extension's storage folder for 14 days.
Developing
cd Extension
npm install
npm run typecheck
npm run compile # esbuild: out/extension.js + out/webview.js + out/webview.css
npm test # node --test: pure logic + a scripted-server agent harness
npm run package # darkcoder-ai-0.2.3.vsix via vsce
Press F5 in VS Code to launch an Extension Development Host. npm run watch rebuilds on change.
src/agent/ is the loop, tool schemas and tools. They talk to the editor through the Env interface (src/vscodeEnv.ts is the VS Code implementation, src/__tests__/harness/nodeEnv.ts a plain-Node one for tests).
src/webview/ is the Preact UI. node src/__tests__/harness/shots.mjs renders it with mocked host messages and writes screenshots to ../.shots/ext_*.png.
- The Marketplace publisher id is
darkcoderai. To publish: npx vsce login darkcoderai, then npx vsce publish. For Open VSX: npx ovsx publish darkcoder-ai-0.2.3.vsix -p <token>.
- The server contract (sign-in,
/api/ext/*) lives in the DarkCoder web app (src/server/ext.ts, src/app/api/vscode/*, src/app/api/ext/*).
| |