Finding Replay For Issue

by PostHog469d1773e9cbNo licenseListed Oct 8, 2026Updated Oct 8, 2026

Finds the most informative session recording linked to an error tracking issue. Use when a user has an error tracking issue ID and wants to watch a replay showing what the user was doing when the error occurred. Ranks linked sessions by recency, activity score, and journey completeness, then summarizes the pre-error context. Replaces blind session picking from potentially hundreds of linked recordings.

Instructions only

Finding the best replay for an error tracking issue

When a user says "show me a replay for this error" or "find a recording for issue X", the goal isn't just any linked session — it's the one that best shows what led to the error. Popular issues can have hundreds of linked sessions, and most are crash-only fragments or duplicate occurrences. This skill picks the most useful one.

Available tools

ToolPurpose
posthog:query-error-tracking-issueGet issue details (fingerprint, status, volume)
posthog:execute-sqlQuery exception events to find linked sessions
posthog:query-session-recordings-listFetch recording metadata for candidate sessions
posthog:session-recording-getGet full details for the selected recording
posthog:vision-observations-listCheck for an existing Replay Vision AI summary
posthog:vision-scanners-listFind summarizer scanners (scanner_type=summarizer)
posthog:vision-scanners-scan-sessionRun a summarizer scanner on the recording (optional, slow)

Workflow

Step 1 — Get the issue details

Fetch the error tracking issue to understand what you're looking for:

json
posthog:query-error-tracking-issue{  "issueId": "<issue_id>"}

Note the issue's fingerprint, name, and description — you'll need the fingerprint to find linked sessions.

Step 2 — Find sessions with this error

Query exception events to get session IDs where this error occurred. Order by recency and include basic context:

sql
posthog:execute-sqlSELECT    $session_id AS session_id,    count() AS occurrences,    min(timestamp) AS first_seen,    max(timestamp) AS last_seen,    any(properties.$current_url) AS urlFROM eventsWHERE event = '$exception'    AND properties.$exception_fingerprint = '<fingerprint>'    AND $session_id IS NOT NULL    AND timestamp > now() - INTERVAL 30 DAYGROUP BY session_idORDER BY last_seen DESCLIMIT 20

This gives you up to 20 candidate sessions. More candidates means better selection.

Step 3 — Rank the candidates

Fetch recording metadata for the candidate sessions to rank them:

json
posthog:query-session-recordings-list{  "session_ids": ["<id1>", "<id2>", "<id3>", ...],  "date_from": "-30d"}

Pick the best recording by filtering out bad candidates, then ranking what's left:

Filter out:

  • Sessions under 10 seconds (crash-only fragments, no pre-error context)
  • Sessions over 1 hour (too much data to load, error is a needle in a haystack)

Rank by:

  1. Sweet-spot duration — 2-15 minutes is ideal. Long enough to show the user's journey before the error, short enough to be practical to watch or summarize.
  2. Active time ratio — compare active_seconds to recording_duration. A 20-minute recording with 10 seconds of activity is mostly idle tabs — the user walked away. Prefer sessions where active_seconds / recording_duration is above 0.3 (30%).
  3. Activity score — higher activity_score means the user was actively interacting, not idle. More interesting to watch.
  4. Recency — more recent sessions reflect current app behavior.

Step 4 — Present the finding

Fetch full details for the selected recording:

json
posthog:session-recording-get{  "id": "<best_recording_id>"}

Present to the user:

  • The recording with a link to watch it
  • Why this one — briefly explain the selection ("longest session with the error, user was browsing 3 pages before hitting it")
  • Pre-error context — what pages the user visited and key actions before the exception, derived from the events query in step 2 (the url and first_seen columns)
  • Error frequency — how many times the error occurred in this session

Optional: AI summary via Replay Vision

If the user wants a narrative summary without watching, use Replay Vision — "check-then-scan", since a scanner can only observe a given session once.

  1. Check for an existing summary on the selected recording:

    json
    posthog:vision-observations-list{  "session_id": "<best_recording_id>"}

    If an observation has scanner_snapshot.scanner_type summarizer and status succeeded, read scanner_result.model_output (title, summary, intent, outcome, friction_points, keywords) — done.

  2. Find a summarizer scanner if none exists:

    json
    posthog:vision-scanners-list{  "scanner_type": "summarizer"}

    One → use it. More than one → ask the user which (show name + prompt). None → offer to create one via the creating-replay-vision-scanners skill.

  3. Scan the recording with the chosen scanner (async, several minutes):

    json
    posthog:vision-scanners-scan-session{  "id": "<scanner_id>",  "session_id": "<best_recording_id>"}
  4. Retrieve by polling vision-observations-list until succeeded.

Tips

  • If all candidate sessions are very short (<10 seconds), the error likely crashes the page immediately. Note this — it's useful context even without a long replay.
  • When the issue has very few linked sessions (<3), skip the ranking and just present what's available with a note about the small sample.
  • If $session_id is null on many exception events, session replay may not be enabled for the affected users. Mention this as a possible gap.
  • Replay Vision has no per-call focus parameter — a summarizer scanner's focus comes from its own prompt. For error-focused summaries, prefer (or create) a summarizer scanner whose prompt targets error/exception context rather than the whole session.

Related skills

  • investigating-error-issue — the quantitative side: volume, breakdowns, and stack traces for the same issue
  • investigating-replay — deep-dive one of the linked sessions
  • diagnosing-missing-recordings — when exception events have no $session_id or the linked recordings are gone

Source and attribution

Source:PostHog/ai-plugininskills/finding-replay-for-issueat commit469d177

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal

More from PostHog/ai-plugin

Writing Simplified Technical English

PostHog

Applies ASD-STE100 simplified technical English rules to make agent-written prose unambiguous and actionable.

Writing & ContentOct 8, 2026

Working With Task Comments

PostHog

Reads and interprets comments on PostHog tasks, artifacts, and canvases through the PostHog MCP exec dispatcher.

Productivity & WorkflowOct 8, 2026

Working With Skills

PostHog

Guides agents in using PostHog's skill-* MCP tools to discover, read, create, update, and refactor skills.

AI & AgentsOct 8, 2026

Working With Scouts

PostHog

Operating manual for delegating watching jobs to PostHog Signals scouts, acting on their reports, and steering the fleet over time.

AI & AgentsOct 8, 2026

Validating And Publishing Canvases

PostHog

Validate and publish a canvas source project safely: the source-project shape, declared capabilities, reading the current version pointer, iterating on validation diagnostics, guarded publishing with expected_current_version_id, staging a draft build and promoting it, waiting out the queued build, and recovering from a 409 version_conflict or a 429 capacity limit without overwriting concurrent work. Use whenever a canvas edit is ready to save, a draft build is wanted, a canvas publish or build returns diagnostics or a conflict, or a task needs to understand canvas version history.

Awaiting classificationOct 8, 2026

Understanding Billing Usage

PostHog

Explains PostHog billing usage and spend from the customer's visible Billing MCP tools. Use when the user asks why usage or spend is high, which product or project is driving usage, what a usage type means, how to reduce usage, what changed over time, why they got a usage change alert, or whether a spike/drop alert was real or noisy. Also use before product-specific analytics skills when the user names a billable PostHog product metric such as events, recordings, feature flag requests, exceptions, survey responses, synced rows, logs, AI events, AI credits, or Inbox credits. Starts from Billing usage/spend tools, then routes to customer-visible product MCP surfaces for deeper investigation.

Awaiting classificationOct 8, 2026