Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Claude Mission ControlNew to Visual Studio Code? Get it now.
Claude Mission Control

Claude Mission Control

Suraj Kumavat

|
10 installs
| (0) | Free
| Sponsor
Unofficial companion for Claude Code. Review, accept & undo file changes with its own tracking (no git needed), see what your work would cost at API rates, watch your plan limits, put subagents on a cheaper model, get pinged when Claude needs you, and monitor background agents & workflows.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Claude Mission Control

Mission control for Claude Code, right inside your editor.

Claude edits fast. You end up with changes you never read, in files you never opened.

Mission Control puts a sidebar next to it. Review, accept and undo every change, without git. Watch your 5-hour and weekly limits. Put subagents on a cheaper model. Read the plans Claude wrote, and keep an eye on background agents.

Local by default: no servers, no telemetry, one optional API call. Details ↓

The Changes tab: four changed files with per-file line counts, one marked NEW, with Accept all and Undo all in the header — and the bottom dock with the Subagents card, the plan usage bars and the notify switch.

⚠️ Unofficial. This is a community extension and is not affiliated with, endorsed by, or sponsored by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic.


Why

Read every change Diff, accept or undo each source, config and project file Claude touched. Yours and your scripts' edits too. Any folder, git repo or not.
Undo without git Restores the last version you accepted. New files are deleted, deleted files come back.
See the wall coming Live 5-hour and weekly usage, so you can throttle before you get cut off.
Cut token burn One click puts every subagent on Sonnet or Haiku while you stay on Opus. Agent-heavy work is where the tokens actually go.
See what it's worth What this project's work would have cost at API list price — computed locally, so you can see what a flat plan is actually covering.
Never miss a prompt An optional native ping when Claude finishes, or when it's stuck waiting on a question or a plan.

Features

🗂 Changes

Mission Control's own change tracking — no git involved. Like Copilot's edit review: the first open snapshots your workspace as the baseline; from then on every change to a recognized developer file (by you, Claude, or a script) shows up with +/- stats. Click a row for a diff vs the last accepted version, Accept to approve it (the baseline moves forward), Undo to restore the last accepted version (new files are deleted, deleted files come back). Accept all and Undo all sit in the header. Works in any folder — git repo or not.

Signal only, by design. Tracking is allowlist-based: ~140 source, markup, config and project file extensions plus ~65 exact names (Makefile, Podfile, Dockerfile, .gitignore, …). Everything else is deliberately invisible, so build output and IDE junk never pollute the list — node_modules, dist, build, Pods, DerivedData, vendor, any dot-folder, *.xcresult / *.xcarchive bundles, media and binaries, and .DS_Store-style OS files. Brand-new files over 1 MB aren't picked up either. Working in a format Mission Control doesn't know? Add it with missionControl.tracking.alsoTrack — an extension (.xyz) or an exact name (Procfile) — and it applies live, no reload. (Known binary/media types stay out regardless.)

Moved a folder and everything looks NEW? Mission Control matches moved files by content automatically, and if a baseline really has gone stale it offers a one-click Re-baseline — also available any time from the Command Palette. Re-baselining never touches your files, only Mission Control's record of what you've accepted.

Mission Control tracks the first folder of your workspace.

How this differs from Claude Code's own review. Claude Code offers Accept / Reject per edit before it lands, and Rewind per turn — and its own dialog says "Rewinding does not affect files edited manually or via bash." Mission Control's Changes tab is cumulative: every on-disk change by anyone, per file, since the state you last accepted, with or without git.

📋 Plans

Browse the plans Claude produced in plan mode — expand inline as rendered markdown, or hit ↗ to open a plan in a styled, read-only plan view tab (like Claude Code's own plan review). Scope it to this project or to every saved plan with missionControl.plans.scope.

Plans are read from Claude Code's global folder and, when a project sets plansDirectory, from the project's own folder too. A plan a subagent wrote is listed with a subagent tag; the workshop and rejected-ultraplan drafts Claude Code leaves beside a plan are not plans and are not listed. Claude Code deletes old plans in its periodic cleanup, and the tab says so when the folder is gone rather than looking empty for no reason. Claude Code itself opens only the live plan; this is the archive.

The Plans tab: plans Claude wrote in plan mode, one expanded inline as rendered markdown.

📊 Plan usage

At the top of the panel, on every tab: live 5-hour and weekly limits — including any per-model weekly limit your plan has, such as Weekly Fable — with percentage, reset countdown and last-checked time, read using Claude Code's own local credential — shown next to what the work would have cost, and flagged when a reading's reset time has already passed. Optional and fully disableable — this is the only part of Mission Control that touches the network.

⚙️ Subagents

The control that saves money. Four buttons under Subagents — Inherit · Opus · Sonnet · Haiku — set the model your subagents, agent teams and workflow agents run on while you stay on your main model. Agent-heavy work is where tokens actually go, so this is the single biggest saving available, and it's one click instead of hand-editing settings.

  • Writes env.CLAUDE_CODE_SUBAGENT_MODEL in ~/.claude/settings.json. Takes effect on the next subagent spawned; no restart.
  • Since Claude Code 2.1.251 that key is a default, not an override: an agent whose definition names a model, or a spawn that asks for one, keeps its own. The override (CLAUDE_CODE_SUBAGENT_MODEL_FORCE) is no longer offered — it takes the choice away from every agent and workflow, which is rarely wanted. If it is already on, set by hand or by an older version, the panel shows it with a plain way to turn it off.
  • Inherit switches both keys off rather than deleting them — inherit and 0 — because Claude Code re-applies a changed settings file to chats that are already open, but never unsets a key that disappeared from it. Deleting would look right in the file and leave every open chat on the old model until it was restarted.
  • Effort is shown, not set: Claude Code has no separate effort setting for subagents — they run at the main chat's effort unless an agent definition sets its own. The Tasks tab shows the model and effort each agent actually ran on, which is also how you check the button is being honoured.
  • Every write is guarded: if settings.json isn't valid JSON right now, Mission Control changes nothing and tells you, instead of clobbering your hooks, permissions and env.

Nothing here is about the main agent. Claude Code's own composer shows the main model and effort, and that is where you change them (/model, /effort).

💸 What it would have cost

Mission Control prices this project's work at Anthropic's published API rates — today and over the last 7 days, and per agent in the Tasks tab. On a subscription no money moved, so it is shown as a comparison and never as a bill: the useful reading is what a flat plan is covering.

Every figure is computed on your machine from the token counts Claude Code already writes to its own logs — nothing is sent anywhere to produce it. Each response is priced by the rates that apply to that response (fast mode's premium, a model's own cache-read rate), sub-agent and workflow transcripts are counted as well as the main session, and a response split across several log records is charged once rather than three times. Where a model has no published rate — a local model behind a custom backend, or a model released after this version — its tokens are counted but its dollars are not, and the card says so: the last request shows a dash rather than an older priced one, and every figure missing it says it is incomplete.

Those figures survive a tidy-up. Claude Code's logs get cleaned — by its own retention sweep, by a cleanup script, or by hand — and until 1.10.0 the spend they recorded went with them, which on this machine was 37% of a week. Mission Control keeps its own small record of what each piece of work cost, outside those logs. It holds amounts and token counts only, never any part of a conversation, and runs to a few megabytes a year; missionControl.storage.recordSpend turns it off. It cannot recover what was lost before it existed, and it marks a figure as "at least this much" rather than exact whenever there is a stretch no panel was open for.

It can read a little higher than Claude Code's own /cost, on purpose: a response that was retried on another model is charged for every call it made, where /cost counts only the last one. Web searches are charged per search, as the price list does. The rates were last checked against the live price list and against Claude Code 2.1.280 on 23 September 2026, when Opus 5.5 was added (docs/AUDIT-pricing-2026-09-14.md has the full audit).

🧹 Storage

What Claude Code is keeping on this Mac, and what can go. Sizes in plain words, a sentence saying what each thing is, and beside it the list of everything that is never touched — your chats, anything a running chat owns, your memory and skills and settings, and the record of what your work cost.

Cleaning moves things to a trash rather than deleting them; anything cleaned can be put back for seven days, or you can empty it yourself. A chat is never removed by age — only one you archived in the session list, and if that list can't be read, none are considered at all. An archived chat leaves with its own notes, and the panel says what that costs first: you can't reopen it, and a plan saved from it drops off that project's list. What it cost stays. Whether a chat is running is read from the running process, never from how quiet its files look, so a long tool call or a background loop is never mistaken for finished. missionControl.storage.enabled hides the tab.

🤖 Background tasks

A live view of background work with accurate statuses (running / completed / stopped), read from Claude Code's own task lifecycle records. Active and Cleared are separate panes, so clearing something files it away rather than destroying it — anything cleared can be put back. Workflow runs group their agents under one expandable card with a progress bar over them: tokens, cost, tool calls, and an inline transcript per agent. A running agent shows the tool it is in right now and how long it has been going, and opening a transcript pins the agent's answer at the top instead of leaving it behind several clicks of "Load more".

The Tasks tab: a workflow run expanded to show its three agents with status dots, token counts and the tools each one used.

🔔 Ping me when Claude needs you

Step away while Claude works. When its turn ends — or when it's blocked on a question or a plan awaiting approval — Mission Control fires a native OS notification with sound that reaches you even over a fullscreen app. It only fires when that window isn't focused, and each window checks its own focus, so a finish in a background window pings you while you keep working in another. Every chat in the folder is followed separately, so a busy session can't swallow another one's ping, and two windows open on the same project won't both announce the same turn.

On macOS (Apple Silicon) and Windows, clicking the notification focuses the exact VS Code window that workspace is open in — macOS uses a bundled signed + notarized helper so the click still works on current macOS. Intel Macs fall back to a non-clickable banner; Linux uses notify-send (not clickable), with an in-app notification if notify-send is missing.

Off by default — flip the bell switch in the controls row at the top of the panel, or set missionControl.notifyOnComplete.

It stays quiet for the chat you're sitting in: if the window is focused and you've touched the keyboard or mouse in the last few minutes, an answer you're already reading doesn't ping. Step away and it does, however long the run — that's the whole reason to be told. To be pinged for every completion regardless, turn off missionControl.silenceWhenWatching.

Commands

All from the Command Palette (⇧⌘P / Ctrl+Shift+P), prefixed Claude Mission Control:

Command What it does
Accept Current State of Workspace Makes everything currently on disk the accepted state — the fix after a big move or reorg makes every file look NEW. Your files are never modified, only Mission Control's record.
Undo All Tracked Changes Restores every tracked file to its last accepted version and deletes files that are new since then. Asks for confirmation first.
Refresh Force a re-read of changes, plans, tasks and usage.

Your own model and effort are Claude Code's business: change them in its composer, or with /model and /effort.

Privacy — what Mission Control touches

Everything happens on your machine. Mission Control runs no servers, collects no telemetry or analytics, and makes exactly one network request — described at the end.

What it reads

  • Your local Claude Code data in ~/.claude — sessions, plans, settings.json, task records.
  • Background-task output from Claude Code's own temp dir: /tmp/claude-<uid> (macOS/Linux) or \tmp\claude-0 on the current drive (Windows — Claude Code has no Windows branch here, so it builds the same POSIX-shaped path).
  • For the Changes tab, files in the folder you have open — but only the recognized developer files described above. .env files, keystores, certificates, binaries, media, build output, node_modules and dot-directories are never read.
  • On macOS, the Plan usage card reads Claude Code's OAuth token from your login keychain (item Claude Code-credentials) — that's where Claude Code keeps it instead of ~/.claude/.credentials.json. Turn the usage card off and this read never happens.

What it writes

  • To make Undo possible without git, Mission Control keeps its own copy of the last accepted version of every tracked file under ~/.claude/.mission-control/tracking/<workspace>/. These copies never leave your disk — delete that folder any time to wipe them, and baselines for folders that no longer exist are pruned automatically after 30 days. Note the copy is of the file as-is: if a tracked source or config file contains a credential, so does the copy. Real .env files are never copied (.env.example / .sample / .template are).
  • Your workspace files are written only when you click Undo (or run Undo All Tracked Changes) — that's what Undo is. Accept and Re-baseline move Mission Control's own baseline and never touch your files.
  • ~/.claude/settings.json — only the two subagent env keys (CLAUDE_CODE_SUBAGENT_MODEL and CLAUDE_CODE_SUBAGENT_MODEL_FORCE), merged into the file, and only when you click. Every other key is left exactly as it was. If that file isn't valid JSON, Mission Control refuses to write at all.
  • With missionControl.notifyOnComplete on, macOS: the bundled notification helper is copied to ~/.claude/.mission-control/bin/ (and de-quarantined) so clickable notifications work. Notifications are also the only reason Mission Control runs OS commands: alerter / osascript / open on macOS, powershell.exe on Windows, notify-send on Linux.
  • Small bookkeeping files in ~/.claude/.mission-control/, none of them sensitive: usage-cache.json (your last usage reading, so the card isn't blank on open), dismissed-tasks.json (which task cards you cleared), notify-claims/*.claim (which window announced which turn, so two windows on one project don't both ping), and inside tracking/ a .last-prune marker plus one .owner file per workspace. Older builds also left a usage-history.json there; nothing reads it any more and it is safe to delete.

The one network call: the Plan usage card sends Claude Code's own local OAuth token to Anthropic's usage endpoint (api.anthropic.com) to read your 5-hour and weekly limits. Nothing else is sent anywhere. Set "missionControl.usage.enabled": false and Mission Control is fully offline.

Don't take my word for any of it. The source is on GitHub, so you can read exactly what it does before you trust it with your ~/.claude. It isn't open source, and the licence says so, but nothing about it is hidden. Questions still get answered: supportcutex@gmail.com.

Requirements

  • VS Code 1.89+
  • Claude Code installed and used at least once (so ~/.claude exists).
  • A local workspace — Mission Control needs real filesystem access, so remote virtual workspaces aren't supported.

Settings

Setting Default Description
missionControl.usage.enabled true Show the live Plan Usage card (the only network call). Its reading also tells the cost card where the plan's week begins; without one, the card shows plain 7-day figures.
missionControl.usage.refreshSeconds 60 Min seconds between usage requests (≥30).
missionControl.backgroundTasks.enabled true Show the Background Tasks tab.
missionControl.notifyOnComplete false Native OS notification (with sound) when Claude finishes or needs you. See 🔔 above.
missionControl.storage.enabled true Show the Storage tab.
missionControl.storage.recordSpend true Keep a small record of what each piece of work cost, outside Claude Code's logs, so cleaning them never lowers a figure. Amounts and token counts only.
missionControl.silenceWhenWatching true Stay quiet when the chat that just finished is the one you're sitting in. If the window has gone untouched for a few minutes it still pings — you stepped away.
missionControl.plans.scope project project (plans made in this workspace) or all.
missionControl.tracking.alsoTrack [] Extra file types for the Changes tab beyond the built-in developer-file list — an extension (.xyz) or an exact name (Procfile). Applies live, no reload.
missionControl.support.url "" Optional https:// URL for the Buy me a coffee button. Blank uses the built-in link; a value that isn't https:// hides the button.

Support

Mission Control is free and unofficial. If it saves you time, there's a Buy me a coffee cup in the panel's controls row, visible on every tab, which opens my GitHub Sponsors page. Entirely optional, and there's no tracking either way.

Questions or a bug? Email supportcutex@gmail.com (also linked inside the panel's controls row), or open an issue on GitHub.

Built by Suraj Kumavat. @levelupwithsk on Instagram.

License

Proprietary © Suraj Kumavat. Free to install and use. The source is published so you can read it, but publishing it doesn't make it open source: you may view, clone, fork and modify it for yourself, not redistribute or sell it. Full terms in LICENSE, which also ships with the extension as LICENSE.txt. Bundled third-party components keep their own licences, listed in THIRD-PARTY-LICENSES.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft