Blazed
An AI coding agent for VS Code that tells you where it is.
Most agents leave you staring at a spinner. Blazed keeps a live task panel beside the editor: the current phase, which steps are done, what it is working on, what is left, anything that is blocked, time elapsed, and an estimate of time remaining with a confidence level.
How progress works
Blazed gives the model one extra tool, update_plan, and asks it to use it the way a good colleague reports status:
- Before starting multi-step work it posts a plan: 3–8 concrete steps, the current phase, and an estimated remaining time range with a confidence.
- It posts again whenever a step starts or finishes, a blocker appears or clears, it discovers new work, or its estimate changes.
- A step counts as done only with evidence (test output, a clean build, a command that ran). The evidence is shown under the step. Code that was written but not verified stays in progress.
- When it is stuck (a failing test it cannot fix, missing access, a decision only you can make) it marks the step blocked and asks you.
The extension adds what the model cannot see:
- Elapsed time, measured by the extension, not estimated by the model.
- A pace-based projection once at least one step is done: elapsed time per finished step × steps left, shown as a deliberately wide band next to the model's own estimate. If the two disagree, you know the estimate is soft.
- Per-step durations, so you can see which steps are slow.
- A status bar item (
⚡ 2/5 · 8m · ~5–15m left) so you can watch progress from any editor tab. It turns orange when the agent is waiting for your approval.
Completion and time are tracked separately on purpose: four of five steps done does not mean 80% of the time has passed.
Setup
Needs VS Code 1.96 or newer. On 1.106+ the panel lives in the secondary (right) side bar; on older versions it appears in the activity bar on the left.
- Open a folder in VS Code (Blazed works inside a workspace).
- Open the ⚡ Blazed tab in the secondary side bar on the right (the same bar that hosts Claude Code and Codex chats), or run
Blazed: Open Agent Panel. You can drag the tab to the left side bar or the bottom panel if you prefer.
- Connect a model:
- Anthropic API: click Set Anthropic API key (or run
Blazed: Set Anthropic API Key). The key is kept in VS Code's secret storage. ANTHROPIC_API_KEY in the environment also works.
- Amazon Bedrock: click Use AWS Bedrock. Blazed asks for the region and how to authenticate: an access key + secret key (+ optional session token) kept in VS Code secret storage, a named AWS profile, or the default credential chain (environment variables,
~/.aws/credentials, SSO, instance role). Blazed: Set AWS Credentials (Bedrock) enters keys directly (also linked from the Bedrock: Auth setting); Blazed: Clear AWS Credentials removes them.
- Describe a task and press Enter.
To switch provider or credentials later, click the connection line in the panel footer, use the plug icon in the panel title, or run Blazed: Choose Model Provider.
Choosing a model and effort: the dropdowns next to the Send button pick the model (current Claude models for the active provider, refreshed live from the Anthropic Models API when a key is set, plus Custom model id…) and the reasoning effort. The effort dropdown only appears for models that support it, and only lists the levels that model accepts. Changing the model starts a fresh session on the next message; changing effort applies from the next model turn, even mid-task.
What the agent can do
| Tool |
Approval |
| Read, list and search files in the workspace |
never asked |
| Create or edit files |
asked in Ask mode |
| Run a shell command from the workspace root |
asked in Ask and Auto-edit modes, unless a rule allows it |
Approval cards appear in the panel with an Open diff button for file changes. A denied request is passed back to the model as a decision, not an error, so it adapts instead of retrying.
Permissions
The permission mode dropdown next to the Send button (also blazed.permissionMode):
- Ask before edits & commands — the default.
- Auto-edit, ask for commands — file changes apply immediately; commands still ask.
- Auto: run everything — no prompts. Use it in a workspace you can roll back.
On a command approval, Always allow… saves a rule so you are not asked again: the exact command, npm test *, npm *, a custom pattern, or * for every command. Rules live in blazed.allowedCommands (workspace settings when a folder is open, so they are per project; Blazed: Edit Allowed Commands opens them). * matches anything, and a trailing * also matches the bare command. A chained command (a && b, a; b, a | b) runs without asking only if every part matches a rule, so git * never covers git status && rm -rf build. On a file approval, Always allow edits switches to Auto-edit mode. Mode changes and new rules apply immediately, even mid-task.
Paths are confined to the workspace folder. Commands run in PowerShell on Windows and your $SHELL elsewhere, and are killed after blazed.commandTimeoutSeconds.
Images, PDFs and files
Attach files to a message with the Attach button (a native file picker), by pasting an image or a file into the message box, or by dragging files onto the panel. Supported: images (PNG, JPEG, GIF, WebP, up to 5 MB each), PDFs (up to 30 MB) and text files such as code, Markdown, JSON or CSV (up to 1 MB); 20 files per message. They reach the model as real image and document blocks, placed before your text, so it can read a screenshot, a mockup or a spec directly. Other document formats (Word, Excel) are not supported by the API — export them to PDF first.
The agent can also look at files in the workspace itself: read_file on a .png, .jpg, .gif, .webp or .pdf returns the image or document rather than text.
Attached files are stored with the session (as part of the model conversation), so sessions with many images are larger on disk.
Sessions
Every session is saved automatically as you work (the transcript, the plan, the cost breakdown and the model's conversation), per workspace, under VS Code's global storage for the extension. Reloading the window restores the latest session for the workspace.
- New (the
+ in the panel title, the New link above the status card, or Blazed: New Session) archives the current session and starts an empty one.
- Sessions (the Sessions link above the status card, the history icon in the panel title, or
Blazed: Sessions…) shows this workspace's sessions inside the panel with date, turns, cost and status. Click one to open it in place — the model gets the full earlier conversation back — or press Delete twice to remove it. Back returns to the current session.
A session's title is the first line of its first message.
Session cost
The footer shows an estimated cost for the session (≈ $0.042), also in the status bar and in the status card once a task finishes. Hover it for the breakdown: tokens in, out, cache reads and cache writes, priced per model at Anthropic's list prices (October 2026). Every turn is priced at the rate of the model that actually served it, so switching models mid-session, or a server-side fallback, is accounted for. New Task resets it.
It is an estimate, not a bill: Amazon Bedrock and other partners set their own prices. Correct or add a model's prices with blazed.pricingOverrides; a model with no price shows as +?.
Settings
| Setting |
Default |
What it does |
blazed.provider |
anthropic |
anthropic or bedrock |
blazed.model |
claude-opus-5-5 |
Model for the Anthropic API |
blazed.bedrock.model |
anthropic.claude-opus-5-5 |
Model for Bedrock |
blazed.bedrock.region |
us-east-1 |
AWS region |
blazed.bedrock.profile |
(empty) |
AWS named profile |
blazed.effort |
high |
How hard the model thinks (low … max) |
blazed.maxTokens |
64000 |
Output tokens per model turn (thinking included) |
blazed.maxTurns |
80 |
Tool-call rounds per task before Blazed pauses and asks you |
blazed.permissionMode |
ask |
ask, auto-edit or auto |
blazed.allowedCommands |
[] |
Command patterns that run without asking |
blazed.commandTimeoutSeconds |
120 |
Kill a command after this long |
blazed.pricingOverrides |
{} |
USD per 1M tokens per model id, for the cost estimate |
Changing the provider or model starts a fresh model conversation on the next message (the transcript stays). Use New Session (the + in the panel title) to archive the session and start clean.
On the Anthropic API, Blazed opts into server-side refusal fallbacks (fallbacks: "default"), so a safety-classifier false positive is rerouted instead of ending the task. Bedrock does not offer this.
Development
npm install
npm run compile # bundle to dist/extension.js
npm test # unit tests for the plan / estimate logic
npm run watch # rebuild on change
npm run vsix # production build + .vsix package
Press F5 in VS Code to launch an Extension Development Host with Blazed loaded.
Layout:
src/agent/Agent.ts – the streaming tool loop (one model turn → run tools → repeat)
src/agent/tools.ts – tool definitions and their implementations
src/agent/plan.ts – plan state, step timings and the pace estimate (pure, unit-tested)
src/agent/systemPrompt.ts – the progress-reporting contract the model follows
src/panel/BlazedViewProvider.ts – the webview, approvals, diff preview and status bar
media/ – the panel's HTML, CSS and script
Known limits (v0.1)
- One workspace folder: multi-root workspaces use the first folder.
- No server-side context compaction yet; very long sessions should be split with New Task.
- The pace projection assumes steps are roughly similar in size. It is a sanity check on the model's estimate, not a promise.