Modes & Approvals
Modes control how actions execute. Town provides multiple layers of control — from routine-level defaults to per-tool settings to the settings for each thread.
Thread settings
When chatting with your assistant in a thread, the thread’s access setting controls who can use your assistant there and how often it checks with you. Open it from the shield button in the message box.
| Setting | What it does |
|---|---|
| Auto | Anyone in the thread can ask your assistant for help. It goes ahead with what you asked for, and only asks for your approval when a request is potentially unsafe, such as an action that goes beyond what you asked or that someone else requested. |
| Balanced | Only you can ask your assistant for help. It only asks for your approval when a request is potentially unsafe. Shown in group threads. |
| Strict | Only you can ask your assistant for help. It always asks for your approval before sending, changing, or sharing anything. |
Setting your defaults
To change your default approval mode, go to Settings → General and scroll to Permissions and access.
| Setting | Applies to | Options | Starts as |
|---|---|---|---|
| Approval default | Threads with just you and your Townie. If set to Strict, your Townie also asks for approval in group threads you’re added to, unless you’ve changed that thread’s setting yourself | Auto or Strict | Auto |
| Threads you create | Group threads you start | Auto, Balanced, or Strict | Auto |
| Only Trusted contacts | Group threads you’re added to where everyone else is one of your Trusted contacts | Auto, Balanced, or Strict | Auto |
| Someone isn’t a Trusted contact | Group threads you’re added to where at least one other person isn’t one of your Trusted contacts | Auto, Balanced, or Strict | Balanced |
Group thread defaults are applied when a thread starts. In a group thread you were added to, the Only Trusted contacts or Someone isn’t a Trusted contact setting can switch when someone joins. For example, if someone who isn’t a Trusted contact joins, the thread moves to your Someone isn’t a Trusted contact setting, and the thread shows a notice. This only happens if you haven’t changed that thread’s setting yourself. To change the setting in a thread that already exists, use the shield button in its message box. If Town can’t check who is in a new group thread, it starts that thread on Strict to be safe.
Some work accounts start with stricter defaults. Any setting you choose here still applies.
When you’re asked to approve
When your assistant wants to take an action, you have these options:
| Option | What it does |
|---|---|
| Allow | Approve just this one action |
| Reject | Skip this action |
| Switch to Auto | Approve this action and switch the thread to Auto, so your assistant only asks when a request is potentially unsafe. Appears on most approval cards in Balanced or Strict threads. |
Routine modes
Every routine has a default mode that controls how it handles actions. You can change it under Execution mode in the routine’s Tools and permissions panel. Team Routines always run in Auto mode.
Auto mode
Actions execute immediately without asking for approval.
What happens:
- Reading actions run immediately
- Actions that make changes also run immediately
- No approval requests sent
- Fastest execution
Best for:
- Well-tested, trusted routines
- Low-risk actions (labeling, archiving)
- High-frequency triggers (processing every incoming email)
- Routines that only report information to you
Auto mode can affect many emails quickly. Use it for low-risk actions and well-tested routines.
Human in the Loop mode
Actions that other people would see wait for your approval before executing.
What happens:
- Reading actions run immediately
- Changes only you see — like labels, archiving, and drafts — also run immediately
- Actions other people would see — like sending email to others, calendar invites, and Slack messages — create approval requests
- You receive notifications with approve/reject options
- Those actions only execute after you approve them
Best for:
- Routines that send emails or messages
- High-stakes automations
- Routines that access external communication tools
How approvals flow:
Per-tool permission levels
You can override the mode for individual tools within a routine. This gives you fine-grained control.
Example: You want a routine that automatically labels and archives emails, but always asks before sending an email. Set the routine to Auto mode, then override the email-sending tool to require approval.
This way, labeling and archiving happen instantly, while sending emails always waits for your OK.
Use per-tool settings to create nuanced permission models. For example, allow all reading and organizing actions but require approval for any external communication.
Where to find these settings
Per-tool permissions live in the Tools and permissions panel:
- For your assistant: go to Assistant Settings → Capabilities & behavior → Tools and permissions.
- For a routine: open the routine and go to its Tools and permissions panel.
The panel lists every tool the assistant (or routine) can use, grouped by category — Email, Calendar, Google Drive, Web Search, Code, and so on. Select any tool to set its Approval mode:
| Approval mode | What it does |
|---|---|
| Auto | Use the default mode for the routine (or assistant). The tool follows whatever the overall setting is. |
| Ask each time | Require your approval before each use. |
| Always allow | Run without asking. The tool executes immediately every time. |

Tools that can send data outside Town are flagged when a combination looks risky — for example, when the same routine can read private data, take in untrusted input, and send externally. Town surfaces these “unsafe combinations” when you save, so you can decide deliberately. See the lethal trifecta for the full explanation.
Making your assistant more autonomous
If you find yourself approving the same actions over and over, set the tools you trust to Always allow. This is the most direct way to give your assistant more autonomy: it stops asking for those specific tools and just runs them.
A common setup:
- Set low-risk tools — web search, reading email, viewing your calendar, creating drafts — to Always allow so the assistant moves fast.
- Keep anything that sends externally — sending email, calendar invites, Slack messages — on Ask each time until you’re confident.
Always allow means no approval prompt. Reserve it for tools and routines you trust. For anything that contacts other people, leave Ask each time in place — sent messages can’t be unsent.
Meetings with other people use the Scheduling tools
When a meeting involves other people and your assistant is already working out a time across everyone’s calendars, it doesn’t book with the plain calendar tool. Town deliberately steers that booking to the scheduling engine, which re-checks the time against everyone’s availability before writing the event — so the invite is sent by Commit Scheduling Session, not Create Calendar Event.
That means setting Create Calendar Event to Always allow does not stop approval prompts for those invites. To let your assistant book and send them without asking:
- Go to Assistant Settings → Capabilities & behavior → Tools and permissions.
- Open the Scheduling category.
- Set Commit Scheduling Session to Always allow.
Committing a scheduling session invites every participant on it. Set it to Always allow only if you’re comfortable with invitations going out without your review.
What counts as a “safe” action?
In the per-chat permissions menu, choosing Allow safe actions (shown as Always allow safe actions in some chats) lets your assistant act without approval cards. The exception is a chat that combines private data, untrusted input, and a way to send things out: there, actions that can communicate externally still ask first. See the lethal trifecta.
Always approved automatically:
- Reading and searching emails
- Adding and removing labels
- Archiving and moving emails
- Creating drafts
- Viewing calendar events
- Reading files
Asks first when the chat combines all three (external communication):
- Creating calendar events with attendees (sends invitations)
- Editing calendar events (can notify attendees)
- Sending Slack messages
- Creating GitHub commits or pull requests
- Updating shared Google Sheets or Docs
Sending an email to yourself (“send email to user”) is considered safe because it only goes to your inbox — not to anyone else.
Which actions require approval?
In Human in the Loop mode, actions that other people would see require your approval:
| Action | Needs approval? |
|---|---|
| Reading an email | No |
| Searching emails | No |
| Viewing calendar events | No |
| Adding a label | No |
| Archiving an email | No |
| Creating a draft | No |
| Moving an email to the trash | No |
| Sending email to you | No |
| Sending email to other people | Yes |
| Creating calendar events | Yes |
| Sending Slack messages | Yes |
Approval notifications
When a routine needs your approval:
- In the web app — Visible in the chat and on the Notifications page
- Your chosen channel — Pick where approval requests reach you under Approvals from routines and your Townie in Settings → Notifications
- Action options — Allow or reject the action
Each approval includes:
- Which routine is requesting
- What action it wants to take
- The routine’s reasoning
- Options to approve with different scopes
Clearing a backlog of approvals
If pending requests have piled up across several sessions, you don’t have to work through them one at a time. The header of the Notifications page — and the notification bell in the sidebar — has three actions that apply to every pending request at once:
| Action | What it does |
|---|---|
| Allow all (Approve all in the bell) | Runs each pending action once. It doesn’t change any session’s permissions, so the next request still asks. On the Notifications page it skips requests to answer another person’s assistant, so you can review those replies individually — the bell’s Approve all sends them too. |
| Reject all | Turns the requests down. Those actions don’t run, and the routines waiting on them carry on without them. On the Notifications page, turning down a request to answer another person’s assistant also lets their assistant know you declined; from the bell it doesn’t. |
| Dismiss all | Clears them from your notifications only — nothing is approved or rejected. The requests stay pending and their sessions stay paused until you answer them in the chat. |
Each one asks you to confirm first, and none of them can be undone. On the Notifications page a large backlog is processed in batches, so if part of it fails you’ll see how many were handled and the rest still go through. From the bell, Approve all and Reject all are sent as one request, so a big backlog is best cleared from the page.
Progressive trust
A common pattern is to start restrictive and expand trust over time:
At the routine level
New routines start in Auto. If you’d like to review a routine’s actions first:
- Switch to Human in the Loop — Let it propose actions for your review
- Return to Auto — When behavior is stable and low-risk
Within a thread
Start a thread on Strict to see every action first, then switch it to Auto as you gain confidence in what your assistant is doing.
Choosing the right mode
| Situation | Recommended mode |
|---|---|
| Brand new routine | Auto |
| Routine sends external messages | Human in the Loop (at least initially) |
| Simple labeling and archiving | Auto (once tested) |
| Research and analysis only | Auto |
| Processing every incoming email | Auto (for speed) |
| Weekly summary routine sent to you | Auto |
| Mission-critical automation | Human in the Loop (even when trusted) |
Best practices
New routines start in Auto. Before creating one, your assistant tells you what it will do without asking, so you can switch to Human in the Loop if you’d rather review its actions.
Keep outgoing messages on approval. Sent messages can’t be unsent. Review before sending.
Check your approvals regularly. Approvals only work if you actually review the requests. If they do pile up, see clearing a backlog of approvals.
Use “Always allow” to speed up repetitive tasks. If you keep approving the same tool, set it to Always allow in Tools and permissions instead of clicking through each request.
Town