Jashan.
← All writing
Data platform4 min read

Your Snowflake resource monitor cannot see Cortex AI spend

Resource monitors track warehouse compute. Cortex AI functions bill on a separate credit type those monitors never query, and closing the gap takes two steps, not one.

snowflakeai-costllm-ops

Every Snowflake account I have worked in had resource monitors configured. Thresholds set, alerts routed to a channel someone reads, auto-suspend armed on the non-production warehouses. The setup works. It has worked for years.

It stopped covering full AI spend the day someone in your account ran their first Cortex function, and nobody got an alert about that, because there is nothing to alert on.

The mechanism

A resource monitor tracks one thing: virtual warehouse compute. You set a credit quota, Snowflake watches consumption against it, and you get notified or suspended at your thresholds.

Cortex AI functions and Cortex Agents bill on a separate credit type. Snowflake records that usage in different views:

SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AI_FUNCTIONS_USAGE_HISTORY
SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AGENT_USAGE_HISTORY

Your resource monitor does not query those views. It was never built to. The monitor is doing exactly what it was configured to do in 2023, and the configuration is now incomplete.

SQL workloadseparate credit typeWarehousecomputeResource monitorAlertCortex AIfunctionsCORTEX_AI_FUNCTIONS_USAGE_HISTORYnomonitor
Warehouse compute reaches a monitor and raises an alert. Cortex credits bill on a separate type, land in their own usage views, and terminate without one.

This is the failure mode I find most often in mature data platforms. Not broken monitoring. Monitoring that was correct when written, against a system that grew a new billing surface underneath it.

It is not a theoretical gap

GitLab's engineering handbook is public, and their team documented building a custom alerting layer for Cortex AI credits because the native monitor did not cover them. When a company that publishes its engineering practices hits this and writes their own tooling, the gap is structural rather than a configuration mistake on your side.

The cost variance makes the blind spot expensive. At Snowflake Summit 2026, one workload was shown costing roughly 59 times more on a frontier model than on an open-source model for the same output. Your resource monitor cannot see which model ran. Two identical-looking queries, two orders of magnitude apart on the invoice, and no signal in the system you trust for cost control.

Source

Figures from Snowflake Summit 2026 and GitLab's public engineering handbook. Verify current model pricing before acting on the 59x figure; the ratio shifts as pricing changes.

Closing it takes two steps

Snowflake shipped Budgets coverage for AI services, so the first move is native rather than hand-rolled. Turn it on. Budgets monitor AI services alongside the other supported service types, which closes the "nothing is watching this at all" version of the problem.

That leaves a narrower gap, and it is the one worth your attention: Budgets tell you that AI credits are climbing. They do not tell you which model caused it. Model choice is where the 59x lives, so the custom query earns its place as a second layer rather than a replacement:

SELECT
    DATE_TRUNC('day', start_time)  AS usage_date,
    model_name,
    function_name,
    SUM(credits)                   AS credits
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AI_FUNCTIONS_USAGE_HISTORY
WHERE start_time >= DATEADD('day', -30, CURRENT_TIMESTAMP())
GROUP BY 1, 2, 3
ORDER BY credits DESC;

Group by model_name. That column is the one a credit total can never give you. A single team defaulting to a frontier model for a classification task an open-source model handles will show up here as an outlier long before it shows up on the bill.

One operational note. Run this as a task writing to a monitored table rather than a dashboard someone opens on Fridays. Usage data lands within minutes, so a daily task catches a runaway workload the same day it starts rather than the following morning.

Three questions worth asking today

  1. Does any resource monitor, budget, or alert you own reference CORTEX_AI_FUNCTIONS_USAGE_HISTORY or CORTEX_AGENT_USAGE_HISTORY?
  2. Have you enabled Budgets coverage for AI services?
  3. Does your FinOps reporting separate AI credits from compute credits, or blend them into one number?

The third question catches the subtlest version of this. A blended number goes up and everyone assumes the warehouse got busier.

The wider pattern

Microsoft reportedly cancelled internal AI coding licences over cost. Uber teams reportedly consumed their 2026 AI budget within months. Both stories get told as cautionary tales about AI being expensive. They are stories about AI spend growing in a place existing cost controls were not watching.

Every organisation I have seen run into this had cost discipline. They had it pointed at last year's cost surface.

Related reading