Changelog
Release notes for Thoth SDKs and the MCP proxy.
All notable changes to Thoth SDKs and the MCP proxy/CLI are documented here. Releases follow
Semantic Versioning. Latest tags:
Go v0.1.5 · Python v0.1.6 · TypeScript v0.1.6 · Thoth Binary Line (thoth + thothctl) v0.2.8.
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:
thoth/v0.2.8(thoth+thothctl)
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
thothctlis now documented as the default admin path for no-dashboard bootstrap and updates.- New GitOps headless section covers Terraform, Pulumi, Argo CD, and GovAPI orchestration patterns.
- GitOps docs now use public-provider/public-runbook distribution patterns instead of internal module paths.
- SIEM/PAM integration guidance is now aligned to API-first and CI-driven operations.
Event pipeline deployment
- ECS deployment workflows now enforce
eventingestoras a Rust service target. - Deployment matrix validation now fails if
eventingestordrifts out of the Rust service group.
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.
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.
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.
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.
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 (aten-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
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.
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. |
Planned (Unreleased)
These items are planned and not yet shipped. Scope and timing can change.
In progress
Approval workflow enhancements
- Expanded step-up approval options, including better integration paths for enterprise workflows.
SDK ergonomics improvements
- Better session lifecycle ergonomics and safer default configuration paths.
Policy source integrations
- Expanded support for external policy/governance systems in enterprise deployments.
Under evaluation
Governance analytics and exports
- Additional governance analytics and export/reporting workflows.
Enterprise alerting improvements
- Enhanced operational alerting for high-priority governance events.
Compliance reporting templates
- Expanded policy/compliance reporting templates for regulated environments.