Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Vestige — Change Risk from Git HistoryNew to Visual Studio Code? Get it now.
Vestige — Change Risk from Git History

Vestige — Change Risk from Git History

Nwatu Ifeanyichukwu Ernest

|
22 installs
| (0) | Free
Know what you're about to break. Reads your local git history to show which files change together, who actually knows the code you're editing, and what decisions already constrain it.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Vestige

Know what you're about to break. Vestige reads your git history and answers the questions that matter right before you change code: what else changes with this file, who actually knows it, and what decisions already constrain it.

It runs entirely on your local git history. No account, no sign-in, no telemetry, and nothing is computed until you ask for it.


What it's for

Most git tooling answers a spatial question — "who wrote each line of this file". That's already built into VS Code and IntelliJ, and GitLens does it for 52 million people. Vestige answers the questions those tools don't:

Files that change together

When you save a file, Vestige tells you which files git history says usually change with it:

auth-service.ts usually changes with this file — 11 shared commits (73%).

This is the feature to try first. Co-change analysis is well-established in research and shipped commercially, but there is essentially no in-editor implementation of it. It's a suggestion, not an alarm: at most three files, once per file per session, always with the shared-commit count so you can judge it yourself.

Vestige: Files That Change With This One · disable with vestige.coupledFileSuggestions

Who to ask

If you're about to change a file you have almost no history with, Vestige says so and names the person who does:

You've authored 3% of this file; Alice has 80%.

This is the one ownership signal with strong empirical support — the count of contributors with a small share of a file's history predicted defects better than any other metric Microsoft measured across Windows Vista and 7. It's framed as a review suggestion, never as a score about a person.

Vestige: Find Experts for This File

History of a selection

Select a few lines and get the history of those lines — not the whole file:

Ctrl+Shift+L / Cmd+Shift+L

Blame tells you who touched a line last. This tells you how the block got to look the way it does, using git log -L.

CODEOWNERS that tells the truth

Your CODEOWNERS file is hand-maintained and nothing validates it. GitHub silently skips malformed lines, stops loading the file entirely past 3MB, and never checks whether an owner has ever committed or has since left. Vestige compares it against real history:

Vestige: Audit CODEOWNERS Against History

Recovering deleted code

Browse files deleted from the repository and restore them. IntelliJ's Local History covers the last five days; this covers anything git remembers.

Vestige: Show Code Graveyard

Decisions in the gutter

If you keep architectural decision records, Vestige links them to the code they constrain and surfaces them where the change is being made.


Also included

Feature What it does
File timeline Commit history with coupling, epochs, and bus factor for one file
Code Historian Ask a question about a file; answers are shown with the commits they're based on
Zombie detection Code that hasn't moved while the file around it did
Documentation drift Docs whose sibling code has moved on without them
Hot potato files Unusually high author turnover
Debt ranking A relative churn × size × age ordering, to decide what to open first
Architecture map Emergent modules from co-change clustering across the repo
Time travel Scrub a file through its revisions

Honest limits

Worth knowing before you rely on any number here:

  • The debt score is a ranking, not a measurement. It orders files within one repository. It is not comparable across repositories and is never shown as money or hours — converting an arbitrary score into a dollar figure produces a confident number with no basis behind it.
  • Co-change is a suggestion. Published precision is around 0.26–0.30, but the top-three hit rate is 64–70% and the false-alarm rate is about 2%. Useful for "also look here", not for gating anything. It degrades on fast-growing codebases.
  • Bus factor is deliberately de-emphasised. Published estimators have a mean error above 5 on a small-integer quantity, and roughly 44% of what people know lives in channels git cannot see. Vestige reports minor-contributor risk instead, which has real support.
  • Blame is poisoned by reformatting. A whitespace commit or a squash-merge can make history attribute code to whoever ran the formatter. Treat authorship near such commits with suspicion.
  • AI answers are shown with their sources. The specific failure of AI code comprehension is inventing a plausible, wrong reason code exists. Every answer is displayed next to the commits and decisions it was drawn from so you can check it.

There is no leaderboard and no per-person productivity metric, and there won't be. Vestige reports facts about the codebase, not facts about people.


Setup

npm install
npm run compile
# Press F5 in VS Code to launch the Extension Development Host

AI features (optional)

Everything above except the Historian, Archaeologist and Resurrection Mode works without AI.

If you have GitHub Copilot, AI features use it automatically — no key needed. Otherwise run Vestige: Set OpenAI API Key, which stores the key in VS Code Secret Storage rather than settings.

To turn AI off completely, set vestige.disableAI. That makes every AI path unreachable rather than merely idle, for environments where an installed AI component is itself the problem.


Configuration

{
  "vestige.coupledFileSuggestions": true,
  "vestige.coupledFileThreshold": 50,
  "vestige.codeLensMode": "risk-only",
  "vestige.disableAI": false,
  "vestige.fossilThreshold": 365,
  "vestige.churnThreshold": 10,
  "vestige.zombieAgeDays": 365,
  "vestige.driftDays": 30,
  "vestige.hotPotatoAuthors": 5,
  "vestige.collabWebhookUrl": ""
}

codeLensMode defaults to risk-only: at most one annotation per function, and only where history indicates something — a recorded decision, a churn hotspot, long stagnation, or concentrated ownership. Set detailed for author and age above every function, or off for none.

Keybindings

Shortcut Action
Ctrl/Cmd+Shift+L History of the selected lines
Ctrl/Cmd+Shift+H Ask the Code Historian

Development

npm run test:unit   # unit tests
npm run lint        # eslint

The intellij/ directory contains the IntelliJ IDEA plugin (Kotlin + JGit). See SETUP.md for build instructions — note it must be verified with a clean build, as incremental compilation has previously masked a file that never compiled.


License

See LICENSE.md.

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