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:
| Prefix | Meaning |
|---|---|
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
| Command | Does | Reads index | Writes index |
|---|---|---|---|
fuse index [path] | Start or join the repository syntax index job | n/a | yes |
fuse index status [path] | Show index job state, counts, and storage | no | no |
fuse index cancel [path] | Request cancellation of the repository index job | no | no |
fuse index clean [path] --yes | Remove only documented Fuse-derived index files | no | yes |
fuse warm [path] | Warm the index now (syntax-first build) so the next read is fast; a warm store is a no-op | n/a | yes |
fuse warm --service install|uninstall|status | Manage the opt-in always-on warm service (never installed by fuse mcp install) | n/a | n/a |
fuse map [path] | Print a workspace map (symbols, routes, counts) | yes | no |
fuse context [path] | Plan and emit context for seeds (source bodies) | yes | no |
fuse review [path] | Review a change, or emit a handoff packet | yes | no |
fuse impact <symbol> | Compute symbol impact or a package upgrade break set | yes | no |
fuse test <symbol> | Run the covering tests for a symbol | yes | no |
fuse find <query> --kind <kind> | Find an exact match, resolve wiring, inspect graph facts, or rank task candidates | yes | no |
fuse diagnostics [path] | Report index state (fast read-only status) | yes | no |
fuse doctor [path] | Diagnose the semantic load tier and per-project downgrade reasons | no | no |
fuse up [path] | Report the environment-remediation plan (remedies per failure, workable subset); --apply applies the install-free NU1507 overlay and re-attempts the load | no | no |
fuse reduce | Compact a known set of files or content | no | no |
fuse capture [path] | Create a portable build-capture bundle | no | no |
fuse verify [path] --ci-parity | Report or run locally reproducible CI steps | no | no |
fuse init | Write a configuration file | no | no |
fuse mcp install | Write MCP client registration and managed guidance for launching fuse mcp serve; --no-rules skips guidance and --with-hooks writes Claude hooks | no | no |
fuse mcp doctor | Inspect MCP registration, managed guidance, daemon reachability, and index job state | no | no |
fuse mcp serve | Run the MCP server | n/a | first-use |
fuse host | Run the long-lived host service | n/a | yes |
fuse update | Update the global Fuse tool after stopping a narrow peer set | no | no |
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-peersAccepts --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 . --yesUse --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 symbolsfuse 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 --strictUse 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 xmlAccepts --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 25000Accepts --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.0Accepts 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 ./srcfuse 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 ./srcAccepts --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 ./srcfuse 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 ./srcfuse 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 ./srcfuse 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 skeletonfuse 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.