Skip to main content

Command overview

beacon endpoint doctor runs local health checks for the Beacon endpoint agent and exits non-zero when any hard check fails. Add --fix to apply safe remediations for supported findings.
Command syntax
Use doctor when rollout automation, support scripts, or an operator needs a pass/fail health signal. For a broader status view that includes collector readiness, service state, discovered harnesses, and last-event state, use beacon endpoint status. beacon doctor is a top-level alias for beacon endpoint doctor.

Checks

Doctor verifies:
  • Endpoint configuration file
  • Endpoint configuration validity
  • Collector configuration file
  • Runtime JSONL log path
  • Runtime log permissions
  • Service definition: launchd plist on macOS, systemd unit on Linux
  • Configured harness telemetry and recent observed events
  • Whether DeepSeek Harness can load the hook bridge its hooks depend on (dsh_hook_bridge)
  • Whether DeepSeek Harness hooks are actually recording live events (dsh_hook_capture)
  • Whether Beacon’s git hooks ran out of time recently (git_hook_budget)
  • Whether a real user’s agent runtime points at the collector (system mode only)
  • The system log’s access mode, and in the restricted mode whether the collector is serving the ingest socket (runtime_log_access)
The runtime log itself can be missing before the first event is written. In that case, doctor reports a warning instead of a hard failure.

runtime_log_access

System mode only. Reports whether the system log is shared or restricted, and in the restricted mode whether everything it depends on is in place. In the restricted mode, runtime_log_permissions checks that the log and its directory are closed to other accounts instead of checking that hooks can append. On Windows it reads the ACL of the log directory and of everything directly in it, and reports restricted_acl when only SYSTEM, Administrators and the beacon-log group (read only) can reach them, or restricted_log_too_open naming each grant to anyone else. Run without sudo (or, on Windows, unelevated), doctor cannot open a restricted log, and says so rather than reporting a failure. On Windows the suggested repair is beacon endpoint repair --system from an elevated shell.

console_user_configured

System-mode only, and worth understanding because it is the one failure that a completely healthy endpoint can still report. A system endpoint runs as root, so it has to work out whose agent settings to configure, and the collector is useless if nothing exports to it. This check asks whether that happened:
Everything else can be green when this fails. The collector is running, the service is loaded, and the harness check passes, because doctor --system runs as root and sees the settings the install wrote for root. The person whose sessions matter is the one with nothing. If no logged-in user can be identified at all, this reports a warning rather than a failure: an unattended host legitimately has nobody to configure, and that is not something an operator can act on.

dsh_hook_bridge

This check runs only when DeepSeek Harness is detected and Beacon’s hooks for it are installed. dsh does not ship the Claude Code hook bridge the hooks run through, and a mount it cannot load is skipped at boot with a warning, so an install can be complete on disk and record nothing. The check reports what Beacon found about the bridge:
It is a warning, not a failure: installing packages into a dsh profile is the operator’s step, and Beacon does not take it. --fix lists the check as a manual skip. See Installing the hook bridge.

dsh_hook_capture

This check runs only when DeepSeek Harness is detected and Beacon’s hooks for it are installed. It catches a failure no other check sees: the hooks are loaded, but they cannot write the runtime log because dsh runs them inside its session sandbox. harness_observed stays green in this state, because beacon endpoint dsh sync fills the log with poll events under the same harness name.
Doctor cannot reproduce the sandbox, because running the hook command from doctor runs it outside dsh, where it succeeds. So the check compares evidence instead. It counts native sessions that DeepSeek wrote after the hooks were installed and more than a few minutes after the last event with harness.collection_method=hook. The live log and every rotated archive are searched for that event. Each of those sessions is one the live hooks did not capture. Once rotation has started discarding history, sessions older than the oldest retained event are not counted, because their hook events may have rotated out. Evidence doctor cannot read, such as a missing hooks file, is reported as a warning rather than a pass. The other cause is a dsh process that was already running when the hooks were installed and has not been restarted. This is a warning, not a failure. The sandbox mode is the operator’s choice in dsh, and Beacon does not change it. --fix lists the check as a manual skip. See Live hooks and the DeepSeek Harness sandbox.

git_hook_budget

This check appears only when one of Beacon’s git hooks ran out of time in the last seven days, in any repository. It counts the git.hook_budget_exceeded events in the runtime log and names the most recent.
It warns when a run was cut short, because a commit may have been left unlinked; runs that only finished late are reported as ok. The budgets are fixed, so --fix lists the check as a manual skip.

Fix mode

beacon endpoint doctor --fix plans and applies safe remediations for supported findings. It can create a missing runtime log, and recreate managed collector configuration and the service definition (a launchd plist or a systemd unit) when the endpoint configuration is valid. On a Windows system install it also resets the log directory ACL, from an elevated shell, when interactive users cannot append to the runtime log or when they hold more than append (an older install’s Modify grant): the same ACL a fresh install applies, described in Windows. Fix mode deliberately skips cases that need operator intent, such as invalid endpoint configuration, missing harness setup, missing observed runtime events, unsafe runtime log permissions, or service repair on a host with no service manager to repair. If a collector service repair fails, Beacon rolls back the files and service state it changed where possible, then refreshes doctor results so the printed checks reflect any partial fixes that succeeded. JSON output includes applied and skipped fix details so deployment scripts can distinguish remediated checks from findings that still need manual action.

Flags

Examples

Run health checks with the default per-user paths:
Run health checks with the default per-user paths
Run health checks and apply supported fixes:
Run health checks and apply supported fixes
Check a root-managed endpoint deployment:
Check a root-managed endpoint deployment
Repair supported root-managed findings:
Repair supported root-managed findings
Print machine-readable check results:
Print machine-readable check results
Print machine-readable results with applied and skipped fix details:
Print machine-readable results with applied and skipped fix details
Use the top-level alias:
Use the top-level alias

Endpoint status

Inspect collector, service, harness, diagnostics, and runtime-log state.

Endpoint inventory

Show configured, detected, and observed endpoint inventory.