Most teams reach for a permission dialog when they should reach for a database grant. The dialog is a weak control: Anthropic's own write-up on auto mode reports that users approved 93 percent of permission prompts, which suggests the prompt is often treated as ceremony rather than a boundary (Penligent's review of coding agent sandboxes). A role that literally cannot issue an UPDATE has no ceremony to click through.
So the first design question is not "what tools does the agent need?" It is "is the deliverable a decision or a change?" If the output is a number, a list, a label, a diff of discrepancies or a ranked shortlist, the agent is answering a question and a SELECT-only account is enough. If the output is a new row, a status flip, a payment, a sent message or a schema alteration, the agent is changing state and needs a write path, ideally not its own.
The verification test follows directly. Write down the sentence that proves the task succeeded. If that sentence can be checked by running a query against the database, you are still in read-only territory. "The agent identified 41 orders whose shipping address does not match the carrier record" is verifiable by reading. "The agent fixed the 41 addresses" is verifiable only by reading back rows the agent itself wrote, which means the agent needed a write.



