Doctor and troubleshooting

Read environment readiness, distinguish retained history from recoverable residue, and review exact remediation.

Published baseline: v0.11.1.

v0.10.10 adds a read-only installation CA check at startup and in Doctor. fragcap ca status reports public LocalMachine/Root state without decrypting the signer. Deep Capture performs a separate signing proof before effects. A missing or unhealthy CA names its state and directs elevated fragcap ca repair; ordinary Capture remains available. Doctor recovery does not remove the installation root.

v0.10.11 reports the public installation CA as healthy for an ordinary account when its exact public identity and root are present, even when private signer metadata correctly denies that account access. Deep Capture still requires a privileged signing proof before effects.

v0.10.12 reports requested and effective Deep Capture observation and managed-launch limits in plans and terminal outcomes. The session manifest retains those limits for later diagnosis.

v0.11.1 reports current-user .fragcap storage, managed handoff and phase diagnostics, exact-game scope and middleware handling, direct-route component readiness, and retained ownership limitations in Doctor and terminal results. Installed-product failures return as version-specific issues.

Current source adds the read-only inspection scope check. It reports whether the native proxy plus live socket-table and ETW ownership evidence can support exact-game decisions and blind middleware relay. This is general machine readiness, not proof that a selected target is calibrated. Use fragcap targets show <target> for scope-specific facts. A legacy, launch-chain, stale, or otherwise mismatched row remains history and cannot qualify exact-game inspection. Doctor does not create a recommendation, run a target, or mutate the store.

Read first, repair separately

fragcap doctor
fragcap doctor --json

Doctor checks without starting Capture, a proxy, a target, or trust changes. Capture and Deep Capture readiness are separate verdicts. Missing elevation, Npcap, required backend features, or usable interfaces can block packet recording without proving that the native proxy is unavailable. Indeterminate means the check could not establish the fact; it is not a green result. Target compatibility is separate from environment readiness.

Plain Doctor runs without Administrator. In the v0.11.1 release it reads the packaged WinDivert component's exact identity and service status without opening the route. A present component does not prove driver-open permission or selected target routing. An explicit deep-capture --direct-route session requires Administrator and current composite-route calibration; missing or altered component bytes refuse before effects. Npcap still supplies live packet capture independently. Wireshark and per-user extcap registration are optional; live extcap capture uses the same elevated Capture path.

Since v0.10.6 (S168), Doctor summarizes healthy completed history with distinct observed session and resource counts. The inventory remains bounded and explicitly reports incomplete coverage; a terminal resource does not prove its session has no active owner. Active, mixed, stale, cleanup-failed, unknown, unsupported, and actionable findings remain individually visible. Retained evidence is separate from cleanup residue, and ordinary Doctor never deletes it.

fragcap doctor --history-details
fragcap doctor --json

--history-details expands exact human history. JSON always retains every original session/resource check identity, readiness verdict, exit decision, and recovery eligibility, with native_resource fields for kind, state, health, and ownership authority. Quiet and silent suppress optional progress, while Doctor's stdout report remains available; JSON stays structured and plain. Default redirected output uses an 80-column wrapping target. Interactive wrapping uses 40 through 80 display columns, preserving four-space column anchors, Unicode and color parity, and exact indivisible values even when they exceed the width. Do not scrape human spacing as a stable API.

Recovery is exact ownership, not a sweep

Completed bundles and retained sensitive artifacts can be healthy history. Their existence alone does not authorize deletion. Durable journals distinguish acquired, pending, reconciled, missing, ambiguous, and unprovable resources. Recovery decisions are shared with session preparation: pending prior-session recovery can refuse a new session before its plan appears.

fragcap doctor --fix

Review each named action and exact identity before its individual confirmation. CurrentUser trust removal requires the exact recorded owned CA; another user's trust, an unrelated certificate, a process with only a matching image name, or an unprovable listener is not owned. Failed recovery retains evidence. Re-run plain Doctor and retain unresolved journals and manifests rather than deleting the authority needed to recover.

Published builds offer the official Npcap acquisition page after confirmation. Optional source-build net support may fetch and launch the vendor's signed installer after confirmation. Neither path silently installs or redistributes the driver. Wireshark/extcap remediation is optional for command-line Capture.

Proxy traffic without client packet ownership

The corrections shipped in v0.10.6 (S169) address several loopback acquisition gaps: Deep Capture includes its required loopback adapter even with named physical interfaces, recognizes Npcap loopback descriptions, provides the exact listener IP when adapter addresses are absent, and keeps the exact TCP listener in loopback filters during narrowing. The observed stage-bound client can own either canonical TCP endpoint orientation. Competing owners remain unresolved, and the existing acquisition gate and finite history bounds remain active.

If exchanges complete but calibration says missing packet-flow correlation, run fragcap doctor to inspect Npcap and loopback readiness. Inspect the retained application correlation reasons and process trace separately. packet-flow-not-observed means no matching flow summary; packet-history-bound-exceeded means matching evidence was withheld or exceeded its bound; capture-buffer-history-incomplete means a global acquisition-buffer gap. A flow outside the connection window, missing owner or conflicting owners has its own reason. Counts describe retained observation-window records and do not include later route-owner release traffic. A readable artifact or successful HTTP response does not prove final-client ownership.

v0.10.9 reports packet-scope-withheld for a selected-scope packet missing inside the exact proxy connection window and packet-omission-unlocalized when its omission time cannot be trusted. A withheld packet before that window does not by itself rule out a later exact match. packet-history-bound-exceeded now specifically names saturated per-flow retention; packet-omission-history-bound-exceeded means even the bounded omission intervals filled. Global acquisition-buffer loss is still a separate refusal. v0.10.8 used a broader packet-history-bound-exceeded reason.

If calibration says the stored Steam install root differs after a library move, inspect targets show and the platform's current installation. v0.10.9 offers targets relocate --steam <app-id> for a unique, reviewable move, followed by an exact --plan-id application. A missing old volume, two candidate locations, changed executable, or still-present old root requires manual investigation; retrying calibration cannot establish a new root. v0.10.8 has no relocation command. Do not remove and recreate the authored target merely to bypass a mismatch: that discards its stable identity and history.

Doctor is read-only and checks prerequisites; it does not repair packet ownership or prove compatibility. Gameplay retry is not an established remedy for a missing evidence path. S170 shipped ordinary-user output access in v0.10.6. v0.10.7 (S173) fixes automatic same-account elevated recipient acquisition and retires historical permission repair; unresolved historical access uses normal Windows permission administration. Controlled sockets and synthesized packet fixtures prove the source corrections; they do not prove live Npcap acquisition or universal title compatibility.

A stalled check

Historical v0.10.0 has coarse progress and a hidden fragcap doctor --timings switch that adds completion durations; it cannot update while a probe is blocked. v0.10.1 and later ship the S151 diagnostics below and are available for optional operator-owned installed observation. The historical stall cause was not measured on the affected host. If a current release stalls despite the elapsed and nested progress, file a defect naming the release, privilege state, visible phase, elapsed time and scrubbed reproduction details.

In published v0.10.1 and later, normal Doctor help exposes --timings. Interactive normal human read-only runs identify nested residue inventory, manifest/artifact scanning, manifest CA identities, separate root certificate stores and IPv4/IPv6 readiness. After one second of pending work, stderr reports the active operation and elapsed milliseconds, repeating no faster than once per second. Slow completions include actual durations automatically; --timings includes fast completions too. Residue inventory and ETW session availability remain aggregate boundaries, not individual API attribution. Pending does not mean unavailable, and there is no new probe timeout or cancellation guarantee. JSON, redirected human, quiet, silent, fix behavior and final reports remain unchanged.

For installed reproduction on published bytes, report version, privilege, first-run versus repeat, named phase/sub-operation, elapsed time and sanitized diagnostic evidence. Exclude account names, private paths, target inventory, endpoints, credentials and bundle contents. A stalled or interrupted check does not establish readiness or authorize repair.

For bundle authority and explicit sharing, see Output formats and Security and privacy.