Checking when something was deployed
SkillCloud & infraDetermine when a PostHog code change reached a given environment by reading the hidden GIT deploy annotations in the project and correlating them with the merge commit on GitHub. Use when PostHog staff ask "when was X deployed", "is my change live in the US/EU yet", "has my PR shipped", "did the fix roll out to prod-us", or otherwise want to know whether/when a commit, PR, or feature went out to a region. Do not answer deploy-timing questions from event/data volume alone, that only shows when data changed, not when code shipped.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Checking when something was deployed skill
What this skill tells your AI
The instructions your AI receives, as published by posthog/skills in skills/omnibus/checking-deploy-timing/SKILL.md and read by ahel’s review.
PostHog's CI writes a deploy marker into the project as an annotation every time a commit
ships to an environment. These annotations are hidden_in_user_interface: true, so they don't
show in the UI and are easy to forget — but they are the source of truth for "when did this go
out". Always check them when staff ask about deploy timing, rather than inferring from when a
metric or event volume changed (that conflates a capture change with a query/code change).
The deploy annotations
List them with posthog:annotations-list using {"search": "deploy"}. Each deploy marker looks like:
content:Deployed PostHog/posthog@<sha> to <env>— env isprod-us,prod-eu, ordevcreation_type:GITscope:organizationhidden_in_user_interface:truedate_marker: the deploy time (UTC)
They're returned newest-first; paginate with offset if you need to go further back.
Workflow
-
Find the change's merge commit. Identify the PR (e.g.
gh search prs --repo PostHog/posthog --author <user> "<keywords>"), thengh pr view <n> --repo PostHog/posthog --json number,title,mergedAt,mergeCommit,state. Note the merge commit SHA andmergedAt. -
List the target environment's deploys around the merge, oldest-first. Match the region the user asked about (
prod-usfor "the US",prod-eufor "the EU"). The annotations come back newest-first, so don't just take the first... to <env>match on page 1 — that's the most recent deploy. Paginate (withoffset) until you reach markers aroundmergedAt, then consider that environment's deploys in chronological order, starting with the first whosedate_markeris aftermergedAt. Check them earliest-first in step 3. -
Confirm the deployed commit actually contains the merge commit. A later
date_markeris necessary but not sufficient — a deploy can fire just after the merge yet build a slightly older commit. Verify ancestry:gh api repos/PostHog/posthog/compare/<merge_sha>...<deployed_sha> --jq '{status,ahead_by,behind_by}'behind_by: 0withstatusaheadoridenticalmeans the deployed commit includes the merge — that's your answer. Ifbehind_by > 0, this deploy predates the change; move to the next newer deploy of that environment (the next one chronologically) and re-check. The first deploy that passes is the one that shipped the change. -
Report the deploy time (and PR/commit) for the region asked about. Mention other regions if relevant —
prod-usandprod-euusually deploy minutes apart but not simultaneously.
Notes
- "Live in the US" =
prod-us; "the EU" =prod-eu.devis the internal staging environment, not customer-facing. - For a query-runner / read-path change, the new behaviour applies retroactively to all data once deployed — so you can't time it from event volume, only from the deploy annotation. For a capture change, event volume for the new property is a secondary cross-check, but the annotation is still the authoritative deploy time.
Signals
- GitHub stars
- 62
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
checking-deploy-timing- Source
- github.com/posthog/skills