v13.22.0

thedotmack/claude-memv13.22.0Sep 1, 2026by thedotmack

AI Summary

The release enhances telemetry capabilities by tracking the observed model and billing tier, updates the database schema to support this data, and improves privacy by strictly limiting the parsing of configuration files.

Key Highlights

  • Telemetry now captures the observed model and billing tier
  • Database schema updated to include nullable columns for observed model and billing
  • Privacy improvements limit `.claude.json` parsing to specific fields only
  • Stop hook performance is improved by reading the transcript once

New Features

  • Telemetry `observed_model` field
  • Telemetry `observed_billing` field
  • Storage nullable columns for `observed_model` and `observed_billing`

Full Release Notes

## What's new

### Telemetry: observed model, source, and billing tier (#3836)

PostHog previously only knew the *observer* model (the model claude-mem uses to write observations). The `observer_turn_rollup` event now also reports the session being observed:

- **`observed_model`** — the model the user's IDE session is running (e.g. `claude-fable-5-1`), read from the transcript's last assistant entry on each Stop hook.
- **`observed_billing`** — a closed, low-cardinality enum: `max | pro | team | enterprise | subscription | api_key | bedrock | vertex | foundry | unknown`, detected in the hook process from Claude Code's environment and `~/.claude.json`'s `oauthAccount.organizationType`.
- **`ide`** and **`provider`** now actually reach PostHog on the rollup. The docs already claimed this; the rollup computation was dropping them.

### Storage

- `sdk_sessions` gains two nullable columns, `observed_model` and `observed_billing` (schema version 50). The migration is idempotent and runs on worker start.

### Privacy

- Only `oauthAccount.organizationType`, `oauthAccount` presence, and `customApiKeyResponses.approved` are read from `.claude.json`, and the parsed object is projected to those fields immediately. Parse failures log only the error class name, never the message.
- Both new properties are whitelisted in the telemetry scrubber and documented in `docs/public/telemetry.mdx`.

### Performance

- The Stop hook now reads the transcript once for both the last assistant message and the observed model (previously one read; the new field did not add a second).