Skip to content

chore(deps): bump posthog from 7.35.4 to 7.44.2 - #2294

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/posthog-7.44.2
Open

chore(deps): bump posthog from 7.35.4 to 7.44.2#2294
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/posthog-7.44.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 1, 2026

Copy link
Copy Markdown
Contributor

Bumps posthog from 7.35.4 to 7.44.2.

Release notes

Sourced from posthog's releases.

posthog-v7.44.2

Patch changes

  • fc7e043 Honor default_cache_ttl_seconds=0 in AI prompts so callers can disable default prompt caching. — Thanks @​ckarnell for your first contribution 🎉!

posthog-v7.44.1

Patch changes

  • 0e70f0c Align local is_set and is_not_set evaluation with partial property context. — Thanks @​marandaneto!

posthog-v7.44.0

Minor changes

  • 9a1d137 Add an opt-in capture_trace_context client option. When enabled, and a valid OpenTelemetry span is active at capture time, its trace and span IDs are attached to events captured with capture() and capture_ai() as $trace_id and $span_id, so they can be correlated with backend traces. Disabled by default, and explicit $trace_id/$span_id properties take precedence. — Thanks @​DanielVisca!

posthog-v7.43.1

Patch changes

  • 8046114 Return an empty feature flag snapshot without evaluation when feature flag keys are explicitly empty. — Thanks @​marandaneto!

posthog-v7.43.0

Minor changes

  • 35220f3 Fall back to remote evaluation when a requested flag is missing from local definitions. This changes the previous behavior where the key was omitted without a request. — Thanks @​marandaneto!

posthog-v7.42.1

Patch changes

  • c55c9b2 MCP analytics now surfaces the previously-silent case where the stateless session mint middleware (PostHogMcpStatelessSessionMiddleware) never attached — the trap where an ASGI app is built or mounted before instrument() runs, so autowiring can't retrofit it and every session falls back to a fragmented per-process id. instrument() warns when streamable_http_app() was already called before it ran, and a one-time warning fires the first time a tool call arrives over streamable HTTP and the session still has to come from process memory. Both go to the posthog.mcp standard-library logger as well as the MCPAnalyticsOptions(logger=...) sink, so they are visible without opting in — silence them with logging.getLogger("posthog.mcp").setLevel(logging.ERROR). Neither fires for stdio, a correctly-wired server, a conversation-anchored session, or the SSE transport (which the mint cannot fix). Documented in the new posthog/mcp/README.md. — Thanks @​posthog[bot]!

posthog-v7.42.0

Minor changes

  • f483bab feat(mcp): capture $mcp_client_user_agent and $mcp_vendor_client so MCP usage can be attributed to a product surface. clientInfo.name only says which client library is calling — Anthropic reports claude-code from the CLI, the Agent SDK, the VS Code extension and the desktop app alike — so $mcp_client_name collapses every surface into one bucket and the harness breakdown reads 100% "Other" for Python-backed servers. The distinguishing detail lives in the User-Agent parenthetical (claude-code/2.1.0 (cli) vs (sdk-ts)) and in vendor headers like x-anthropic-client. Both are captured raw and classified at query time, so labels can improve without an SDK release. HTTP transports only: stdio and in-memory servers carry no headers and their events are unchanged. Custom dispatchers pass their own via new client_user_agent / vendor_client arguments on every PostHogMCP.capture_* method. Parity with @posthog/mcp. — Thanks @​gesh!

posthog-v7.41.0

Minor changes

  • 2863909 feat(mcp): emit $mcp_error_message and $mcp_error_type on failed MCP events. The reason a tool call failed previously lived only on the sibling $exception event, so PostHog's failures view — which reads the scalars off the primary event — showed empty error rows for every Python-backed MCP server, and switching off enable_exception_autocapture removed the reason entirely. Both values are read from the same $exception_list the sibling carries, so the two surfaces can never disagree, and the message inherits the existing 2048-character cap. PostHogMCP.capture_tool_call() and capture_tools_list() take a new optional error_type for custom dispatchers that want a coarse category ("validation", "timeout") instead of the thrown class name. Exception messages are also redacted before they leave — previously nothing sanitized the error payload, so the $exception sibling had been shipping them raw. Credential-looking words go through the SDK's own detector (entropy, known key formats, PEM markers), per word, so a message like auth failed for sk-... keeps its diagnostic text and loses only the key. Parity with @posthog/mcp, which sanitizes exception values the same way. — Thanks @​gesh!

posthog-v7.40.0

Minor changes

  • b0ab12c feat(mcp): support MCP Python SDK v2 and bring posthog.mcp to parity with the TypeScript SDK (@posthog/mcp). Most of this reaches SDK 1.x servers too — the parity work is not v2-only.

    MCP SDK v2 / spec 2026-07-28. instrument() now wraps mcp.server.mcpserver.MCPServer (the renamed FastMCP) and the v2 low-level Server (constructor-injected handlers, string-keyed registry, late add_request_handler registrations included), capturing tool calls, tools/list, errors, intent, client identity, and $mcp_protocol_version on both protocol eras — the legacy handshake and the stateless 2026-07-28 envelope, decided per request. Previously instrument() raised ImportError on mcp>=2 and took the host application down with it; it now degrades to a logged no-op on any unsupported or unrecognized SDK.

    Cross-SDK parity (SDK 1.x and 2.x alike). Conversation-anchored sessions land as the cross-pod correlation the stateless era needs: with enable_conversation_id, $session_id derives deterministically from the agent-echoed conversation_id (new export derive_session_id_from_conversation, byte-compatible with @posthog/mcp). Only a handle the SDK could have minted (a uuidv7) anchors a session, so two callers inventing the same id can no longer be merged. The handle is delivered over both channels a tool result has — a content text block carrying it as plain JSON data on the minting response (an imperative server sentence inside a tool result is prompt-injection-shaped, and a client that strips it silently breaks the feature), and an _mcp_instructions key declared on the tool's output schema and mirrored into structuredContent on every response. That second channel is what makes the feature work at all for tools with structured output: clients that read structuredContent never render content, so the agent had no handle to echo (0% echo rate measured against Claude Code before the mirror). The prompt-back now rides errored results too, so a failure on a conversation's first call doesn't split the retry into a new session. The session is resolved only once the handle's fate is known, so the call that mints a handle joins the same session as the calls that echo it — while a handle that could not be delivered anchors nothing, rather than stranding events in a conversation nobody holds. Host callbacks (identify, intent_fallback, event_properties) receive the SDK's own per-request context as extra["ctx"] identically on both majors, with a new exported get_request_headers(extra) to read HTTP headers off it — the underlying shape differs per major, and a hand-rolled read that works on one silently returns nothing on the other, sending every event out anonymous.

    Fixes affecting existing SDK 1.x users. Analytics could break a tool call in three ways, each now fixed and regression-tested: the SDK's tool cache is rebuilt from an internal listing pass we skipped injecting on, so after any call to an unlisted tool name a strict schema rejected either the analytics parameters we advertise (Input validation error) or the conversation key we write (Output validation error); the conversation handle was written into the caller's result object in place, so a tool returning a shared or cached result served one conversation's handle to every later caller; and on jlowin's FastMCP the advertised schema marked context required while the adapter strips it before validation, failing every call under strict_input_validation=True. Two behavioural changes come with the parity work: an invented (non-uuidv7) conversation_id echo is replaced with a fresh handle rather than trusted, and minted prompt-backs are now appended to errored results. — Thanks @​gesh!

... (truncated)

Commits
  • 953ea59 chore: Release v7.44.2 [skip ci]
  • fc7e043 fix: Honor a default_cache_ttl_seconds of 0 in Prompts (#873)
  • 5e80659 Update generated references
  • 645f4d3 chore: Release v7.44.1 [skip ci]
  • 0e70f0c fix(flags): align presence operator semantics (#897)
  • 5eb886d Update generated references
  • 2ab1fe5 chore: Release v7.44.0 [skip ci]
  • 9a1d137 chore: add changeset for capture_trace_context (#896)
  • 550f5b5 feat: opt-in OTel trace/span IDs on regular capture() via capture_trace_conte...
  • b72fed3 Update generated references
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [posthog](https://github.com/posthog/posthog-python) from 7.35.4 to 7.44.2.
- [Release notes](https://github.com/posthog/posthog-python/releases)
- [Changelog](https://github.com/PostHog/posthog-python/blob/main/CHANGELOG.md)
- [Commits](PostHog/posthog-python@posthog-v7.35.4...posthog-v7.44.2)

---
updated-dependencies:
- dependency-name: posthog
  dependency-version: 7.44.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Sep 1, 2026
@claude

claude Bot commented Sep 1, 2026

Copy link
Copy Markdown

Review

This is a Dependabot version bump only — the entire diff is one line in requirements/base.txt:

-posthog==7.35.4
+posthog==7.44.2

No application code changes.

Compatibility check: I reviewed how posthog is actually used in this codebase (config/telemetry.py's record_event, wired up in opencontractserver/users/apps.py) — it's a single Posthog(...) client instantiation with a plain client.capture(distinct_id=..., event=..., properties=...) call. None of the behavioral changes across 7.36–7.44 apply here:

  • MCP instrumentation additions ($mcp_client_user_agent, conversation-anchored sessions, SDK v2 support) — not used, no MCP server instrumented via posthog in this repo.
  • Feature-flag semantic changes (is_set/is_not_set alignment, empty-flag-key fallback behavior) — no feature flags are read through this client.
  • New capture_trace_context opt-in for OTel span correlation — not enabled, and off by default.
  • Exception-message redaction in MCP capture paths — not applicable, no exceptions are captured via this integration.

Verdict: Low-risk, routine dependency bump. No code, test, or doc changes are needed as a result. Safe to merge if CI passes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants