NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3285 most downloaded on PyPI
Integrate PostHog into any python application.
Last release today
02 Oct 2026
Ships on a steady schedule
a new release about every 8 days
This project publishes no release notes
the list below is its commits, not an announcement
Nothing withdrawn
no release was ever pulled
7 years old
313 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
cd86110 Fall back to uncompressed uploads when gzip compression fails — Thanks @marandaneto!
888a725 Add posthog.mcp, a Python SDK for PostHog MCP analytics (just pip install posthog; the MCP SDK is a peer dependency of instrument(), not bundl
posthog.mcp, a Python SDK for PostHog MCP analytics (just pip install posthog; the MCP SDK is a peer dependency of instrument(), not bundled). instrument(server, posthog_client) wraps a FastMCP or low-level mcp.server.Server so every tool call, agent intent, tools/list, initialize, and failure is captured to PostHog as a $mcp_* event. Also adds PostHogMCP, a Client subclass for custom dispatchers (needs nothing beyond posthog), plus opt-in context intent capture, identify, report_missing (get_more_tools), and conversation_id. Beta. — Thanks @lucasheriques for your first contribution 🎉!cdd878c Clear feature flag called cache on shutdown — Thanks @marandaneto!
89adb2f Fix internal imports for posthoganalytics mirror — Thanks @hpouillot!
42ff4ca Detect and redact high-entropy secrets (API keys, tokens, passwords) in exception code variables. Adds the code_variables_detect_secrets optio
code_variables_detect_secrets option (default True). — Thanks @ablaszkiewicz!c359f93 Mask sensitive data held inside objects and in URL/DSN credentials when capturing exception code variables. Custom objects are now traversed s
password are redacted by attribute name instead of leaking via repr(), and credentials embedded in connection strings are scrubbed. Adds the code_variables_mask_url_credentials option (default True). — Thanks @ablaszkiewicz!09c8fba Warn on duplicate async PostHog clients and document client lifecycle guidance — Thanks @marandaneto!
bc8e531 Add a default timeout for flushing queued events. — Thanks @marandaneto!
98a305a Increase the default background flush interval to 5 seconds — Thanks @marandaneto!
8d416ae Add missing return type annotations to improve typing coverage without changing runtime behavior. — Thanks @miachillgood for your first contri
b9f3208 Add opt-in client-side rate limiting for exception autocapture, using the same token bucket algorithm as the posthog-js and posthog-node SDKs:
enable_exception_autocapture_rate_limiting client option and tune via exception_autocapture_bucket_size (default 50), exception_autocapture_refill_rate (default 10), and exception_autocapture_refill_interval_seconds (default 10). — Thanks @hpouillot!ee6a3c8 Warn when an AI wrapper's base_url points at the PostHog AI Gateway. The gateway emits its own $ai_generation, so each call would be captured
base_url points at the PostHog AI Gateway. The gateway emits its own $ai_generation, so each call would be captured (and billed) twice. The wrapper only warns and never drops the event. Detection covers the wrapper funnels (OpenAI, Anthropic, LangChain) and the OTel span path. — Thanks @richardsolomou!fe76fc9 Improve mypy coverage for core SDK modules without changing runtime behavior. — Thanks @Kshitijmishradev for your first contribution 🎉!
00b2091 Add internal-only routing of $ai_* events to a dedicated capture endpoint in their own batch, gated behind the unstable _dedicated_ai_endpoint
$ai_* events to a dedicated capture endpoint in their own batch, gated behind the unstable _dedicated_ai_endpoint client option (off by default, not for general use). — Thanks @carlos-marchal-ph!a2ce51e feat(feature-flags): support the early_exit condition option in local evaluation. When a flag enables early exit, evaluation now stops and ret
early_exit condition option in local evaluation. When a flag enables early exit, evaluation now stops and returns False as soon as a condition group's property filters match but the rollout percentage excludes the user, instead of falling through to later groups — matching the server-side evaluation behavior. — Thanks @gustavohstrassburger!3aed638 Add a configurable $is_server event property (default true) so PostHog can identify server-side events. Set is_server=False when using posthog
$is_server event property (default true) so PostHog can identify server-side events. Set is_server=False when using posthog-python as a client/CLI so the device OS is attributed normally. — Thanks @turnipdabeets for your first contribution 🎉!44e6b14 Fix async streaming responses from the AI wrappers (OpenAI, Anthropic, Gemini) so they support async with as well as async for. Previously, co
async with as well as async for. Previously, consuming a stream via async with (e.g. with pydantic-ai) raised TypeError: 'async_generator' object does not support the asynchronous context manager protocol. — Thanks @turnipdabeets for your first contribution 🎉!643a810 Return empty flag defaults from Client flag helpers when the flags API fails. — Thanks @marandaneto!
034dce2 Make module-level setup no-op when API key is blank — Thanks @marandaneto!
8f6d6c8 Include group context in the $feature_flag_called dedupe key so group-scoped flags fire a separate event for each group a user is evaluated un
$feature_flag_called dedupe key so group-scoped flags fire a separate event for each group a user is evaluated under, instead of being dedup-ed against the first group context the same (distinct_id, flag, response) was seen under. — Thanks @gustavohstrassburger!a44e0be Add async flag definition cache providers — Thanks @dustinbyrne!
0207088 Track OpenAI chat completions parse calls — Thanks @marandaneto!
be9b78b Reject semver values with leading zeros in local flag evaluation. Per semver 2.0.0 §2, numeric identifiers must not include leading zeros — va
1.07.3 are not valid semver and should not match targeting conditions. Both override values and flag values are now validated; invalid inputs raise InconclusiveMatchError so the condition does not match. — Thanks @dmarticus!1574b1b Fix OpenAI usage parsing when token detail fields are null — Thanks @michael-ciridae!
a098aa7 Fix Gemini web search extraction when response candidates are null. — Thanks @marandaneto!
52cd20e feat: add Celery integration and improve PostHog client fork safety — Thanks @parinporecha!
44c1261 Fix scoped context support for async functions — Thanks @marandaneto!
f6c8ede fix: type warning on new_context — Thanks @itsaphel for your first contribution 🎉!
chore: remove unsupported setup-uv input by @marandaneto in https://github.com/PostHog/posthog-python/pull/545
Full Changelog: https://github.com/PostHog/posthog-python/compare/7.13.2...7.14.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →