v9.6.0 — session-summary reporting API + Claude Code usage dashboard
[9.6.0] - 2026-07-07 (session-summary reporting API + Claude Code usage dashboard)
Additive minor. v9.6.0 turns the Claude Code and Cowork activity v9.5.0 began ingesting into reporting. A new session-summary API rolls governed activity into per-session (or per-user-day) buckets, additively enriched with the developer and session usage metrics when the OTLP ingest is wired; a new operator Grafana dashboard visualizes that usage; and the bundled Grafana datasources are provisioned with stable uids, closing a pre-existing bug that broke provisioned dashboards. One idempotent migration (core/141) auto-applies on deploy.
Added
- Session-summary reporting API. (Enterprise)
GET /api/v1/audit/session-summaryaggregatesaudit_logsinto per-session (or per-user-day fallback) buckets: request totals, an allow / block / redact breakdown, a per-tool (request-type) usage breakdown with tokens / cost / latency, and session-level totals — tenant-scoped, filterable by user, with a bucket cap (?limit=, default 200, max 1000) and atruncatedflag. When the OTLP/v1/metricsingest is configured, each bucket is additively enriched with the Claude Code usage metrics (lines of code, active time, commits, pull requests, tool-permission decisions, session count, and the metrics-export token and cost aggregates); the enrichment is best-effort and gracefully absent when the ingest is not wired, so the base view always works fromaudit_logsalone. In Community the endpoint returns501(it is an Enterprise capability). - Claude Code Usage Grafana dashboard. (Enterprise) New dashboard
axonflow-claude-code-usageover the v9.5.0 OTLP-ingest usage records: per-developer and per-session tokens, cost, lines of code, tool-permission decisions, and active time (PostgreSQL panels overusage_events), plus an ingest-health row overaxonflow_otel_ingest_rejected_total(Prometheus). It is an operator/admin cross-org reporting surface — its org filter is a display slice, not a tenant-isolation boundary. Provisioned by the OTel/Grafana overlay and baked into the deployed Grafana image.
Changed
- Grafana provisioned datasources now carry stable uids (
prometheus,axonflow-postgres). (Community) The baked dashboards already referenceduid: prometheus, which the deployed entrypoint never defined — those panels resolved to "datasource not found" on a fresh deployed Grafana. Dashboards referencing datasources by name are unaffected. Upgrade note: a user-authored dashboard saved against the previous auto-generated datasource uid must be re-pointed once. The deployed entrypoint also acceptsUSAGE_DB_*variables so the SQL datasource can target the platform database whenGF_DATABASE_*points at a dedicated Grafana metadata DB.
Migration
core/141(Community): adds an idempotent(tenant_id, timestamp, session_id)composite index toaudit_logsso the session-summary aggregate scans are index-assisted on large tenants. Additive — no rewrite of existing rows; auto-applies on deploy.
Full release notes: https://docs.getaxonflow.com/docs/releases/v9-6-0