---
title: "GET /agents/{agentId}/permissions"
method: GET
path: "/agents/{agentId}/permissions"
---

# GET /agents/{agentId}/permissions

`GET /agents/{agentId}/permissions`

## Request

- Base URL: `https://api.useanima.sh/v1`
- URL: `https://api.useanima.sh/v1/agents/{agentId}/permissions`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Path parameters

- `agentId` string, required: Agent whose permissions to read

## Response `200`

OK

- object: An agent's standing permissions, one row per master-gated procedure
  - `agentId` string, required
  - `items` object[], required
    - `procedurePath` string, required: Dotted procedure path — 'agent.delete'
    - `group` 'read' | 'write' | 'destructive', required: Derived from the procedure's HTTP method: read (GET), destructive (DELETE), write (everything else). Destructive is separated from write so 'may delete without asking' is a deliberate decision rather than one made in passing.
    - `state` 'ASK' | 'ALWAYS_ALLOW' | 'NEVER', required: ASK (file a request and wait for the owner), ALWAYS_ALLOW (proceed without asking), NEVER (refuse outright and do not queue a request).
    - `grantedBy` string, nullable, required: Who last set this, when it came from an approval; null if never set
    - `updatedAt` string, date-time, nullable, required: When it was last set; null while it has never been set
  - `bypassReads` boolean, required: Whether a blanket READS grant is live: the agent stops asking about read-only procedures entirely. The group-level control for the read group.

## Other responses

- `403`: 403
- `404`: 404

---

[API](https://skmtc.dev/useanima/apis/anima-api.md) · [All operations](https://skmtc.dev/useanima/apis/anima-api/llms.txt) · [OpenAPI document](https://skmtc.dev/useanima/apis/anima-api/revisions/aaa148188980?raw)
