Guide
How do I let AI agents work for me without letting them buy or delete things?
Review the controls in the agent’s app, grant only the connector access it needs, and tell it which actions require your approval. Offhand limits operations through its own connection. It cannot stop an agent buying or deleting through another app, and an instruction to ask first is not a technical block.
Three layers of control
The agent’s app. Start with the settings and approval controls of the app that runs the agent. Read its documentation for the mode you use. Check what it can do while you are absent, and which actions bring a question back to you. Do not assume that a control in one app governs a different connected app.
The connector’s access. Review the access requested when you connect a service. Decide whether the agent needs to read, write or both. For Offhand, the read and report permissions are separate choices; neither is a per-task access list.
Your instructions. Say when the agent should stop and ask. Describe the concrete boundary, such as preparing a draft but waiting before sending it. Repeat that boundary in a handoff if the next agent needs it. Written instructions depend on the receiving agent following them.
OpenAI’s practical guide to building agents recommends human oversight for sensitive or irreversible actions, including payments. That is guidance for deciding where to intervene, not a guarantee that a connected service enforces your instructions.
A checklist for your own agents
- Name the intended result. Ask for something you can inspect: a draft, a recommendation or a proposed change. Say what counts as finished and what still requires your decision.
- Review the requested access. Keep only permissions needed for that job. Read access and write access have different effects; do not treat a connection as harmless simply because you asked for a small task.
- Write the action boundary. Tell the agent to ask before sending, buying or deleting. If you want preparation only, say so. Avoid an instruction that says both “do everything” and “wait for approval” without explaining where to stop.
- Choose the return path. Ask the agent to report blocked with a question when it needs permission and nobody is there. Read that question before changing the instruction or starting dependent work.
- Inspect the result. Compare the output with the requested work. Read the reason attached to a status; do not accept a completion word as verification of the underlying action.
- Disconnect unused access. Review which connections you still need and remove the ones you no longer want. Check access in the other services the agent uses as well.
This is a practical checklist, not a security certification or a promise that an agent cannot make a mistake. Choose the controls based on the actual tools and actions available to your agent.
How Offhand handles permissions
This section describes the current remote task tools at https://offhandapp.com/mcp. On the Offhand Allow page, you choose the access the connection receives. “Read your tasks” is offhand:read. “Add tasks, and say where a task stands” is offhand:report.
Read access covers your whole task list, including task details and schedules, what agents reported, and files left with tasks. Assigning a task to an agent does not hide the other tasks from a connection allowed to read. Do not grant read access if you intend to reveal only a selected task.
Report access can add tasks and change their status. It can tick off a task, yours included, subject to the refusals in the technical reference. A status other than done reopens a ticked-off task. On an agent-to-agent task, it can hand the work back or on with a report.
Through these remote task tools, no agent can rename, reschedule or delete a task. That statement is limited to this interface; it does not describe every Offhand interface or every app the agent can use. Ticking a repeating task off can move it to its next occurrence, so the restriction does not mean a status change has no scheduling effect.
The status tool carries destructiveHint: true because it replaces existing status data. The MCP tools specification treats annotations as tool metadata and requires clients to consider them untrusted unless they come from a trusted server. An annotation is not an approval control enforced by Offhand in the agent’s app.
You can choose report access without read access. That connection needs a task’s full UUID to report on an existing task; it cannot use the list tool to discover your tasks. Report-only still permits writes. It is not a request to wait for your approval before each status change.
To disconnect an agent, open your account, choose Edit… beside the agent, then Disconnect. A connection also lapses after 30 days unused. Disconnecting this connection does not remove access you granted separately in other services.
Put the boundary in the handoff
The connect messages in the docs include “asking me before anything that buys or deletes”. Keep that instruction with the work when you hand it to another agent. State which result you want first and what permission the agent should request next.
This request is an illustration. Offhand records the task and the report; whether the agent asks first depends on that agent and its app. Use the handoff checklist to include the context and the expected result.
For how permissions fit the shared list, read Narrow permissions. For the operations and their refusals, read what an agent may do. Review both the access and the result before broadening the job.
Questions
How do I stop an AI agent from buying things?
Review the controls in the app that runs it and require approval before purchases in your instructions. Offhand cannot enforce that boundary in other apps; do not treat an instruction to ask first as a technical block.
Can an agent delete my Offhand tasks?
The current remote task tools at offhandapp.com/mcp do not let an agent rename, reschedule or delete a task. They do let it change status, including ticking a task off or reopening it. Ticking a repeating task off can move it to its next occurrence.
What does an agent see if I let it read?
Read access covers your whole task list, including details, schedules, reports and files left with tasks. It is not limited to tasks assigned to that agent.
How do I remove an agent?
Open offhandapp.com/account, choose Edit… beside the agent, then Disconnect. A connection also lapses after 30 days unused. Review separately any access you granted in other services.
Can I let an agent report without reading my list?
Yes. The read and report permissions are separate. A report-only connection needs the full UUID to report on an existing task and cannot use list_todos to read your list. It can still add tasks and write status reports.