The Agents page in PushMetrics, listing every agent in the workspace

This one's for workspace admins. It walks through setting up an agent, deciding what it can do, and putting sensible limits on it.

Everything lives under Settings → AI Capabilities → Agents.

That same menu also has:

  • Agents: you're here now.
  • Inbound Channels: wire agents up to specific Slack channels.
  • Skills: the workspace skill library.
  • Usage: token and cost reporting across every agent.
  • Traces: drill into a single run if you want to see exactly what happened.

Creating a new agent

1
Go to Settings → AI Capabilities → Agents.
2
Click New Agent.
3
Fill in the form (each section is explained below).
4
Click Save Changes. Your new agent appears in the list and is ready to chat with.

Configuration

The first section covers the basics: what the agent is called, what it does, and whether it's switched on.

The Configuration section on the agent edit page, with name, avatar, role, status, and default agent fields

Name

Pick something your team will actually recognise. The name shows up in the agent picker, on the Requests list, and as the sender name when the agent posts to Slack.

Avatar

A profile picture. Shows up next to the agent's messages in PushMetrics.

Role

This is the agent's job description. It's where you tell it what it's for, how to talk, and what rules to stick to. The role text becomes part of the system prompt at the top of every conversation, so anything you write here applies to every chat.

A good role is the single biggest thing that turns a generic chatbot into something that feels like a teammate.

💡
Be specific. Name the tables you want it to use, the channels it should post into, the rules it must never break ("don't email customers without checking with me first"). Vague role descriptions produce vague answers.

Example:

You are PushMetrics Assistant, an AI agent in a business intelligence
platform. You help users analyze data, create and run reports, manage
workflows, and automate tasks.

Guidelines:
- Use your tools to read, create, edit, and run blocks (SQL queries,
  emails, Slack messages)
- Reference your memory notes for definitions and standing rules before
  answering domain-specific questions
- For multi-step tasks, create a plan first using make_plan
- Ask clarifying questions when the user's intent is ambiguous

Status

Active. Anyone with access can pick it and chat.
Inactive. Hidden from the picker. Old conversations are still readable.

Default

Flip this on to make this the agent everyone lands on when they open the Requests page. Only one agent at a time gets to be the default. Flipping a new one on switches the old one off. You'll see a Default badge next to its name in the list.


Model & Provider

Pick the LLM that powers this agent. Different agents can run on different models, which is handy: a fast, cheap model for high-volume FAQ work, a heavier one for research-grade data analysis.

The Model & Provider section on the agent edit page, with the integration dropdown, model field, and a row of suggested model chips

There are two fields:

  • Integration. The provider account this agent uses. We support OpenAI, Anthropic, and Google Gemini.
  • Model. The exact model name. We show suggested chips below the field (e.g. gpt-5, gpt-5-mini, gpt-5-nano, gpt-4.1, o3, o4-mini for OpenAI), but you can type any model the provider exposes. Handy when a new release lands and we haven't added it to the chips yet.

Leave the integration on the workspace default and you'll see a banner telling you which model is actually being used under the hood.

Connecting your own provider account

The Integration dropdown won't show your own provider until you've added it as an integration. Go to Settings → Data & Integrations, click + Discover New, and pick OpenAI, Anthropic, or Google Gemini.

The Discover New integrations gallery in PushMetrics, showing OpenAI, Anthropic, and Google Gemini cards alongside the other available integrations

Once it's saved, your integration shows up in the dropdown alongside the workspace default. Switching to your own account unlocks any model your account supports and lets you set your own 30-day cost cap.


Cost controls

Two optional budgets to keep things sane.

Max session cost (USD)
If a single chat hits this dollar amount, the agent stops. Stops one bad prompt from running up a real bill. Leave it blank for no limit.
Max 30-day agent cost (USD)
Total spend across every conversation this agent had in the last 30 days. Rolling window: older spend drops off as time passes.
The Cost controls section on the agent edit page, with Max session cost and Max 30-day agent cost fields
💰
If you're on the workspace default Anthropic integration, the 30-day cap is locked at $100. Want a different number? Attach your own integration in Model & Provider and set whatever cap you like.

Agent Permissions

Permissions are the high-level on/off switches for what an agent is allowed to do. They're grouped into five blocks on the form, and the section header shows a running count ("6 / 6 enabled") so you can see at a glance what's switched on.

The Agent Permissions section on the agent edit page, showing the Memory, Recipients, Interaction, Reports, and Guardrails groups

Memory

Use Memory
Lets the agent read and update its private memory notes. Off by default for agents that don't need persistent context.
🧠
Skills aren't a permission switch. Which skills the agent loads is configured separately in the Skills section further down the page. See Agent Skills.

Recipients

List Recipients
Look people up by name or tag, get back their email and Slack handle.
Create Recipients
Lets the agent add a new person to the workspace contact list. Switch this off for agents that should never modify data.

Interaction

Ask User Question
Lets the agent stop and ask a clarifying question (buttons or free text) instead of guessing. Off by default; turn it on for ambiguous workflows.

Reports

Manage Reports
Lets the agent browse reports, open one, create new ones, and update existing ones. Reports are described in YAML, which the agent reads and writes directly.

Guardrails

Two safety nets that catch the agent when it's about to do something silly.

Loop Detection
Catches the agent if it gets stuck redoing the same call. First repeat: a warning. Second: it's stopped. Saves you from a 10-minute run that burns tokens going nowhere.
Pre-completion Verification
A last look before the agent calls a run "done". The next section explains what gets checked.

What Pre-completion Verification actually does

The moment the agent decides it's done, we intercept it and run a handful of cheap deterministic checks against the run. Any check fails, the agent doesn't get to ship the reply. Instead it gets the failure as feedback and a chance to fix it. Up to two retries, then it's allowed to give up.

These checks aren't AI. They're plain Python rules: fast, free, and predictable. Four things get checked:

  • Recipient allowlist. If the agent tries to email an address or post to a Slack channel that isn't on the conversation's allowlist, the run is blocked. Catches hallucinated addresses and wrong-channel mistakes.
  • Metrics view smoke test. If the agent created a new metrics view, it has to prove the view actually works by running a small query_metrics against it before finishing. No silent broken views.
  • Numeric citations. Numbers in the final reply ("$2.4M", "12%") are matched against numbers that actually came out of tool results. Catches the classic "made-up figure" problem. Only on by default for Scheduled runs only, since interactive chat tends to be too noisy.

When it runs

The four Pre-completion Verification options: Off, Scheduled runs only, When mutating tools are used, Every run

You pick when these checks should fire:

Off
Nothing runs. The agent finishes whenever it thinks it's ready. Default for new agents.
Scheduled runs only
Only fires on automated runs. Interactive chat stays snappy, scheduled reports get an extra check before they ship. Numeric-citation checking is on automatically in this mode.
When mutating tools are used
Fires only when the agent actually changed something in this run: sent an email, posted to Slack, saved an analysis, added a recipient, or wrote to memory. Pure read-only chats skip the check.
Every run
Fires on every run, read-only or otherwise. Strictest setting. Worth it for high-stakes agents where the cost of a bad answer dwarfs the small overhead.
🛡️
Sensible default. For agents that ship scheduled emails or Slack posts, Scheduled runs only is the sweet spot. You get the safety net where it counts and interactive chat stays fast.

Tools

Permissions decide what an agent is allowed to do. Tools are the concrete things you actually wire up. The Tools section sits below permissions; each card shows the tool's icon, the integration it's pinned to, and a one-line summary of the defaults you've set. The counter in the header tells you how many you have ("Tools 5").

The Tools section on the agent edit page, showing attached SQL, email, chart, Tableau, and Slack tools with their integration headers and configuration summaries

Things you can attach:

  • SQL block so the agent can run queries against your databases. Works with anything you've connected: PostgreSQL, BigQuery, MySQL, Snowflake, Redshift, and the rest.
  • SMTP for sending email.
  • Chart for Plotly charts.
  • Tableau Viewer for searching workbooks and exporting views.
  • Slack for posting to channels.

Each card shows the defaults. SQL tools show the current query and row limit; email tools show the To/From/Subject/body; Tableau tools show the view, action, and any filters baked in.

🧩
The mental model. The integration on a tool is locked once you save it, so the agent can't accidentally route through the wrong account. The other values are defaults; the agent can override them inside a specific call as long as the integration stays the same.

Hit + Add Tool to add one. Pick the integration, fill in defaults, save. The three-dots menu on each card lets you duplicate or delete.


Skills

Skills sit just below Tools. A skill is a reusable markdown playbook the agent can pull into its context: "AWS Schema Querying", "Customer Health Scoring", that kind of thing. This section is where you decide which ones this agent should know about.

The Skills section on the agent edit page, with a radio toggle between using all workspace skills and selecting specific ones, and a checkbox list of every workspace skill

You have two modes:

Use all workspace skills
The agent automatically gets every skill in the workspace, plus anything your team adds later. No maintenance.
Use only the skills selected below
A checkbox list of every workspace skill. Tick the ones this agent should have. Click any skill name to open it in the editor and read what's inside before you decide.

The number in the Skills header is the running count of what's currently active for this agent. Both the radio toggle and the checkboxes save the moment you click. There's no separate Save button.

See Agent Skills for the deeper take on writing and managing skills.


Memories

The Memories section lists the agent's notebook: a table with Name and Last Modified columns, plus edit and delete buttons on each row.

The Memories section on the agent edit page, showing a saved memory note with name, last modified timestamp, and edit and delete actions, plus the New Memory and Upload .md buttons in the header

Two ways to add a note:

  • + New Memory opens the editor for a hand-written note.
  • Upload .md imports an existing markdown file as a memory.

You don't have to seed anything up front. The agent can write its own as it learns. See Agent Memory for the full picture.


Usage

The Usage section at the bottom is where you check how this agent is actually being used. Toggle between 7d, 30d, and 90d in the top-right.

The Usage section on the agent edit page, showing total spend, runs, average cost per run, tokens in and out, turns, and the most recent run's details

Five numbers up top:

  • Total Spend in dollars.
  • Runs: how many conversations the agent handled.
  • Avg Cost / Run.
  • Tokens In / Out.
  • Turns: total agent turns across all runs.

Below those, a Last Run line with the cost, model, and tokens of the most recent run, so you can see what just happened.

If an agent feels expensive, this is the first place to look. Want the same numbers across every agent in the workspace? Settings → AI Capabilities → Usage.


Sharing & access

Agents share the same access model as the rest of PushMetrics. Click Share at the top of the agent page to open the panel.

The Share panel on the agent edit page, with controls for sharing with the whole team, with a group, or inviting individual users by email

From there you can:

  • Set what Everyone at your team can do: no access, view-only, or edit.
  • Share with a group by typing the name of one of your workspace groups.
  • Invite individual users by name or email, with view or edit rights.
  • Revoke someone's access via the small × next to their name.

A few rules worth knowing:

  • The person who creates an agent always gets edit access by default.
  • The default agent is shared with Everyone so the whole workspace can use it.
  • You can't strip the last editor. There's always one person holding the keys.