Code Lens shows reference counts above each export. Click to peek all usages. Exports with zero references stand out immediately.
Features
- Real-time diagnostics for dead-code issue types, updated via LSP without running a separate CLI process
- Code Lens with reference counts above each export (click to peek references)
- Hover information with export usage counts, unused status, and duplicate block locations
- Quick-fix code actions to remove unused exports or delete unused files
- Refactor actions to extract duplicates into shared functions
- Tree views in the sidebar with per-category icons, issue count badge, and welcome view
- Status bar with color-coded severity, rich tooltip breakdown, and command links
- Diagnostic documentation links: click any diagnostic code to open its docs page
- Related information: circular dependencies, duplicate exports, and code duplication diagnostics link to all related files
- Fix preview with a searchable Quick Pick for reviewing and navigating fixes
- JSON schema for
.fallowrc.jsonwith autocomplete and validation - Auto-download of the LSP binary
- Getting Started walkthrough on first install
Codebase intelligence surfaces
Beyond the real-time LSP diagnostics above, the extension surfaces the rest of fallow’s analysis, each as its own opt-in sidebar view or status-bar item:- Health view (sidebar): project health score and grade, top complexity findings, and hotspot / refactoring candidates, from a separate lazy run. Opt out with
fallow.health.enabled. - Security Candidates view (sidebar): local security candidates (
client-server-leak, the tainted-sink CWE catalogue), framed as unverified candidates to verify, never confirmed vulnerabilities. Opt in withfallow.security.enabled. - Runtime Coverage view (sidebar): hot paths and cleanup candidates (safe-to-delete / review-required) from a loaded coverage capture.
- Audit verdict (status bar): a pass / warn / fail signal for your current change set, mirroring
fallow audit. - License management: activate, view status, refresh, and deactivate a Fallow license without leaving the editor.
- Monorepo workspace scope (status bar): a picker to scope sidebar analysis (and the Health, Security, and Audit surfaces) to a single package, forwarding
--workspace.
Installation
1
Install the extension
Search for “fallow” in the VS Code extensions marketplace, or install from the command line:
2
Binary resolution
The extension finds binaries automatically. It checks the
fallow.lspPath setting first, then node_modules/.bin/ for a local devDependency (pnpm add -D fallow), then system PATH, or auto-downloads from GitHub releases.3
Getting Started walkthrough
On first install, a walkthrough opens automatically with four steps: Run Analysis, Explore Results, Fix Issues, and Configure Rules. Each step links directly to the relevant command. You can reopen it from the Command Palette at any time.
4
Start coding
Open any TypeScript or JavaScript project. Fallow activates automatically and starts analyzing. Diagnostics appear inline, and Code Lens annotations show above exports.
Status bar
The status bar shows the current issue count and duplication percentage. It updates in real time as the LSP server completes analysis via a customfallow/analysisComplete notification. No separate CLI process needed.
- Color-coded background: red when unresolved imports are present (errors), yellow when other issues exist (warnings), default when the project is clean
- Rich tooltip: hover to see a per-category breakdown of all issues (unused files, exports, dependencies, circular dependencies, clone groups, etc.)
- Command links in tooltip: Run Analysis, Auto-Fix, and Show Output are one click away
- Health score segment with the project grade (toggle with
fallow.health.statusBar) - Audit verdict for the current change set: pass / warn / fail, color-coded, with a gating-candidate count (toggle with
fallow.audit.statusBar.enabled) - License indicator showing the active license state (toggle with
fallow.license.showStatusBar) - Workspace scope picker showing the package analysis is scoped to in a monorepo (hidden on single-package projects)
Diagnostics
Every diagnostic includes a clickable diagnostic code (e.g.,unused-export, unresolved-import) that opens the corresponding documentation page at docs.fallow.tools.
Related information
Some diagnostics include related information that links to other files involved in the issue. Click a related location in the Problems panel to jump directly to it.- Circular dependencies: each file in the cycle chain is listed as a related location, so you can trace the full cycle
- Duplicate exports: links to the other files that export the same name
- Code duplication: links to all other instances of the duplicated block
Severity levels
Security candidate diagnostics are off by default and distinct from the Security Candidates sidebar view. They appear in the editor gutter only when you raise the
security-sink or security-client-server-leak rule to warn or error in your fallow config, framed as unverified candidates to verify (advisory, never a red error). The hover leads with the confidence signals and points to fallow security --file for the full trace; a quick-fix dismisses the candidate.
Tree views
The sidebar groups issues by type and duplicates by clone family. Each category uses a distinct icon for quick scanning:
A badge on the sidebar icon shows the total issue count at a glance. When no analysis has been run yet, a welcome view appears with a “Run Analysis” button.
Clicking any item in the tree opens the file at the exact line and column.
Additional views
The sidebar also hosts three opt-in views beyond unused code and duplicates:Fix preview
Fallow: Preview Fixes (Dry Run) opens a searchable Quick Pick listing each available fix with its type and file location. Select an item to navigate to it in the editor, or choose Apply all fixes at the bottom to apply everything at once. After applying fixes, the extension automatically saves modified files, restarts the LSP server, and re-runs analysis so diagnostics update immediately.Config autocomplete
.fallowrc.json files get autocomplete and validation powered by the published JSON schema. The extension registers this automatically, no extra setup needed.
Commands
Extension settings
Extension settings
Adopting fallow on a legacy codebase
Run Fallow: Set Baseline at HEAD from the Command Palette to keep existing issues hidden while flagging new ones. The command creates the local lightweightfallow-baseline tag at the current commit, writes fallow.changedSince to the workspace settings, and refreshes analysis.
It confirms before replacing another effective baseline setting, refuses multi-root workspaces, and never moves an existing tag or pushes to a remote.
To share the baseline with your team, push that tag explicitly and commit the generated .vscode/settings.json change:
fallow dead-code --changed-since fallow-baseline in CI to enforce the same contract on pull requests.
Shallow clone footgun.
actions/checkout@v4 defaults to fetch-depth: 1 and GitLab CI defaults to GIT_DEPTH: 50. If your baseline tag predates that fetch boundary, --changed-since and fallow.changedSince silently fall back to full scope (the LSP logs a warning to the Fallow output channel). Set fetch-depth: 0 on actions/checkout (or GIT_DEPTH: 0 in GitLab CI) when you use a long-lived baseline tag.Part of the three tracks
VS Code is one of three ways to use fallow:- Agents run
fallowfrom CLI or call MCP tools to verify their own output - You in VS Code see real-time diagnostics, review agent output, and spot issues as you code
- CI catches the rest, so nothing lands in main without passing fallow
See also
Agent integration
How AI agents use fallow via CLI and MCP.
CI integration
Add fallow to your CI pipeline.
Analysis areas
All issue types shown in real time by the extension.