observability
Local, metadata-only telemetry for Claude Code. A bundled observer records session, tool, and subagent lifecycle events into SQLite on your machine, an optional statusline shows live context and usage, and an OpenTelemetry Collector can forward redacted signals to Grafana, generic OTLP, or PostHog. Telemetry payloads exclude prompts, responses, code, tool inputs and results, credentials, and environment values. Sink configuration you provide, including OTLP headers or tokens, is stored locally in ~/.claude/observability/observability.json (OBSERVABILITY_HOME overrides the directory; a pre-existing Eigenwise/Workbench directory is migrated automatically), so an exporter can authenticate. Every sink beyond local SQLite is opt-in.
Version: 0.8.3
Skills
Section titled “Skills”enable-project-telemetry: Opt the current project into local Claude Code usage telemetry, or verify its setup. Use to enable, disable, or check project telemetry.
- SessionStart (startup|resume):
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/lib/observability/ensure.js" --launch - SessionStart:
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - SessionEnd:
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - UserPromptSubmit:
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - PreToolUse (*):
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - PreToolUse (Agent|Task):
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/request-body-preflight.js" - PostToolUse (*):
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - Stop:
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - SubagentStart:
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js" - SubagentStop:
node --no-warnings "${CLAUDE_PLUGIN_ROOT}/hooks/observability.js"
Bin entrypoints
Section titled “Bin entrypoints”install-otel-collector.jsobserver.jsproject-telemetry.jsprune-observability.jssetup-observability.jsstatusline.jstoken-usage-report.jsverify-project-telemetry.js