Changelog
Release notes for Thoth SDKs, the Thoth binary line (proxy + thothctl), and IaC providers.
Historical release notes
Entries describe behavior at the time of each release. Use Install an SDK and Your first governed agent for current package names, runtime requirements, connection details, and failure behavior.
Release notes for every published Thoth package, newest first. Latest releases come straight from each package's changelog, so they match what is published; pre-releases are not listed. See the release-channel guide when selecting an upgrade. Releases follow Semantic Versioning.
Subscribe
- Direct feed URL:
https://docs.atensecurity.com/docs/changelog/rss.xml - One-click Feedly subscribe: Feedly
- One-click Inoreader subscribe: Inoreader
Latest releases
Generated from each package's CHANGELOG.md, newest first.
- Pulumi provider 0.1.16 (September 18, 2026)
- Python SDK 0.5.23 (September 18, 2026)
- Terraform provider 0.1.16 (September 18, 2026)
- Thoth CLI and MCP proxy 0.3.7 (September 12, 2026)
- Go SDK 0.1.19 (September 11, 2026)
- Python SDK 0.5.22 (September 11, 2026)
- TypeScript SDK 0.1.21 (September 11, 2026)
- TypeScript SDK 0.1.20 (September 11, 2026)
- Pulumi provider 0.1.15 (July 23, 2026)
- Terraform provider 0.1.15 (July 23, 2026)
- Pulumi provider 0.1.14 (July 10, 2026)
- Terraform provider 0.1.14 (July 10, 2026)
- Pulumi provider 0.1.13 (July 9, 2026)
- Terraform provider 0.1.13 (July 9, 2026)
- Thoth CLI and MCP proxy 0.3.6 (July 9, 2026)
- Go SDK 0.1.18 (June 20, 2026)
- Python SDK 0.5.21 (June 20, 2026)
- TypeScript SDK 0.1.19 (June 20, 2026)
- Python SDK 0.5.20 (June 15, 2026)
- Pulumi provider 0.1.12 (June 10, 2026)
- Thoth CLI and MCP proxy 0.3.5 (June 10, 2026)
- Terraform provider 0.1.12 (June 9, 2026)
Added
- Bridged the Terraform provider's 0.1.16 surface.
GovernanceSettingsgains the executable compliance declaration (declaredRegulatoryRegimes,complianceEnforcementMode) with computed canonical regimes, coverage, revision and propagation bound, andMcpVendorgains manifest signature, capability, runtime identity and egress attributes. See theterraform-provider-thoth0.1.16 changelog for the full surface and its upgrade note.
Changed
- Updated Terraform provider bridge dependency pin to
github.com/atensecurity/terraform-provider-thoth v0.1.16. - Bumped Pulumi release defaults/docs to
0.1.16:MakefiledefaultVERSION- plugin install command in
docs/installation-configuration.md
Upgrade note
Applying a compliance declaration requires a running enforcer that reports the
same catalogue and evaluator identity the bridged provider pins and reports
transactional declaration support. Otherwise the update fails with
Compliance capability mismatch and changes nothing. A service with tenant
declarations disabled refuses these fields by design; every other resource is
unaffected.
Fixed
- The tracer discarded the final enforcement decision after computing effective
tool arguments, so POST telemetry hardcoded
ALLOWand omitted server-issued reason codes and structured decision evidence. The real outcome is now retained and reported. - A resolved
STEP_UPno longer loses the initial policy evidence or the canonical terminal receipt. Final authorization semantics are merged with the initial reason, policy and receipt evidence, and the terminal receipt is preserved separately. - A sparse server response no longer erases locally established correlation. Sparse decisions bind to the local trace and action IDs.
Security
- A server response whose action or trace ID contradicts the locally established one now fails closed before the tool executes, rather than proceeding with ambiguous correlation.
Added
EnforcementDecisionand the policy exceptions gain an optionalterminal_receiptfield. Existing callers are unaffected.- Claude Agent SDK post-success and post-failure hooks now carry decision context, correlated through a bounded single-use map keyed on the provider tool-use ID. The map holds at most 1024 pending entries; a reused, missing, unseen or evicted ID yields empty context rather than another action's, so evidence correlation fails closed without changing the authorization result.
Unchanged
- Tool execution, blocking, deferral, step-up and argument-modification
semantics, final
MODIFYoutcomes, and currentOBSERVEbehaviour. The enforcement return shape remains private to the SDK implementation.
Added
thoth_governance_settingsgains an executable compliance declaration:declared_regulatory_regimesandcompliance_enforcement_mode, with computedcanonical_regimes,compliance_coverage,compliance_revisionandpropagation_max_ms. A declaration governs all current and future tenant agents, including agents with no policy record.observerecords advisory findings and preserves independent authorization;enforceadds non-grantable restrictions for DENY, STEP_UP and evidence-based UNRESOLVED. Removing a managed declaration or setting[]clears it, and legacy profile defaults never activate the binding.- Per-regime coverage counts are known at plan time from a catalogue pinned into
the provider, so
terraform planpreviews which controls a declared regime would evaluate before any apply. These are Aten's own author classifications and are not a regulatory conformance assessment. thoth_mcp_vendorgains manifest signature attributes (manifest_signature_status,_signer,_bundle_ref,_verified_at), pluscapabilities,runtime_identity,egress_policy_modeandegress_allowed_host_patterns.thoth_governance_settingsgainsregulatory_regimesfor onboarding baseline auto-pack loading. This selects legacy packs only and does not activate executable compliance; the declaration fields above are separate.
Changed
- The governance executive summary and reports overview data sources return additional fields.
Security
- Updated indirect dependencies, including
golang.org/x/text0.37.0 to 0.41.0,golang.org/x/net0.55.0 to 0.58.0 andgolang.org/x/crypto0.52.0 to 0.55.0.
Upgrade note
Applying a compliance declaration requires a running enforcer that reports the
same catalogue and evaluator identity this provider pins and reports
transactional_declarations_supported. If it does not, the apply fails with
Compliance capability mismatch and changes nothing rather than writing a
declaration the service cannot honour.
A service with tenant declarations disabled will therefore refuse these fields by design. Every other resource and data source in this release is unaffected. Verify the three-way agreement before rollout with:
Stable release of the macOS runtime (thoth and thothctl) for Apple Silicon
and Intel. This is the global latest release; Linux and Windows artifacts are
not included and remain at v0.3.6. This client release does not change the
platform readiness status.
Security
- Updated the HTTP/2 stack from
h20.4.13 in v0.3.6 to 0.4.19, fixing RUSTSEC-2026-0258 (unbounded queuing of empty DATA frames throughhyper). The advisory is patched in h2 0.4.16 and later.
Added
- Carried an action attestation ID through every governed tool call. The proxy
reuses
action_attestation_idfrom the request when supplied and otherwise generates one, sends it to the enforcer, and reports it on decision responses and on both the request and terminal telemetry events, so an attempt can be correlated end to end. - Reported decision evidence on
ALLOWandBLOCKresponses, which previously carried none.BLOCK,DEFERandSTEP_UPresponses now include the enforcement trace ID, action attestation ID, authorization decision, reason, reason code, action classification and risk score when the enforcer supplies them.
Fixed
- Stopped writing enforcer error response bodies and selected response headers
into proxy logs when a call fails. A failure is now recorded as a reason code
(
enforcer_transport_error,enforcer_http_error,enforcer_invalid_response) with the HTTP status only, so response content cannot reach logs. - Distinguished an enforcer response with no recognized decision from a genuine
BLOCK. Both still fail closed, but the former is now recorded asenforcer_invalid_responserather than being indistinguishable from a policy denial in evidence. - Preserved request-side correlation IDs on the terminal event when the enforcer is unreachable, returns an error status, or returns an undecodable body, so a failed call is still traceable to the attempt that caused it.
- Kept a locally escalated
STEP_UPfrom exporting a receipt that the underlyingALLOWnever carried. - Distinguished an absent model risk score from one the enforcer explicitly reported as null, and stopped copying non-numeric risk payloads into decision evidence.
- Cleared stale request-side reason fields from terminal telemetry so a decision reason always describes that decision.
Known limitations
- On Windows the proxy API key file (
~/.thoth/proxy_api_key.json) is written with inherited ACLs. The owner-only permission handling thatthothctlapplies on macOS and Linux has no Windows equivalent yet, so treat that file as readable by any account with access to the user profile until it does.
Changed
- Serialized the decision-evidence integration fixtures. Each spawns a proxy subprocess and a mock enforcer, and running them concurrently exhausted the proxy's bounded 5s HTTP timeout, so the proxy failed closed and the suite reported six failures unrelated to proxy behavior.
Added
- Added a per-action attestation ID, generated for each tool call unless the caller supplies one, and propagated it through enforcement decisions, behavioral events, logs, and policy errors for deterministic correlation.
- Added model name/provider/artifact context, authentication and delegation context, MCP runtime identity, and caller metadata to authorization requests.
- Added public process-local delivery status and bounded shutdown APIs.
Changed
- Minimized retained HTTP and SQS telemetry with an explicit allowlist. Tool arguments, free-text context, results, errors, explanations, full receipts, and unknown metadata remain available to authorization but are not retained by default.
- Added bounded HTTP and SQS delivery retries with stable event and FIFO deduplication identifiers. Retrying telemetry never re-executes a governed tool or repeats its authorization decision.
- Added SQS partial-batch failure handling, process-local delivery counters,
bounded shutdown through
CloseWithTimeout, and a five-second overall HTTP request timeout. - Expanded the public decision-envelope compatibility contract and standalone module tests for the new authorization and evidence fields.
- Documented the telemetry privacy boundary and the limits of process-local delivery status.
Added
- Added first-class LangGraph support through
instrument_langgraph(),instrument_tool_node(), and@thoth_graph, including synchronous and asynchronous tool execution, concurrent call history, mock mode, and explicitThothDeferredErrorhandling. - Added per-action attestation IDs across authorization, Claude Agent SDK hooks, lifecycle events, policy errors, and decision evidence. Provider tool-use IDs are used for correlation only and are never represented as authenticated workload identity.
- Added model name/provider/artifact context, authentication and delegation context, MCP runtime identity, and caller metadata to authorization requests.
- Added human-explanation retrieval for blocked and step-up decisions with optional bounded webhook delivery.
- Added wheel-content validation and clean installed-package tests for the base package and the Anthropic, AutoGen, Claude, LangChain, LangGraph, and OpenAI extras.
Fixed
- Return a fresh approval-timeout decision for every sync and async call, so blocked-event evidence cannot inherit an earlier action's attestation ID.
- Reject unresolved or malformed step-up results without executing the tool, and keep synchronous and asynchronous fallback enforcement to one decision per action.
- Reject Claude callback results that identify a different action, and avoid correlating concurrent callbacks by tool name when no trusted action ID is available.
- Govern callable-only tool collections and LangChain-style duck-typed
_run/runtools even when their framework classes are unavailable. - Correct optional dependency declarations and restore SDK type-check coverage.
Changed
- Minimized retained HTTP and SQS telemetry with an explicit allowlist. Tool arguments, free-text context, results, errors, explanations, full receipts, and unknown metadata remain available to authorization but are not retained by default.
- Added bounded HTTP and SQS delivery retries with stable event and FIFO deduplication identifiers. Retrying telemetry never re-executes a governed tool or repeats its authorization decision.
- Added SQS partial-batch failure handling, process-local delivery counters,
and bounded shutdown through
close(timeout=...). - Documented the telemetry privacy boundary and the limits of process-local delivery status.
Fixed
- Continue polling canonical unresolved STEP_UP hold responses until resolution or the configured deadline instead of treating a missing decision field as a terminal fallback block. Timeout and malformed-response handling remain fail-closed.
Added
- Added a per-action attestation ID, generated for each tool call unless the caller supplies one, and propagated it through authorization, lifecycle telemetry, decisions, and policy errors.
- Added bounded human-explanation requests for blocked and step-up decisions and
exposed the explanation on decisions and
ThothPolicyViolation. - Exported behavioral-event emission and per-event delivery status types for applications that need process-local telemetry health signals.
Changed
- Minimize default telemetry with an explicit field allowlist; omit tool arguments and free-text context, reasons, explanations and full receipts. Authorization inputs and enforcement behavior are unchanged. See PRIVACY.md for wire data and migration limits.
- Remove payload-bearing diagnostic logs and verify the installed npm artifact against a local HTTP collector.
- Make telemetry delivery resilient: bounded retries with stable event IDs, so a retried delivery is de-duplicable server-side and never replays a governed tool call or re-requests authorization.
- Use native Node ESM imports throughout the published package.
- Restrict the published package to built output, source and user-facing docs via
an explicit
filesallowlist. Development-only files (tests, CI workflows,tsconfig.json, fixtures and internal notes) are no longer published, and a packing artifact can no longer be swept into the tarball.
Changed
- Updated Terraform provider bridge dependency pin to
github.com/atensecurity/terraform-provider-thoth v0.1.15. - Bumped Pulumi release defaults/docs to
0.1.15:MakefiledefaultVERSION- plugin install command in
docs/installation-configuration.md
Fixed
- Updated docs for Pulumi Registry lint compatibility:
- extensionless internal cross-link in
docs/_index.md - markdown SDK links (no bare URLs) in
docs/installation-configuration.md
- extensionless internal cross-link in
Fixed
- Updated provider docs for Pulumi Registry compatibility by converting markdown cross-links to extensionless paths and replacing bare SDK URLs with explicit markdown links.
Fixed
- Added required YAML front-matter blocks to:
docs/_index.mddocs/installation-configuration.md
- This unblocks Pulumi registry metadata generation (
resourcedocsgen metadata from-github) and future nightly community-package refreshes.
Changed
- Release alignment patch to unblock downstream Pulumi provider
v0.1.14publishing and registry metadata refresh.
Changed
- Updated Terraform provider bridge dependency pin to
github.com/atensecurity/terraform-provider-thoth v0.1.13. - Bumped Pulumi release defaults/examples to
0.1.13:MakefiledefaultVERSION- README release line and manual plugin-install command docs
- Node.js and .NET example package references
- Updated Pulumi bridge language metadata so Node.js SDK publishing is declared
as
@atensec/pulumi-thoth(matching npm publication and registry install instructions). - Corrected .NET namespace configuration to avoid doubled NuGet identity rendering in generated metadata/docs.
- Added explicit plugin download URL + bridge metadata wiring in provider metadata for release consistency.
Added
- Added complete cross-language examples under
examples/for Node.js, Python, and .NET with matching stack config templates. - Added code examples to
docs/_index.mdfor Node.js, Python, and .NET quick starts.
Added
- Added policy-exception workflow resources:
thoth_policy_exceptionthoth_policy_exception_reviewthoth_policy_change_artifact_apply
- Added policy-exception workflow data sources:
thoth_policy_exceptionthoth_policy_exceptionsthoth_policy_change_artifactthoth_policy_change_artifacts
- Added governance + MCP summary data sources:
thoth_governance_executive_summarythoth_governance_board_incident_summarythoth_mcp_inventory_digest
- Added policy-exception workflow example under
examples/policy-exception-workflow.
Changed
- Expanded governance cost report coverage to include pricing-catalog metadata, fallback counters, and unresolved-model visibility fields.
- Refreshed provider docs/README for the new policy exception and governance summary surfaces.
Fixed
- Emitted behavioral telemetry events from the Rust
thothproxy for local preflight outcomes (BLOCK,DEFER,STEP_UP) and forwarded execution outcomes so Claude Desktop/runtime decisions are ingested through/v1/events/batchand appear in governance feeds.
Changed
- Added configurable resilience mode via
Config.FailOpen/THOTH_FAIL_OPEN. When enabled, enforcer transport failures and retryable statuses (429,5xx) returnALLOWso tool execution can continue. - Auth failures (
401/403) remain fail-closed and continue returningBLOCK. - Added regression coverage in internal and public SDK tests for fail-open/fail-closed behavior.
- Added vendor-runtime observability coexistence tests for Datadog, LangSmith, OpenTelemetry,
and Sentry in an isolated compat test module (
sdk/thoth/compat). - Added compatibility matrix CI coverage for Go runtime-stack coexistence verification.
Changed
- Added configurable resilience mode via
ThothConfig.fail_open/THOTH_FAIL_OPEN. When enabled, enforcer transport failures and retryable statuses (429,5xx) returnALLOWso agent execution can continue. - Auth failures (
401/403) remain fail-closed and continue returningBLOCK. - Added regression tests for fail-open timeout, retryable status, and auth-failure handling.
- Added LangSmith coexistence integration coverage
(
tests/integrations/test_langsmith_compat.py) to ensuretraceabletools continue to execute under Thoth governance wrappers. - Added observability-wrapper coexistence integration coverage for Datadog-like,
OpenTelemetry-like, and Sentry-like instrumentation patterns
(
tests/integrations/test_observability_compat.py). - Hardened
instrument()wrapping for LangChain-style duck-typed tools so_runandrunare both governed even when LangChain classes are not importable at runtime. - Fixed generic
.toolswrapping for callable-only tool entries (plain functions/callables), which are now replaced with governed callables instead of bypassing enforcement. - Added regression tests for callable-only tool entries and LangChain
duck-typed
_run/runwrapping intests/test_instrumentor.py. - Added first-class LangGraph instrumentation APIs:
instrument_langgraph(),instrument_tool_node(), and@thoth_graph. - Added mock-mode LangGraph decision simulation (
THOTH_MOCK_MODE=true) for local end-to-end development without a live enforcer. - Added
ThothDeferredErrorand LangGraph DEFER handling that raises without executing the tool and emits defer metadata in tool telemetry. - Added a thread-safe session call-history path for concurrent LangGraph
branches via
SessionContext.pending_tool_calls(...).
Changed
- Added configurable resilience mode via
failOpen/THOTH_FAIL_OPEN. When enabled, enforcer transport failures and retryable statuses (429,5xx) returnALLOWso tool execution can continue. - Auth failures (
401/403) remain fail-closed and continue returningBLOCK. - Added regression tests for fail-open timeout/status behavior and auth-failure handling.
- Added vendor-runtime compatibility regression tests for Datadog, LangSmith, OpenTelemetry, and Sentry coexistence with Thoth tool interception.
- Added compatibility matrix CI coverage with per-stack TypeScript runtime test runs.
Added
- Added a LangGraph runtime enforcement example at
examples/langchain/langgraph_runtime_enforcement.pythat demonstrates observe and progressive enforcement flows usinginstrument_toolchain(). - Added a companion policy example at
examples/langchain/policies/research_agent.regocovering allow, step-up, block, and flag outcomes for a research-agent toolchain. - Added a cookbook notebook at
examples/langchain/cookbook_agent_governance.ipynbwith end-to-end shadow and enforce walkthroughs. - Added a reusable composite GitHub Action at
.github/actions/thoth-policy-check/for static policy checks against Python agent tool-call patterns. - Added a static analysis helper script at
scripts/langchain/thoth_policy_check.pyused by the action. - Added a vendor-neutral RFC issue draft for LangGraph tool interception hooks
at
docs/contributions/langchain_rfc_tool_hooks.md. - Added an engineering blog draft at
docs/blog/langchain-runtime-enforcement.md.
Changed
- Updated Terraform provider bridge dependency pin to
github.com/atensecurity/terraform-provider-thoth v0.1.12. - Bumped Pulumi release defaults/examples to
0.1.12:MakefiledefaultVERSION- Node.js example package dependency (
@atensec/pulumi-thoth)
Added
- Pulumi bridge now exposes Terraform
0.1.12MCP vendor registry and catalog verification surfaces:McpVendorresourcegetMcpVendorsdata sourceMcpCatalogVerifyresourcegetMcpInventoryReportdata source
Fixed
- Inherited Terraform
0.1.12stabilization for MCP vendorhostPatternsordering so Pulumi up/refresh operations converge deterministically when API response ordering differs.
Added
- Added MCP vendor registry and catalog verification command surfaces in
thothctlto align CLI capability with current control-plane governance APIs.
Changed
- Updated release automation and public distribution flow for
thothandthothctlso production release tags drive Homebrew package publication from signed assets.
Added
- Added MCP vendor registry support:
thoth_mcp_vendorresourcethoth_mcp_vendorsdata source
- Added MCP inventory and verification surfaces:
thoth_mcp_inventory_reportdata sourcethoth_mcp_catalog_verifyresource
Fixed
- Stabilized
thoth_mcp_vendor.host_patternsstate behavior to avoid apply/read inconsistencies caused by server-side ordering differences.
Earlier releases
Combined release-line notes up to June 8, 2026.
- v0.1.18 / v0.3.4 (June 8, 2026)
- v0.1.18 / v0.3.3 (May 14, 2026)
- v0.1.17 / v0.3.3 (May 10, 2026)
- v0.1.16 / v0.3.0 (May 5, 2026)
- v0.1.15 / v0.2.23 (April 30, 2026)
- v0.1.14 / v0.2.22 (April 28, 2026)
- v0.5.5 / v0.2.20 (April 27, 2026)
- v0.5.4 / v0.2.19 (April 26, 2026)
- v0.5.4 / v0.2.18 (April 26, 2026)
- v0.1.6 / v0.2.8 (April 24, 2026)
- v0.1.6 / v0.2.8 (April 22, 2026)
- v0.1.6 / v0.2.7 (April 21, 2026)
- v0.1.6 / v0.2.3 (April 20, 2026)
- v0.1.6 / v0.2.2 (April 19, 2026)
- v0.1.3 / v0.2.0 (April 15, 2026)
- v0.1.2 (April 10, 2026)
- v0.1.1 (March 31, 2026)
- v0.1.0 (March 30, 2026)
Enterprise release pathway: Homebrew tap + notarized PKG + supply-chain trust metadata
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.17 - Python SDK: unchanged at
sdk/python/v0.1.16 - TypeScript SDK: unchanged at
sdk/npm/v0.1.18 - Thoth proxy +
thothctlbinary line:thoth/v0.3.4 - Terraform provider: unchanged at
v0.1.11 - Pulumi provider: unchanged at
v0.1.11
Enterprise distribution and verification
- Added Homebrew tap publication flow for
atensecurity/homebrew-tap. - Added notarized macOS PKG release pathway for MDM deployments (Jamf/Intune/Kandji).
- Published Santa trust metadata (
santa-metadata.json) and signing metadata for endpoint allowlisting. - Expanded release metadata set: SBOMs (CycloneDX + SPDX), provenance, immutable manifest, checksums, and Sigstore keyless signatures.
- Added documentation runbooks for release channels, Santa trust policy, Kandji deployment, and deployment validation matrix.
MODIFY, DEFER, and complete MOSES decision envelope across Python, Go, and TypeScript
This release line publishes:
- Go SDK:
sdk/go/v0.1.17 - Python SDK: unchanged at
sdk/python/v0.1.16 - TypeScript SDK:
sdk/npm/v0.1.18 - Thoth proxy +
thothctlbinary line: unchanged atthoth/v0.3.3 - Terraform provider: unchanged at
v0.1.11 - Pulumi provider: unchanged at
v0.1.11
Two new decision outcomes
MODIFY— the enforcer rewrites tool arguments before execution. The governed wrapper calls the tool with the modified args.PolicyViolationError/ThothPolicyViolationis not raised — execution proceeds with policy-applied arguments. The audit trail carries both the original request and the modification reason.DEFER— the enforcer signals the caller to retry after a specified timeout. Different fromSTEP_UP: no human approval required, time-bounded, and recoverable by design. The error surfacesdeferTimeoutSeconds/DeferTimeoutSecondsfor caller-side retry logic.
Legacy enforcer aliases normalize automatically: TRANSFORM→MODIFY, HOLD/DEFERRED→DEFER, DENY→BLOCK, CHALLENGE/ESCALATE→STEP_UP.
Full MOSES ML decision envelope in SDK error types
PolicyViolationError (Go) and ThothPolicyViolation (Python and TypeScript) now carry six new fields from the MOSES two-tier enforcement path:
| Field | Description |
|---|---|
decision_envelope_version / DecisionEnvelopeVersion | Schema version of the enforcer response — for forward-compatibility checks |
enforcement_trace_id / EnforcementTraceID | Correlation ID following the request through enforcer → fast-ML → deep-LLM |
fastml_features / FastMLFeatures | ONNX fast-ML feature vector used to score the request |
score_components / ScoreComponents | Composite risk score breakdown by component (scope, velocity, identity binding, etc.) |
top_contributors / TopContributors | Ranked list of highest-weight features that drove the decision |
decision_evidence / DecisionEvidence | Raw evidence fields from the enforcer response envelope |
These fields are available directly on the caught exception — no additional API calls needed for incident reporting or audit trail reconstruction.
Canonical observe mode
shadow is no longer part of the public SDK surface. The canonical enforcement mode is observe. The enforcer and all three SDKs continue to accept shadow as an alias — no config changes required in running deployments.
Expanded policy context propagation
ThothConfig / Config now accepts environment, enforcement_trace_id, session_intent, purpose, data_classification, and task_context. All fields are forwarded on every enforcement call.
HTTP diagnostics
Improved error messages for 401/403 enforcer responses with actionable hints about API key scope and ingest token configuration.
Proxy 0.3.3 and provider 0.1.7 release alignment
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.15 - Python SDK:
sdk/python/v0.1.16 - TypeScript SDK:
sdk/npm/v0.1.17 - Thoth proxy +
thothctlbinary line:thoth/v0.3.3 - Terraform provider:
v0.1.7 - Pulumi provider:
v0.1.7
Docs and release consistency
- Promoted Thoth CLI/proxy docs to the
thoth/v0.3.3binary line. - Standardized provider references on
v0.1.7across Terraform and Pulumi docs.
Org API key auth for IaC + Thoth 0.3.0 release line
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.15 - Python SDK: unchanged at
sdk/python/v0.1.15 - TypeScript SDK: unchanged at
sdk/npm/v0.1.16 - Thoth proxy +
thothctlbinary line:thoth/v0.3.0 - Terraform provider:
v0.1.3 - Pulumi provider:
v0.1.2
Infrastructure-as-code provider releases
- Added org-level API key auth for provider workflows and preserved bearer-token compatibility.
- Standardized CI/CD auth through
THOTH_API_KEYfor Terraform and Pulumi provider usage. - Updated provider release notes and docs for dual-auth guidance.
Thoth binary line release
- Published
thoth/v0.3.0and aligned customer-facing install/version references. - Updated release docs to reflect the current stable binary line for
thothandthothctl.
Canonical release lines, Secrets Broker GA docs, and ingest resilience
This release line publishes:
- Go SDK:
sdk/go/v0.1.14 - Python SDK:
sdk/python/v0.1.14 - TypeScript SDK:
sdk/npm/v0.1.15 - Thoth endpoint runtime:
thoth/v0.2.23
Release and upgrade clarity
- Standardized customer docs on canonical release channels (
thoth/v*for endpoint runtime,sdk/*for SDKs). - Updated install and quick-reference pages to reflect current stable versions and package constraints.
Operator workflows
- Added customer-ready strict-mode Secrets Broker examples for MCP tools (for example Figma, Notion, and Stitch host bindings).
- Documented fail-closed token handling patterns for endpoint runtime use without storing long-lived tokens in local tool config.
Runtime resilience
- Hardened telemetry ingest behavior for intermittent
403/edge enforcement failures to reduce dropped event noise and improve operator troubleshooting.
SDK log-level controls + governance envelope hardening
This release line publishes:
- Go SDK:
sdk/go/v0.1.13 - Python SDK:
sdk/python/v0.1.13 - TypeScript SDK:
sdk/npm/v0.1.14 - Thoth endpoint runtime:
thoth/v0.2.22
SDK diagnostics and enforcement traceability
- Added SDK log-level controls across Go, Python, and TypeScript for cleaner operator debugging.
- Improved STEP_UP token and enforcement trace diagnostics to make approval-path troubleshooting faster.
Thoth control-plane hardening
- Unified auth/delegation envelope fields across control-plane and runtime services.
- Added stricter default purpose-class enforcement and promotion lifecycle guardrails.
- Hardened model-router policy behavior and admin settings integration for safer runtime rollout control.
- Clarified API key redaction output and governance feed query UX.
Tenant-scoped telemetry and API-key hardening
This release line publishes:
- Go SDK:
sdk/go/v0.1.11 - Python SDK:
sdk/python/v0.5.4 - TypeScript SDK:
sdk/npm/v0.5.5 - Thoth endpoint runtime:
thoth/v0.2.20
SDK telemetry isolation
- Go, Python, and TypeScript SDK ingestion paths now align to tenant-scoped telemetry/event IDs to avoid cross-tenant event collisions.
- Instrumentation payload models were updated to preserve scoped event identity throughout ingest and normalization.
Endpoint runtime management
- Improved API key management UX and guidance for scope-aware authorization.
- Set a secure 90-day default API key expiry with proactive warnings for near-expiry keys.
- Fixed shadow mode STEP_UP visibility so review-to-agent-registry flows surface approval state consistently.
In-place runtime update experience
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.10 - Python SDK: unchanged at
sdk/python/v0.5.3 - TypeScript SDK: unchanged at
sdk/npm/v0.5.4 - Thoth endpoint runtime:
thoth/v0.2.19
Lifecycle management
- Added in-place update workflows for endpoint runtime and admin tooling.
- Each command checks GitHub Releases, verifies asset checksums (
checksums.sha256), and installs only verified binaries. --forceis supported for explicit reinstallation of the latest release.
Customer docs
- Updated external docs to reflect current Thoth binary line
v0.2.19. - Added update workflow guidance so operators can keep binaries current without reinstall scripts.
Scoped key reliability + SDK ingest auth parity
This release line publishes:
- Go SDK:
sdk/go/v0.1.10 - Python SDK: unchanged at
sdk/python/v0.5.3 - TypeScript SDK:
sdk/npm/v0.5.4 - Thoth endpoint runtime:
thoth/v0.2.18
SDK ingest reliability
- Go and TypeScript SDK emitters now send both
Authorization: Bearer ...andX-Api-Keyheaders on ingest calls to match enforcer/runtime expectations. - Non-2xx ingest failures now log the HTTP status, target URL, and a safe response-body snippet to speed up debugging.
API key management
- API key creation and authorization flows now support explicit scope selectors:
--organization--fleet-id--endpoint-id--agent-id
- Command help now explains key scope vs runtime context matching in plain language.
- Authorization output now includes clear hints when validation fails due to expiry, permission mismatch, or scope mismatch.
Operator docs
- Public runbooks now use explicit scope flags in API key command examples so customer operators can copy/paste known-good commands.
Python SDK ThothClient Backward-Compatibility Export
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.5 - Python SDK: unchanged at
sdk/python/v0.1.6 - TypeScript SDK: unchanged at
sdk/npm/v0.1.6 - Thoth binary line: unchanged at
thoth/v0.2.8
Python SDK (atensec-thoth)
- Restored
from thoth import ThothClientcompatibility export. - Added legacy method aliases (
wrap,wrap_openai_tools,wrap_anthropic_tools) that delegate to currentinstrument*APIs.
Documentation
- Python SDK README now includes a legacy compatibility section for
ThothClient. - Docs-site Python SDK reference now calls out preferred module-level APIs and legacy
ThothClientsupport.
Headless operations improvements
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.5 - Python SDK: unchanged at
sdk/python/v0.1.6 - TypeScript SDK: unchanged at
sdk/npm/v0.1.6 - Thoth endpoint runtime:
thoth/v0.2.8
Fleet management + MDM providers
- Added tenant-scoped MDM provider configuration and sync workflows for Jamf and Intune.
- Fleet management now supports on-demand provider inventory synchronization to upsert endpoint records.
- Provider sync now supports default fleet and environment mapping for imported endpoints.
Headless control plane
- Admin tooling is now documented as the default path for no-dashboard bootstrap and updates.
- New headless operations section covers API-driven and automation-driven orchestration patterns.
- Documentation now emphasizes customer-run automation workflows without dashboard dependency.
- SIEM/PAM integration guidance is now aligned to API-first and CI-driven operations.
- Added browser control-plane workflows for provider, policy, and enrollment management across supported browsers.
- Added browser sync workflows for endpoint-side policy resolution and managed artifact application (
applied/rendered/dry_run) to support mixed browser fleets.
Manual endpoint enrollment
- Fleet management now provides generated re-enrollment scripts for endpoints not associated with a fleet.
- Direct endpoint enrollment supports optional fleet assignment through
THOTH_FLEET_ID. - Endpoint health state remains current through periodic proxy check-ins.
Documentation
- Added external-facing docs for MDM provider sync and manual endpoint enrollment flow.
- Proxy install docs now default to
thoth/v0.2.8. - Added public-platform delivery workflows: Terraform-based public repo bootstrap and CI mirroring for provider/runbook content.
Proxy Identity Defaults + Enforcer Context-Diff Warnings
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.5 - Python SDK: unchanged at
sdk/python/v0.1.6 - TypeScript SDK: unchanged at
sdk/npm/v0.1.6 - MCP Proxy:
thoth/v0.2.7
MCP Proxy (thoth binary)
- Endpoint identity resolution now defaults to immutable machine identity (Intune/Jamf managed ID override, then OS machine ID), with hostname only as last-resort fallback.
THOTH_USER_IDremains required and must be a valid email address.enforcer_urlandgovapi_urlare inferred fromtenant_id+apex_domain.--enforcer-url/THOTH_ENFORCER_URLare now deprecated and ignored.
Enforcer
- Requests with valid keys now proceed even when endpoint/fleet scope context does not match exactly; enforcer emits warnings for follow-up.
- Tenant user-domain mismatches are now warn-only when key validation succeeds.
Documentation
- Customer docs now reflect
thoth/v0.2.7defaults for identity, URL inference, and runtime env expectations.
Wrap-Config Env Injection + Simpler Endpoint Routing
This release line publishes:
- Go SDK: unchanged at
sdk/go/v0.1.5 - Python SDK: unchanged at
sdk/python/v0.1.6 - TypeScript SDK: unchanged at
sdk/npm/v0.1.6 - MCP Proxy:
thoth/v0.2.3
MCP Proxy (thoth binary)
thoth wrap-confignow supports repeatable--env KEY=VALUEto inject runtime environment values directly into selected MCP server entries.- Wrap output remains idempotent and now reports environment changes when values are updated.
- Fleet registration URL handling is simplified:
govapi_urlis derived automatically fromtenant_id+apex_domainashttps://grid.<tenant>.<apex-domain>.enforcer_urlis derived automatically ashttps://enforce.<tenant>.<apex-domain>when not explicitly set.- legacy
gov_api_urlcompatibility paths are removed.
- Runtime identity hardening:
THOTH_USER_IDmust be a valid email address.- customer domain policy is enforced centrally by enforcer tenant metadata (admin-managed), with automatic request blocking for non-matching user domains.
Documentation
- Customer-facing docs are updated for
v0.2.3. - Proxy setup examples now use supported
wrap-configflags and document inline environment injection via--env.
Fail-Closed Enforcement + Canonical Contract Parity
This release line publishes:
- Go SDK:
sdk/go/v0.1.5 - Python SDK:
sdk/python/v0.1.6 - TypeScript SDK:
sdk/npm/v0.1.6 - MCP Proxy:
thoth/v0.2.2
Proxy + SDK enforcement behavior
- Go and proxy paths now enforce fail-closed posture on enforcer/runtime failures.
- Enforcement payload contract is normalized to canonical fields:
tool_argsenforcement_trace_iduser_id,approved_scope,session_intent,session_tool_calls
- Session tool-call history is bounded to the latest 128 calls for parity across Go and proxy paths.
Documentation
- Docs now reflect fail-closed behavior in SDK guidance and security posture sections.
- Version banners and docs-site changelog are updated for the latest SDK/proxy releases.
Telemetry Metadata + Policy Context Propagation
This release publishes:
- Go SDK: unchanged at
sdk/go/v0.1.2 - Python SDK:
sdk/python/v0.1.3 - TypeScript SDK:
sdk/npm/v0.1.3 - MCP Proxy:
thoth/v0.2.0(public release:atensecurity/thothv0.2.0)
Python SDK (atensec-thoth)
BehavioralEventnow includes endpoint context fields:endpoint_idhostname
BehavioralEventnow includes WORM chain evidence fields:chain_indexhashprevious_hashsignature
- Dependency lock/metadata refreshed as part of the SDK patch line.
TypeScript SDK (@atensec/thoth)
- Enforcer payload now propagates:
tool_argsuser_idmetadata.policy_contextenforcement_trace_id
ThothConfigadds:policyContextenforcementTraceId
- Instrumentation now serializes tool call arguments safely before enforcement checks.
MCP Proxy (thoth binary)
- Emitted events now include normalized top-level endpoint metadata:
endpoint_idhostname
- Event metadata includes
hostnameconsistently for downstream pipelines. - MCP proxy distribution now uses the cross-platform
thothbinary release line. - Docs + install path standardized to:
curl -fsSL https://install.atensecurity.com/thoth | sh- GitHub release assets from
atensecurity/thoth
Tenant API URL Contract + Session Intent Enforcement
This release publishes v0.1.2 for all Thoth SDKs:
- Go:
sdk/go/v0.1.2 - Python:
sdk/python/v0.1.2 - TypeScript:
sdk/npm/v0.1.2
Unified SDK API URL contract
- Go, Python, and TypeScript SDKs now use a single tenant API URL for both:
- policy enforcement (
POST /v1/enforce) - behavioral event ingestion (
POST /v1/events/batch)
- policy enforcement (
- SDK startup now requires tenant API URL configuration via:
- explicit config (
APIURL/api_url/apiUrl) - or
THOTH_API_URL
- explicit config (
- Removed SDK fallbacks to hosted global defaults and split endpoint semantics.
Go SDK
NewClientnow fails fast whenAPIURLis missing.- Examples and tests updated to pass
THOTH_API_URLexplicitly. - SDK docs now include required env setup and quickstart examples.
Python SDK
ThothConfignow requires tenant API URL resolution (api_urlorTHOTH_API_URL) and enforces a single URL contract.resolved_enforcer_urlnow follows the single-URL contract and mirrorsresolved_api_url.session_intentis now accepted in config and passed to enforcement payloads.- Step-up polling now sends auth headers when
api_keyis present.
TypeScript SDK
- Removed
HOSTED_API_URLfallback and split enforcer semantics. instrument()now throws at startup whenapiUrl/THOTH_API_URLis missing.- Enforcement and event emission now route through the same tenant API URL.
sessionIntentis now supported in config and forwarded to enforcement payloads.- Runtime/test baseline updated and validated for Node.js 18+ compatibility.
This patch release fixes critical mismatches between the Go and TypeScript SDKs and the enforcement API. All SDK consumers on v0.1.0 should upgrade.
Go SDK (github.com/atensecurity/thoth-go)
- Critical enforcement compatibility and decision-handling fixes across request/response mapping.
- Endpoint and schema alignment updates for stable enforcement and step-up behavior.
- Improved client metadata propagation and response observability fields.
TypeScript SDK (@atensec/thoth)
emitBehavioralEventwas not exported from the package root. It is now accessible viaimport { emitBehavioralEvent } from "@atensec/thoth".
REST API documentation
- All endpoint paths, request field names (corrected to snake_case), response schemas, and HTTP status codes in the API reference now match the actual backend.
First General Availability Release
This is the first general-availability release of the Thoth SDK. All three language SDKs (Python, Go, TypeScript) are stable and production-ready.
Hosted API — single API key, zero infrastructure
The Thoth enforcement and event ingestion API is now hosted at https://api.atensecurity.com.
Authentication requires a single THOTH_API_KEY — no AWS credentials, no infrastructure setup.
All three SDKs pick it up automatically from the environment.
Python SDK (thoth-sdk)
instrument(agent, ...)— Instrument any AI agent with a.toolsattribute. Auto-detects LangChainAgentExecutorand CrewAIAgentvia duck-typing.instrument_anthropic(tool_fns, ...)— Wrap tool execution functions for Anthropic Claude agentic loops. Returns a governeddict[str, Callable].instrument_openai(tool_fns, ...)— Wrap tool execution functions for OpenAI tool-calling loops.ThothPolicyViolationexception — raised when the enforcer blocks a tool call. Fields:tool_name,reason,violation_id.get_current_session()— Access the active session context from within a governed tool call.ThothConfig— Pydantic model with full field validation.EnforcementModeenum —observe|progressive|step_up|block.- LangGraph and CrewAI integrations — auto-detected via duck-typing.
Go SDK (github.com/atensecurity/thoth-go)
NewClient(Config)— Initialize the Thoth client with env-var fallback.Client.WrapTool/Client.WrapToolFunc— wrap string and map tool functions.Client.StartSession(ctx, agentID, sessionID)— per-request session isolation.PolicyViolationError,StepUpRequiredError— typed error values.- Fail-open guarantee — enforcer unreachable never blocks tool execution.
TypeScript SDK (@atensec/thoth)
instrument<T>(agent, config)— generic agent instrumentation; preserves TypeScript types.wrapAnthropicTools/wrapOpenAITools— sub-path imports for framework-specific wrappers.ThothPolicyViolation— extendsError. Fields:toolName,reason,violationId.EnforcementModeenum,ThothConfiginterface,BehavioralEventinterface.- Async generator support and
strict: truecompilation.
REST API (https://api.atensecurity.com)
POST /v1/events/batch— up to 100 events per batch; idempotent viaevent_id; 90-day retention.POST /v1/enforce— returnsALLOW | BLOCK | STEP_UPwith progressive anomaly scoring.GET /v1/enforce/hold/{hold_token}— returnspending | approved | denied | expired.- Rate limits: 1,000 req/min (events), 500 req/min (enforce), 200 req/min (hold) per tenant.
| Mode | Behavior |
|---|---|
observe | Log and emit events only. Never block. |
progressive | Escalating enforcement based on session anomaly scoring. Default. |
step_up | Always require human approval for out-of-scope tools. |
block | Immediately reject with ThothPolicyViolation. |