Troubleshooting and limitations
Contents
The semantic layer is in alpha, enabled per organization for a small group of customers. There's no dedicated UI yet – you work with it through MCP tools and SQL. Tool names and behavior may change between releases. Found a bug, or want access? Contact support and mention the semantic layer alpha.
Have a question? Ask PostHog AI
I don't see the semantic layer tools in my MCP client
The alpha is enabled per organization. If the data-catalog-* tools are missing:
- Confirm your organization is in the alpha – contact support to request access.
- Reconnect or restart your MCP client after enablement; clients cache the tool list.
- Check your API key has the
data_catalogscope.
Similarly, if system.information_schema.metrics raises "Unknown table", the alpha isn't enabled for your organization yet.
My agent can't approve a metric
Three causes, in order of likelihood:
- Missing scope. Approval needs
data_catalog_approvalon the API key –data_catalogalone can propose but never promote. This split is deliberate; see governance. - The metric is drifted. Approval is blocked while
is_driftedis true. Resolve the drift first (below), then approve. - You didn't type "confirm". Approval only executes after you reply with the literal word "confirm". The agent can't do it for you – that's the point.
Why is my metric drifted?
The metric was created from an insight, and that insight's query has changed since the snapshot (or the insight was deleted). To resolve:
- Keep the new definition: update the metric to re-snapshot the insight's current query, then re-approve.
- Keep the old definition: unlink the metric from the insight (set
source_insight_short_idto null) so it stands on its own definition, then re-approve.
Compare the metric's compiled_query (from a run) with the insight's current query to see what changed. Until it's re-approved, results are labeled noncanonical.
I deleted a metric but can't reuse the name
By design. Names are write-once and stay reserved after deletion, so a stored reference to a name can never silently point at a different definition. Pick a new name.
An agent keeps proposing a join we don't want
Reject the proposal with data-catalog-relationship-reject. Rejection persists forever and the pair is never re-proposed – in either direction.
The flip side: rejection has no undo in the alpha. If you rejected a proposal by mistake and need the join anyway, create it directly as a data warehouse join – the catalog's rejection only suppresses re-proposals, not manual joins.
Where's the UI?
There isn't one yet. During the alpha the semantic layer is MCP tools and SQL only – no catalog page in the app. Also worth knowing:
- Tool names and behavior may change between releases
- The alpha is enabled per organization, not per user or project
last_run_atis updated at most every 30 minutes, so treat it as approximate
Feedback on any of this shapes what the beta looks like – tell us what's missing.