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.
pipx upgrade sentience-governor # if pipx-installedpip install --upgrade sentience-governor # if pip-in-venvAdded
- Launch-list email capture. The
sentienceCLI 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 fromsentience-sync— the launch list never receives trace data, telemetry counts, or tool calls. - Optional LLM-token tracking on
CONTEXT_SNAPSHOTevents. Eight new optional fields onClassificationHintandContextSnapshotPayload: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 onellm_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_startandon_llm_end. New callback methods that capture per-turn LLM token usage from LangChain responses and attach it (with the turn’sllm_turn_id) to subsequent tool-call events. Trace immutability preserved: events emitted beforeon_llm_endarrives 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. Existingawrap_tool_callis 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_usagedefensively. Anthropic does not currently expose this in the hook payload; fields stayNoneuntil they do.
Changed
sentience statusreassurance 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-syncraised from 15 seconds to 30 seconds. First-call latency on the cloud sync endpoint can exceed 15 seconds on slower client networks, causingsentience-sync runto 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 viaSENTIENCE_SYNC_TIMEOUT_SECONDS. - Removed misleading
(placeholder)suffix fromsentience-sync statusoutput. 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-governoras the canonical install method. Modern macOS and Linux Pythons enforce PEP 668 and refusepip installoutside a virtualenv;pipxis the standard fix. Library integration viapip install sentience-governorinside 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-syncraised from 5 seconds to 15 seconds, removing the need for aSENTIENCE_SYNC_TIMEOUT_SECONDSworkaround 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_FAILEDon 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:
sentience-sync register --email ... --name ...Breaking
sentience-sync registernow requires--emailand--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_agentfield 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
registerfirst.” - “Registration incomplete or outdated. Run
registeragain.” - “Authorization failed. Run
registeragain (installation ID preserved).”
- “Not registered. Run
- State-file
0600permissions on POSIX. - Optional
--organizationand--roleflags on register.
Changed
- Default endpoint is live, not a placeholder.
/v1/update-checkis now GET with query string (was POST with body).- Payload shapes match server contract exactly. Dropped
language_bindinganddeployment_label.
Security
installation_secretstored with owner-only permissions on POSIX.- Bearer token in header, never body.
- Source IPs hashed server-side, never stored raw.
Correctness invariant
registernever regenerates yourinstallation_idonce one exists locally.--forcerefreshes the secret but preserves the ID.
Upgrade from 0.1.9
pip install --upgrade sentience-governorsentience-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