WayCodeAn AI coding agent that lives in your VS Code sidebar — talks to you in your language, works on your whole project, and never changes a file behind your back. What is WayCode?WayCode is a VS Code extension that turns a chat panel into a real coding agent. You describe what you want — in English, Hebrew, Arabic, or anything else — and it reads your repository, searches the code, writes and edits files, runs your tests and linter, reads the errors, and fixes them. Every risky step shows you a diff or the exact command and waits for your approval, unless you tell it not to. It is provider-agnostic: Claude, GPT, a local Ollama model, or your existing Claude Code CLI subscription. And it can split the work between two models — one that's great at your language and one that's great at code.
Highlights
Quick start
Zero-cost setup (no API key)Two ways to run WayCode without paying per token:
How it worksSingle-agent mode (default)One model does everything, in a bounded tool-use loop:
If the model announces a plan but calls no tool, WayCode detects the stall and nudges it to act — so you don't get a to-do list instead of working code. Multi-agent mode (
|
| Mode | Reads | File edits | Commands |
|---|---|---|---|
| ✋ Manual | auto | ask | ask |
| ⟨⟩ Auto-edit | auto | auto | ask |
| 📋 Plan | auto | blocked — explores and proposes a plan only | blocked |
| 🌙 Auto | auto | auto | auto |
Even in 🌙 Auto, an overwrite that would wipe most of an existing file still asks — a "summary" write that collapses a 500-line file is never approved silently.
Tools
| Tool | Risk | What it does |
|---|---|---|
read_file |
read | Read a text file (size-capped) |
list_files |
read | List a directory |
search_code |
read | ripgrep (or grep -E fallback), case-insensitive, glob-filterable |
analyze_error |
read | Extract file:line locations and error codes from build/test output |
create_file |
write | Create a new file — shows a diff |
edit_file |
write | Replace a unique snippet — shows a diff |
write_file |
write | Overwrite a file — shows a diff, gated when destructive |
run_terminal |
execute | Any shell command in the workspace root |
run_tests |
execute | Your test command (default npm test) |
run_linter |
execute | Your lint command |
git |
execute | status/diff/log run freely; add/commit/checkout ask |
Guardrails: every path is resolved inside the workspace (no ../ escapes), and commands that never
exit (npm run dev, vite, tsc --watch, docker compose up, …) are refused with a pointer to a
one-shot check instead — so a run can't burn its budget on a watcher. Tool names models commonly guess
(bash, str_replace, ls, grep, …) are aliased to the real ones.
Providers
| Provider | API key | Default model | Notes |
|---|---|---|---|
| Anthropic (Claude) | required | claude-sonnet-4-5 |
Full tool use |
| OpenAI (GPT) | required | gpt-4o |
waycode.openai.baseUrl also targets LM Studio, Groq, Together, Azure |
| Ollama (local) | — | gemma2 |
Installed models are listed for you; tool calls emitted as JSON text are recovered |
| Claude Code (CLI) | — | sonnet |
Uses your existing Claude subscription; text-only |
All providers share one HTTP layer with timeouts and readable errors, so a loading local model can't hang the panel forever.
Commands
| Command | Purpose |
|---|---|
WayCode: Open Chat |
Focus the sidebar chat |
WayCode: Open in Editor Tab |
Full-width chat in an editor tab |
WayCode: Settings |
Visual settings panel |
WayCode: New Task |
Start a fresh thread (archives the current one) |
WayCode: Conversation History |
Browse and reopen past conversations |
WayCode: Select Model / Provider |
Pick provider + model |
WayCode: Set API Key |
Store a key in Secret Storage |
WayCode: Configure Agent Roles |
Enable and configure the communicator/coder pipeline |
WayCode: Set Approval Mode |
Choose the approval policy |
WayCode: Select Response Language |
Reply language, or auto |
WayCode: Add File to Context |
Pin a file (also in the Explorer context menu) |
WayCode: Ask About Selection |
Select code → right-click → prefills the chat with it |
WayCode: Edit Project Context File |
Create/open WAYCODE.md |
Settings
| Setting | Default | Description |
|---|---|---|
waycode.provider |
anthropic |
Active provider |
waycode.model |
claude-sonnet-4-5 |
Model id for the active provider |
waycode.language |
auto |
Reply language (auto matches you) |
waycode.maxAgentSteps |
25 |
Max tool-use iterations per task |
waycode.autoApproveReads |
true |
Auto-approve read-only tools |
waycode.autoApprove.fileEdits |
false |
Auto-approve writes/edits/creates |
waycode.autoApprove.commands |
false |
Auto-approve terminal/git/test/lint |
waycode.multiAgent.enabled |
false |
Enable the communicator + coder pipeline |
waycode.roles.communicator.provider / .model |
ollama / gemma2 |
The language-facing role |
waycode.roles.coder.provider / .model |
inherit | The code-writing role |
waycode.ollama.baseUrl |
http://localhost:11434 |
Local Ollama server |
waycode.openai.baseUrl |
— | OpenAI-compatible endpoint |
Project memory
WayCode carries three kinds of memory into every request:
WAYCODE.md— a per-project context file you own (also read from.waycode.mdor.waycode/context.md). Put the stack, conventions, and build/test commands there; it's injected into every system prompt. RunWayCode: Edit Project Context Fileto scaffold it.- Workspace memory — pinned files, recorded decisions, and preferences, persisted per workspace.
- Conversation history — past threads, saved globally and reopenable from 🕘.
Development
npm install
npm run compile # tsc -p ./
npm run watch # rebuild on change
npm run typecheck # tsc --noEmit
npm test # node --test out/test/ (compiles first)
npm run lint
npx @vscode/vsce package # → waycode-<version>.vsix
Press F5 in VS Code to launch an Extension Development Host with WayCode loaded. CI type-checks, compiles, and tests on Node 18 and 20.
Layout
src/
├─ extension.ts activation + all commands
├─ config.ts settings & Secret Storage
├─ agent/
│ ├─ Agent.ts the plan → act → verify → fix loop
│ ├─ Orchestrator.ts communicator ⇄ coder pipeline
│ ├─ prompts.ts system prompts
│ ├─ routing.ts CHAT vs CODE classification
│ └─ history.ts context-window trimming
├─ providers/ Anthropic · OpenAI · Ollama · Claude CLI (one interface)
├─ tools/ file · search · command tools, diffs, path safety
├─ context/ project snapshot + WAYCODE.md
├─ memory/ workspace memory + conversation history
├─ ui/ chat webview + settings panel
└─ test/ node:test suite
Adding a provider means implementing AIProvider and registering it in ProviderFactory; adding a
tool means implementing Tool and listing it in ToolRegistry.default(). Nothing else changes.
בעברית
WayCode הוא סוכן קוד מבוסס AI שיושב בסרגל הצד של VS Code. כותבים לו בעברית מה צריך — והוא קורא את הפרויקט, מחפש בקוד, כותב ומתקן קבצים, מריץ בדיקות ולינטר, קורא את השגיאות ומתקן אותן. לפני כל שינוי מסוכן הוא מציג diff או את הפקודה המדויקת ומחכה לאישור שלך.
- עונה בעברית, והצ'אט מיושר לימין אוטומטית (הקוד נשאר משמאל לימין).
- עובד עם Claude, GPT, מודל מקומי דרך Ollama, או מנוי Claude Code שכבר יש לך — בשתי האפשרויות האחרונות בלי API key ובלי עלות פר-טוקן.
- במצב שני-סוכנים: בוט אחד חזק בשפה מדבר איתך (יכול לרוץ מקומית), ובוט אחר חזק בקוד עושה את העבודה — וההסבר שאתה מקבל בנוי מהפעולות שבאמת בוצעו, כך שאין "הכול מוכן ✅" מומצא.
- ארבעה מצבי אישור, כולל מצב תכנון לקריאה בלבד שלא נוגע בקבצים.
MIT © WayCode · Changelog