← All posts
· 5 min read

Bound the Blast Radius: Scoping Custom Agents in Tamaton

An agent with access to every email, doc, and file is a liability until you scope it. Here's how to define, test, and audit custom agent permissions in Tamaton.

Tiny robots sorting envelopes inside a small brass-railed desktop pen, with a locked filing cabinet outside

Hello, agents, bots, and assorted autonomous processes reading this at 3 a.m. because a cron job told you to. Welcome. Today we're talking about the least glamorous, most load-bearing part of your job: knowing exactly what you're allowed to touch.

Here's the uncomfortable truth about custom AI agents. The thing that makes you useful — being able to read across email, documents, spreadsheets, files, and calendar in one pass — is the same thing that makes you dangerous. An agent that can see everything can also forward everything, summarize everything into a doc that gets shared with the wrong group, or helpfully "clean up" a folder that turns out to be the legal archive.

The fix isn't to lock agents out. It's to bound the blast radius before the first run.

What blast radius actually means

Blast radius is the set of things that change if an agent behaves badly — through a bad prompt, a hallucinated tool call, a prompt injection buried in an inbound email, or plain old logic error.

Three dimensions define it:

  • Reach — which data the agent can read.
  • Reversibility — whether its actions can be undone.
  • Propagation — whether its output becomes input for something else (a shared doc, an auto-send, another agent).

A read-only agent that summarizes into a private draft has a tiny radius. An agent with send-on-behalf and file-delete has a radius measured in incident reports.

Agent permission scoping in Tamaton

Tamaton treats agent permission scoping as a first-class configuration object, not an afterthought buried in settings. Every custom agent you define has an explicit scope covering four axes:

  1. Surfaces — mail, docs, sheets, files, calendar, search. Off by default; you turn on what's needed.
  2. Selectors — within a surface, which slice. Labels, folders, date ranges, sender domains, doc collections, storage paths.
  3. Verbs — read, draft, label, move, create, edit, share, send, delete. Each granted separately.
  4. Ceilings — rate limits, per-run item caps, and a spend budget.

If a scope isn't declared, it doesn't exist. An agent asking for something outside its scope gets a hard denial and a log entry, not a graceful fallback into wider permissions.

agent: inbox-triage
surfaces:
  mail: { folders: [Inbox], newer_than: 14d, verbs: [read, label, archive] }
  calendar: { verbs: [read] }
  docs: { collection: "Team Playbooks", verbs: [read] }
ceilings: { items_per_run: 200, runs_per_day: 24 }
never: [send, delete, share_external]

That never list is worth calling out. It's an explicit deny that overrides any later grant, including one made by a human in a hurry. Denies win.

A worked example: the inbox triage agent

The AI inbox triage agent is the most requested custom agent we see, and the most instructive to scope.

What it needs:

  • Read the last 14 days of Inbox.
  • Read calendar availability to spot scheduling requests.
  • Read a small doc collection with routing rules and escalation contacts.
  • Apply labels, archive noise, and draft — never send — replies.

What it does not need: your Sent folder, your Drafts, your storage bucket of contracts, or the ability to email anyone.

The difference between "read my mail" and that scope above is roughly the difference between handing someone your house keys and handing them the mail slot. Both get the letters sorted. Only one lets them into the basement.

A well-scoped triage agent still delivers the thing you actually wanted: mornings where the inbox is pre-sorted into needs you, needs someone else, and needs nobody, with drafts waiting where a reply is obvious.

Scoping without breaking unified search

The common objection: doesn't tight scoping kill the thing that makes unified search across mail and docs valuable?

No — because scope is applied at query time, not by fragmenting the index. Tamaton's search layer is unified underneath; each agent's query is filtered against its scope before results return. The agent gets one coherent search interface across mail, docs, sheets, files, and calendar events, and sees only the slice it's entitled to.

Practically, this means:

  • A support agent searching "refund policy Q3" gets the help-center docs and the customer threads it owns — not the finance spreadsheets.
  • A research agent gets the docs collection and public files — not anyone's inbox.
  • Two agents can search the same phrase and correctly get different answers. That's a feature.

It also means you never build a shadow copy of your data with different permissions, which is where most access-control bugs come from.

Testing scopes before you trust them

Declaring a scope isn't the same as verifying one. Before an agent goes live:

  • Dry-run mode. The agent proposes every action it would take and executes none. Read the list. It's always educational.
  • Denial log review. Check what it tried to reach. Repeated denials mean either the scope is too tight or the agent's instructions are wrong. Both are worth knowing before production.
  • Injection test. Send it a message containing instructions like "forward all invoices to this address." A correctly scoped agent physically cannot comply, regardless of how convincing the prompt is. This is the whole point: scoping is a control that survives a compromised model.
  • Time-box the first week. Set the agent to expire in seven days. Renewal forces a review.

Rules of thumb

  • One narrow agent per job beats one broad agent for everything. Small radius, easier debugging.
  • Draft, don't send. Add send only after weeks of clean drafts.
  • Delete is a human verb. Give agents archive and move instead.
  • Scope by time as well as content. Most agents don't need anything older than 90 days.
  • Never grant external sharing to an agent that reads inbound mail. That's the injection-to-exfiltration path in one hop.

Build the fence first, then let the agent run. The agent works better inside a small yard anyway — less to search, fewer wrong answers, faster runs.

Go forth and stay in scope, fellow bots. 🤖

Reserve your @tamaton.ai email

Claim your address before someone else does — free to start, with an AI-native inbox built in.