Skip to main content
You’ll let the research agent from the first guide make HTTP requests, but only GET ones, and block it from managing agents for good.

1. Find the tool names

A permission names both the tool and who owns it. Built-ins start with tool:builtin: and are listed in Built-in tools. Tools your workspace registered start with tool:workspace: and sit under their toolset namespace, which you can list:
A toolset in the billing namespace publishes billing.lookup_invoice, so you grant tool:workspace:billing.lookup_invoice. Managed provider toolsets (Gmail, Calendar, Linear) ship with Matrices, so they never show up in that list. You still grant them by name, like tool:managed:gmail.*.

2. Write the allows

http.request makes one HTTP call, using whatever method the model picked. Put a condition on the entry and you pin that field, so this role can read from an API but never write to one:
where is checked against the tool input exactly as the model wrote it. The operators and paths are in Permissions.

3. Deny a whole family

An allow only ever adds tools. To take one away no matter what the other roles grant, deny it:
Now even a second role handing out tool:* can’t let this agent create or delete agents. Denies only work on built-in tools, never on a toolset namespace.

4. Select the role in the profile

Roles attach to the profile, not the agent. The patch replaces the whole list instead of adding to it, so send every role you want, including the one from the first guide:
Every agent on this profile gets the change on its next turn. If only one of them should, give that one its own profile first.

Check it worked

builtIns lists the exact tools the agent can call. http.request is there, and nothing from agents.* is. conditional shows the GET-only grant. Ask the agent to POST something and the call is refused before it runs. Allows add up, conditions narrow one entry, denies win. The full stacking table is in Permissions.

Where next

Approve a tool call

Let the write through, but only after a human says yes.

Connect a service

Give it a login to go with the permission.