---
title: "List the actions set to run without asking"
method: GET
path: "/v1/actor-preferences/tool-overrides"
tags: ["integrations"]
---

# List the actions set to run without asking

`GET /v1/actor-preferences/tool-overrides`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/actor-preferences/tool-overrides`
- Auth: HTTP bearer

Every per-tool consent this member holds, with the connection it belongs to, its computed state and when it last waived a call. Consents on Patricia's own tools have no connection. Rendered from the stored consents rather than from the live tool list, so a consent whose action the provider stopped publishing is still here to revoke. ``actor_id`` reads another member's list and is admin-only; it never permits minting or revoking for them.

## Query parameters

- `actor_id` string, uuid, nullable

## Headers

- `X-Tenant-Id` string, nullable

## Response `200`

Successful Response

- ToolOverrideInventoryResponse
  - `items` ToolOverrideInventoryItem[], required
    - `id` string, uuid, required
    - `integration_account_id` string, uuid, nullable, required
    - `tool_ref` string, required
    - `granted_tier` string, required
    - `created_at` string, date-time, required
    - `audience_class` 'non_audience' | 'audience' | 'legacy' | 'task_non_audience' | 'task_audience', required: Which calls of one action a standing consent covers, named by the audience each call reaches. ``tools.contracts.call_audience_class`` reads every call as ``non_audience`` or ``audience``, from the call itself and before any consent is consulted. A ``tool_overrides`` row stores the class it covers, and the class is part of its key, so a non-audience consent never covers an audience-reaching call of the same action. The ``ck_tool_overrides_audience_class`` CHECK holds the stored values to this set.
    - `display_name` string, nullable, required
    - `account_label` string, nullable, required
    - `provider` string, nullable, required
    - `state` 'tool_missing' | 'account_inactive' | 'tool_disabled_on_account' | 'inactive_tenant_master_disabled' | 'inactive_policy_always' | 'floor_blocked' | 'epoch_stale' | 'contract_stale' | 'needs_reconfirmation' | 'active', required: The computed state of a stored override — ONE precedence, FOUR readers. The runtime gate, the Tools-tab pill, the settings inventory and dispatch's own revalidation all resolve this, so an override can never read "active" in the dashboard while the gateway is asking. Not a code table: it is derived per read from live state, never persisted. The fourth is the one to keep in mind when changing the ordering or a field's meaning: it is not a display surface. ``gateway._override_live_state_denial`` asks this question again under row locks, and its answer is what authorizes an unattended provider write with no card and no ``PermissionRequest`` behind it.
    - `last_used_at` string, date-time, nullable, required
    - `audience_label` string, nullable, required

## Other responses

- `400`: Refused because the caller has no personal settings to change. ``code`` is one of ``no_caller_actor``.
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `404`: Not found
- `422`: Validation error

---

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