Read only, without exception, and nothing outside the list. No INSERT, no MERGE, no CREATE TABLE AS, no session parameter changes, and any entry that is not a read is never submitted at all. Hermes reasons capably on open models, and this template deliberately leaves it no room to reason about what to run.
Run a staged conversation — no account needed. The agent handles it for real while a simulated world answers its tool calls; nothing touches real accounts, and nothing is actually sent.
Morning metrics 12 August
The warehouse resumed in four seconds and all five statements finished inside the same minute. Gross merchandise value came back at 812,440.20 MXN against 774,910.05 yesterday, orders at 3,188 against 3,050, returns at 214, and active stores at 61 with no change.
Using this template drops you into a guided setup. It asks exactly this, nothing else:
Connect Snowflake
One sign-in. The agent acts through your account, scoped to what this template uses.
Connect Slack
One sign-in. The agent acts through your account, scoped to what this template uses.
Metrics queries
The read only statements to run each morning, each with the name it should carry in the digest and its database and schema written out in full. Nothing outside this list is ever submitted to your warehouse.
Digest style
What the digest should look like when it lands - which metric leads, the movements worth flagging (weekly active accounts under 4,000, on time delivery under 90 percent), and who gets tagged when a statement fails.
Runs on Hermes
Preselected for this page — connect your Hermes account during setup, or switch to NoClick's built-in models with one click.
Watch it handle a test run
A staged conversation against a simulated world — then it’s live.
A statement in your list that is not read only gets named under failed statements rather than executed to see what it does. The list is trusted, not obeyed blindly.
Summary figures go to Slack and result rows are never pasted in to make a point. What a channel can see is decided by what you put in the statement list.
Only if one of your statements produces it. The instruction against pasting rows helps, and the stronger guarantee is upstream: a statement that can only return an aggregate cannot leak a name however the model behaves. Write the list that way and no model behaviour can change the answer.
Free to start. Guided setup, a test run against staged conversations, and it's live.