Skip to content

Changelog

Public version history for sentience-governor. Follows Semantic Versioning.

Breaking changes bump the minor version until 1.0. After 1.0, breaking changes bump the major.


0.2.3 — 2026-05-07

Set out to add token tracking. Ended up adding execution-cost attribution — token spend attached directly to execution-boundary traces, with per-turn identity so multi-tool-call attribution stays mathematically correct. No breaking changes; existing 0.2.2 wrappers, traces, and downstream tooling continue to work unchanged.

Terminal window
pipx upgrade sentience-governor # if pipx-installed
pip install --upgrade sentience-governor # if pip-in-venv

Added

  • Launch-list email capture. The sentience CLI prompts once on first invocation for an email so we can let you know when the hosted dashboard ships. Easy to skip; never re-asks. Also at getsentience.ai/launch-list. Architecturally separate from sentience-sync — the launch list never receives trace data, telemetry counts, or tool calls.
  • Optional LLM-token tracking on CONTEXT_SNAPSHOT events. Eight new optional fields on ClassificationHint and ContextSnapshotPayload: llm_prompt_tokens, llm_completion_tokens, llm_cached_read_tokens, llm_cached_write_tokens, llm_reasoning_tokens, model_identifier, provider, llm_turn_id. All optional; non-adopters see zero schema change. Provider-accurate raw values pass through unchanged (Anthropic excludes cache from input; OpenAI includes; Sentience does not normalize — raw values are preserved).
  • Per-turn attribution identity (llm_turn_id). When one LLM turn produces multiple tool calls, the same token usage attaches to every emitted event in that turn, all sharing one llm_turn_id. Without this identity, aggregation across multi-tool-call turns becomes mathematically wrong. Consumers MUST dedupe by (session_id, llm_turn_id) before summing canonical token fields.
  • SentienceCallbackHandler.on_llm_start and on_llm_end. New callback methods that capture per-turn LLM token usage from LangChain responses and attach it (with the turn’s llm_turn_id) to subsequent tool-call events. Trace immutability preserved: events emitted before on_llm_end arrives carry the turn id but no token fields, and are never mutated retroactively when usage data lands.
  • SentienceMiddleware.awrap_step. New optional LangGraph hook that aggregates token usage across messages within a step. Existing awrap_tool_call is unchanged and remains backward-compatible.
  • Defensive token-extraction helper module (sentience_governor.wrapper.token_extraction). Handles Anthropic, OpenAI, and LangChain response shapes. Merges across shapes so Anthropic-via-LangChain cache fields are preserved.
  • Claude Code hook adapter probes the hook payload for usage / token_usage defensively. Anthropic does not currently expose this in the hook payload; fields stay None until they do.

Changed

  • sentience status reassurance line now reads “Sentience is governing your Claude Code sessions locally.” (was “capturing your Claude Code sessions”). Better matches the product brand and makes the local-first privacy stance explicit.

What this release is NOT

  • Not a schema-bump release. No new event types.
  • Not a cost-calculation feature. We record raw provider-reported tokens; cost math lives in dashboards / downstream tools.
  • Not a token-budget enforcement feature.
  • Not a dashboard. The hosted dashboard and downstream analytics ship separately — see getsentience.ai/launch-list to be notified.

See userdocs/sentience_governor.md “Token tracking (optional)” for the integration guide and the full aggregation contract.


0.2.2 — 2026-04-28

Patch release. No API changes. No command changes.

Fixed

  • Default network timeout for sentience-sync raised from 15 seconds to 30 seconds. First-call latency on the cloud sync endpoint can exceed 15 seconds on slower client networks, causing sentience-sync run to fail with a network-error message even when the request would have eventually succeeded. The new default comfortably covers typical first-call latency while still failing fast on a genuinely unreachable network. Operators can override via SENTIENCE_SYNC_TIMEOUT_SECONDS.
  • Removed misleading (placeholder) suffix from sentience-sync status output. The status command previously appended (placeholder) next to the production endpoint URL, suggesting configuration was incomplete when it wasn’t. Output now shows the endpoint URL plainly.

Changed

  • README and userdocs now recommend pipx install sentience-governor as the canonical install method. Modern macOS and Linux Pythons enforce PEP 668 and refuse pip install outside a virtualenv; pipx is the standard fix. Library integration via pip install sentience-governor inside an active venv is still documented and supported. See the updated install guide and troubleshooting.

0.2.1 — 2026-04-26 (TestPyPI only; superseded by 0.2.2)

Patch release. Published to TestPyPI for staging validation; not promoted to PyPI. The fixes in 0.2.1 are rolled forward into 0.2.2 along with additional improvements; install 0.2.2 instead.

Fixed

  • Default network timeout for sentience-sync raised from 5 seconds to 15 seconds, removing the need for a SENTIENCE_SYNC_TIMEOUT_SECONDS workaround in most cases. Subsequently raised again to 30 seconds in 0.2.2.

Notes

  • macOS users running Python from python.org may see SSL: CERTIFICATE_VERIFY_FAILED on first network call. This is a known Python packaging quirk, not a Sentience issue. One-time fix: /Applications/Python\ 3.13/Install\ Certificates.command (adjust the version number to match your Python install). The troubleshooting guide covers this in detail.

0.2.0 — 2026-04-23 (TestPyPI only; superseded by 0.2.2)

First release with live cloud sync. Published to TestPyPI for staging validation; not promoted to PyPI. Subsequent staging cycles surfaced a CLI default-timeout issue (fixed in 0.2.1 and again in 0.2.2) and a placeholder-text cosmetic bug (fixed in 0.2.2). Install 0.2.2 instead.

Action required

Run:

Terminal window
sentience-sync register --email ... --name ...

Breaking

  • sentience-sync register now requires --email and --name.
  • State file format bumped from v1 to v2.
  • v1 state files are auto-migrated on next save. No manual migration.

Added

  • Live production endpoint at https://sync.getsentience.ai/v1.
  • Bearer-token auth on /v1/sync.
  • user_agent field in register payloads.
  • Duplicate-sync is a successful no-op (exits 0 with Already uploaded for this window).
  • Targeted error messages for three failure paths:
    • “Not registered. Run register first.”
    • “Registration incomplete or outdated. Run register again.”
    • “Authorization failed. Run register again (installation ID preserved).”
  • State-file 0600 permissions on POSIX.
  • Optional --organization and --role flags on register.

Changed

  • Default endpoint is live, not a placeholder.
  • /v1/update-check is now GET with query string (was POST with body).
  • Payload shapes match server contract exactly. Dropped language_binding and deployment_label.

Security

  • installation_secret stored with owner-only permissions on POSIX.
  • Bearer token in header, never body.
  • Source IPs hashed server-side, never stored raw.

Correctness invariant

  • register never regenerates your installation_id once one exists locally.
  • --force refreshes the secret but preserves the ID.

Upgrade from 0.1.9

Terminal window
pip install --upgrade sentience-governor
sentience-sync register --email you@example.com --name "Your Name"

Scripts calling register without flags must be updated.

Per-session traces, sentience / sentience-cli, Claude Code hook, and library-integration paths are unchanged.


0.1.9 — 2026-04-17

First public tag. Open-tier Sentience Governor runtime — execution-boundary instrumentation, policy evaluation, local trace generation, CLI tooling.

Included

  • Runtime with five control points plus GOVERNANCE_ERROR.
  • MCP wrapper (wrap_mcp_client + SentienceMCPAdapter).
  • LangChain adapter (SentienceCallbackHandler, SentienceMiddleware).
  • Honest intent classification — inferred intents marked inferred_low.
  • Five default policy rules (POL-001–POL-005), eight advisory flags.
  • Session manager: IDLE → ACTIVE → CLOSING → CLOSED.
  • Three sinks: StdoutSink, FileSink, HttpLocalSink (fail-open).
  • Curated Claude Code hook viewer (sentience).
  • Raw trace viewer (sentience-cli).
  • Sentience Sync CLI (sentience-sync) — opt-in aggregated counts.

Design commitments (apply to every release)

  • No automatic uploads.
  • Aggregates only, never raw events.
  • Opt-in geo reporting.
  • Structural isolation from the runtime.
  • Failed uploads do not advance local state.

Stuck? → Troubleshooting

© 2026 Crescere Labs, Inc. All rights reserved.