Guide
Let an AI agent act on its own, and turn on approval only where you want it
An agent that has to wait for you on every write is a chatbot with extra steps. An agent with no brakes is a risk. Deskhand starts autonomous and puts the brakes where they cost nothing when unused: caps, an audit log, undo for a whole run, and an approval switch you can flip for the whole workspace or for a single agent.
The default
A new workspace and a new agent key are autonomous. CRM writes apply at once and email drafts are approved automatically. Every action is recorded with the agent, the run and the before and after values, each agent has a per-minute rate limit and a daily send cap, and you can pause or revoke an agent instantly.
Try the switch yourself: create an agent, set it to propose, and watch its next write wait in Approvals for your yes. Start free
The switch
The workspace setting is Settings, Agent approval. It takes three values:
auto: agents act on their own; you undo anything afterwards.email: email drafts wait for you in Approvals; CRM writes still apply at once.all: every agent write waits for you. The call returns202with a pending change instead of applying it.
Each agent can override that. email_approval is inherit, auto or required, so a new agent you do not trust yet can have its drafts held while the rest run free. Setting mode to propose holds that agent's CRM writes too. From the API (writes made with a console session cookie must also send the X-Deskhand: 1 header):
curl -X PUT https://deskhand.grain64.com/api/policy \
-H "Cookie: <console session>" \
-H "X-Deskhand: 1" \
-H "Content-Type: application/json" \
-d '{"approval":"email"}'
Any other value is refused with 400 invalid_field. The agent can ask what applies to it in plain words with the get_policy tool, so it knows whether to expect a 202.
What stays on in every setting
- Per-agent daily send caps and rate limits.
- The audit log, and undo of a single change or a whole run from Activity.
- Suppression: contacts who replied, unsubscribed or bounced cannot receive a new draft, and the call refuses with the reason.
- One recipient per message, no attachments, and the block list.
What it does not do
Approval gates what an agent does inside Deskhand. Mail that has already been sent cannot be recalled. Approved drafts go out through the To send queue: you send each one from your own mail client, so an approved message is never an unreviewed one at the moment it leaves.
Try it
Free during early access: 3 agents, each with its own key, a pause switch and the full audit log. Start free
Related: Undo what an AI agent did to your CRM: audit log and one-click revert, Give an agent an email desk without Gmail OAuth