Fuse
Reference

Commands

The Fuse commands, what each one does, and the options they accept.

Fuse commands build and query a persistent code index, verify edits, run covering tests, and host the MCP server. This page documents the current public CLI. Benchmark-only commands are omitted.

This page is for engineers choosing a command and for maintainers who need the exact dispatch behavior.

Purpose and scope

The index lives in .fuse/fuse.db inside a Git repository. Run fuse index [path] before one-shot CLI read commands. Every MCP tool except fuse_reduce resolves a Git repository identity; indexed reads open a validated warm index and start a syntax job on first use. Outside Git, workspace-scoped MCP tools return workspace_identity_unresolved: without starting a daemon or writing an index. Running fuse with no command prints connection and workflow guidance.

Operational error prefixes

CLI commands that open the store (fuse find, fuse index, fuse diagnostics) mirror the MCP prefixes on stderr, set exit code 1, and do not print a stack trace for expected failures:

PrefixMeaning
index_busy:Index database locked or busy
index_not_built:No index; run fuse index first
workspace_not_found:Workspace directory does not exist
workspace_identity_unresolved:Workspace-scoped MCP path is not inside a Git repository; use native file tools or fuse_reduce
validation_error:Invalid or incomplete arguments
internal_error:Unexpected failure

Summary

CommandDoesReads indexWrites index
fuse index [path]Start or join the repository syntax index jobn/ayes
fuse index status [path]Show index job state, counts, and storagenono
fuse index cancel [path]Request cancellation of the repository index jobnono
fuse index clean [path] --yesRemove only documented Fuse-derived index filesnoyes
fuse warm [path]Warm the index now (syntax-first build) so the next read is fast; a warm store is a no-opn/ayes
fuse warm --service install|uninstall|statusManage the opt-in always-on warm service (never installed by fuse mcp install)n/an/a
fuse map [path]Print a workspace map (symbols, routes, counts)yesno
fuse context [path]Plan and emit context for seeds (source bodies)yesno
fuse review [path]Review a change, or emit a handoff packetyesno
fuse impact <symbol>Compute symbol impact or a package upgrade break setyesno
fuse test <symbol>Run the covering tests for a symbolyesno
fuse find <query> --kind <kind>Find an exact match, resolve wiring, inspect graph facts, or rank task candidatesyesno
fuse diagnostics [path]Report index state (fast read-only status)yesno
fuse doctor [path]Diagnose the semantic load tier and per-project downgrade reasonsnono
fuse up [path]Report the environment-remediation plan (remedies per failure, workable subset); --apply applies the install-free NU1507 overlay and re-attempts the loadnono
fuse reduceCompact a known set of files or contentnono
fuse capture [path]Create a portable build-capture bundlenono
fuse verify [path] --ci-parityReport or run locally reproducible CI stepsnono
fuse initWrite a configuration filenono
fuse mcp installWrite MCP client registration and managed guidance for launching fuse mcp serve; --no-rules skips guidance and --with-hooks writes Claude hooksnono
fuse mcp doctorInspect MCP registration, managed guidance, daemon reachability, and index job statenono
fuse mcp serveRun the MCP servern/afirst-use
fuse hostRun the long-lived host servicen/ayes
fuse updateUpdate the global Fuse tool after stopping a narrow peer setnono

fuse update

Update the installed Fuse global tool. A running global tool locks its own files on Windows, so fuse update stops a narrow set of Fuse peers, then launches a detached script that waits for the current process to exit before running dotnet tool update --global Fuse.

By default it stops only peers in the updating process child lineage and same-install fuse host processes that hold the install mutex. It does not stop unrelated fuse mcp serve sessions in other repositories. Add --force-kill-peers to restore the pre-4.2 behavior that stopped every Fuse process on the machine before updating.

fuse update
fuse update --to-version 4.3.0
fuse update --force-kill-peers

Accepts --to-version (pin the NuGet version) and --force-kill-peers (stop every Fuse peer before updating). Reload your editor or MCP client afterward so it re-handshakes with the new tool surface.

fuse index

Build or refresh the persistent index for a workspace. A path inside Git resolves to the repository root. The default job extracts syntax only and does not select a solution or solution filter. Use --semantic to continue through compiler analysis after syntax is ready; this requires one unambiguous workspace target. Matching requests join one daemon-owned job, so a second fuse index reports the same progress instead of contending for SQLite.

When output is redirected, Fuse emits progress on phase changes, each ten-percent boundary, or every five seconds. --json uses the same cadence and writes named state and phase values in each JSON Lines snapshot.

fuse index ./src
fuse index . --semantic
fuse index . --force
fuse index . --from-capture ./fuse-capture
fuse index status . --json
fuse index cancel .
fuse index clean . --yes

Use --json with start, status, or cancel for machine-readable job snapshots. Start writes JSON Lines snapshots while the job runs. A normal terminal view prints the current phase, completed file count, percent when known, and an ETA after five units in one phase. Before a stage reports its total, the terminal shows an ASCII spinner such as Phase 1/3 [|] discovering source files without a made-up percentage. The first Ctrl+C requests cancellation and waits up to five seconds before returning exit code 130. A second Ctrl+C exits the CLI without stopping the daemon.

fuse index clean cancels an active job, waits for its owned store to close, and removes only .fuse/fuse.db, its SQLite sidecars, obsolete fuse-cache.db sidecars, and r60-semantics.json. It never removes fuse.json, .fuseignore, or capture bundles. Interactive terminals display the exact targets and ask for confirmation; redirected input requires --yes.

fuse map

Print a map of the indexed workspace: symbols, routes, and counts.

fuse map ./src --detail symbols

fuse find

Query the index without returning source bodies. The kind selects one mental act:

fuse find IOrderService --kind service --path ./src
fuse find CreateOrderCommand --kind request --path ./src
fuse find "POST /api/orders/{id}" --kind route --path ./src
fuse find Orders --kind config --path ./src
fuse find OrderService --kind signatures --path ./src
fuse find OrderService --kind neighbors --path ./src
fuse find "billing endpoint" --kind task --path ./src --strict

Use symbol, path, text, or all for exact index lookup. Use service, request, route, or config to follow typed wiring. signatures returns declarations and neighbors returns callers and implementers. task ranks candidate files for an open-ended task; --changed-since, --max-candidates, --strict, and --expand apply to task localization.

fuse context

Plan and emit context for a set of seeds, with source bodies at mixed render tiers, a semantic manifest, and per-file provenance.

fuse context ./src --seed IOrderService --max-tokens 25000 --format xml

Accepts --seed (symbol), --route, --depth, --max-tokens, --format (xml, markdown, json), and --plan-only.

fuse review

Review the semantic impact of a change since a git base ref: the changed files, the blast radius, and the packed context.

fuse review ./src --changed-since origin/main --max-tokens 25000

Accepts --changed-since, --max-tokens, --include-tests, --format, --plan-only, --handoff, and --check-session. With --handoff it prints a paste-ready PR packet (changed files, public API delta, compiler-gate status, residual risk) instead of the review context, and refuses while the --check-session has unresolved introduced errors.

fuse impact

Blast radius for a symbol before you edit it: callers, implementers, consumers, and referencing types from the persisted graph.

fuse impact OrderService --path ./src
fuse impact --package System.Text.Json --from-version 4.7.2 --to-version 8.0.0

Accepts a symbol argument, --path, --limit, and the package-upgrade trio --package, --from-version, --to-version (which diffs two cached NuGet package versions' public API instead of a symbol's graph blast radius).

fuse check, fuse gate

Ambient verification (see Verify every edit automatically). fuse check --delta prints the diagnostics the session's edits introduced or resolved since its baseline; fuse gate exits nonzero while the session has introduced unresolved errors. Both read the delta from the running host over its pipe and never run a build; with no host serving the workspace they exit 0 silently.

fuse verify --ci-parity

Rehearse what CI will run (see Rehearse CI before you push). fuse verify --ci-parity reads the repository's GitHub Actions workflows, prints the dotnet command sequence they run in CI order, and names the steps that cannot be rehearsed locally (a step needing a secret, a package push) so nothing is silently skipped. Add --run to execute the rehearsable steps locally through the same executor build-grade verification uses.

fuse check ./src --delta --fast
fuse gate ./src

fuse check accepts --delta, --session (default hook), and --fast; fuse gate accepts --session. Wire them automatically with fuse mcp install --with-hooks.

fuse test

Run the covering tests for a symbol (the tests that reach it via persisted tests edges) at build grade, scoped by filter. Fuse groups the selected tests by owning project, including linked test source files, and runs each project filter in sequence. Run fuse index first.

fuse test OrderService --path ./src

Accepts --path and --limit (maximum covering test types). Reports per-test verdicts with the grade; selection-only when no tests edge reaches the symbol.

fuse diagnostics

Report the index state: schema version, mode, status, record counts, index_state, and the store location. This command is deliberately read-only: when .fuse/fuse.db is absent it reports not_indexed without creating the database. MCP fuse_workspace action=status likewise reports the retained store and active job without starting a build.

fuse diagnostics ./src

fuse doctor

Diagnose the semantic load and report the achieved tier and the concrete per-project reason for any downgrade. Where fuse diagnostics reports the state of an already-written index, fuse doctor actively loads the workspace through MSBuild and Roslyn and explains why the oracle tier was or was not reached, so you know whether the compiler-backed answers are available. It names each project as loaded, loaded with compile errors (graph-grade), or not loaded (unrestored, SDK mismatch, or a build error), and reports the overall tier: oracle-grade (every project loaded clean), graph-grade (partial), or syntax.

fuse doctor ./src

fuse up

Report the environment-remediation plan for a workspace: run the same load diagnosis as fuse doctor, classify each downgraded project's failure against a knowledge base of known environment problems (for example NU1507 central-package-management source mapping, NETSDK1045 SDK band, MSB4018 task load), and name the remedy that would address each plus the workable-subset line (for example "6 of 8 projects oracle-grade; blockers: NU1507 on 2"). Repository-code failures (an ambiguous type, a bad compiler option) are named as not fixable by fuse up, never edited. By default it is report-only. Add --apply to apply the install-free NU1507 overlay (write the overlay NuGet config to a temp file, run dotnet restore --configfile <overlay> never touching the repository, then re-attempt the load and print the new per-project tiers); the apply path is bounded to one round. The consent-gated SDK and workload installs are never run without --allow-install; without it they are reported, not applied.

fuse up ./src

fuse reduce

Compact a caller-supplied set of files or piped content, running reduction without walking a directory. See Options reference for the reduction levels.

fuse reduce --files src/OrderService.cs --level skeleton

fuse init, fuse mcp, fuse host

fuse init writes the root fuse.json with the v4.4 schema, an optional workspace path, and an empty ignore array. workspace accepts a .sln, .slnx, .slnf, or .csproj below the repository root. Fuse refuses an ambiguous compiler target until this property is set. fuse mcp install writes the selected client's MCP registration and its versioned managed guidance by default. --no-rules writes registration only. --with-hooks writes project-scoped Claude Code hooks and is refused with user scope. fuse mcp doctor reports client configuration, executable paths, managed-block state, daemon protocol, repository identity, and index jobs. fuse mcp serve runs the stdio server (see Connect your coding agent). fuse host runs the long-lived repository host and refuses a path with no Git identity.

On this page