Telemetry and runtime network access
mdsmith collects no telemetry, no usage analytics, no error reports, and no identifiers. The CLI and the LSP server make no outbound network calls at runtime in the default configuration. The one opt-in exception is MDS072 (external-link-check), which probes document URLs when explicitly enabled.
mdsmith does not phone home. The CLI and the LSP server make zero outbound network calls during normal operation. No telemetry, no analytics, no error reports, no anonymous identifiers, no update checks. The one opt-in exception is MDS072 external-link-check (described below).
# What runs offline
mdsmith checkwalks the workspace and reads files. No network by default. (external-link-checkis the one opt-in exception; see below.)mdsmith fixrewrites files in place. No network by default. (Same opt-in exception asmdsmith check.) Its build pass runs user-declared recipes (see below).mdsmith lspspeaks LSP over stdio to the parent editor. No network by default. (Same opt-in exception asmdsmith check.)mdsmith deps,mdsmith rename,mdsmith metrics,mdsmith query, and every other subcommand stay local.
In the default configuration, a locked-down or air-gapped CI
runner can run mdsmith check . with no outbound access.
# Install-time network access
Network access only happens when the user installs the binary:
go install …/mdsmith@latestfetches the module from the Go proxy.npm install -g @mdsmith/clidownloads the npm tarball and the matching platform sub-package.pip install mdsmithdownloads the wheel from PyPI.- The VS Code Marketplace or Open VSX downloads the
.vsix.
None of these channels run a postinstall script that calls home.
After install, the binary is a static Go executable. In the
default configuration, running it makes no outbound network calls.
The install guide covers the GitHub-release direct-download path for air-gapped hosts.
#
What about mdsmith fix build recipes?
The mdsmith fix build pass dispatches each <?build?> directive to
a recipe you declare in build.recipes. A recipe is your own
command, run via os/exec with an explicit argv and no shell. What
that command does — including whether it makes a network call — is
under your control, not mdsmith’s. mdsmith executes the recipe; it
adds no network access of its own. Pass --no-build to skip the
build pass entirely, and --build-dry-run to enumerate the targets
without running any recipe. mdsmith check never runs a recipe.
# What about the Claude Code plugin?
The Claude Code plugin is an optional editor surface. mdsmith
itself never calls an LLM at runtime. In the default
configuration, it contacts no external service either. The plugin
spawns mdsmith lsp as a local subprocess and feeds its JSON-RPC
output to the editor. Diagnostics, fixes, and navigation all come
from the local Go binary.
# What about the “size and readability limits”?
The five rules grouped under
Size and readability limits
(MDS022, MDS023, MDS024, MDS028, MDS037) are pure
heuristics. They run inside the Go binary. No model inference, no
remote scoring, no embedding lookups.
# Opt-in network access: MDS072 external-link-check
MDS072 is disabled by default. When you explicitly enable it,
mdsmith check issues outbound HTTP HEAD (or GET, on a 405 fallback)
requests to every http:// and https:// URL found in the linted
documents. That is the rule’s purpose: probing live links.
Without MDS072: no outbound traffic, on any command or subcommand.
With MDS072 enabled: one HTTP request per distinct URL, per run,
up to links.external-max-probes (default 1000). Results are cached
per URL so the same URL across many files costs one request. The SSRF
guard blocks connections to loopback, private (RFC 1918), link-local,
ULA, CGN, and cloud-metadata addresses by default; see MDS072
settings
for external-allow-internal and external-max-probes. A
non-positive timeout falls back to 5 s.
An air-gapped CI runner that does not enable MDS072 is unaffected and needs no firewall exception. An air-gapped runner that enables it will see every URL reported as unreachable (transport error), which may or may not be the desired outcome for that environment.
# How to verify
Run mdsmith check . under a network-monitoring tool of your
choice (strace -e trace=network, tcpdump, your firewall) and
inspect the output. With MDS072 disabled (the default), no outbound
traffic appears. With MDS072 enabled, one HEAD request per distinct
URL will be visible.