---
title: "POST /developer-apps/{app_id}/agent-grants/{grant_id}/revoke"
method: POST
path: "/developer-apps/{app_id}/agent-grants/{grant_id}/revoke"
tags: ["Control plane"]
---

# POST /developer-apps/{app_id}/agent-grants/{grant_id}/revoke

`POST /developer-apps/{app_id}/agent-grants/{grant_id}/revoke`

## Request

- Base URL: `https://api.team0.ai/v1`
- URL: `https://api.team0.ai/v1/developer-apps/{app_id}/agent-grants/{grant_id}/revoke`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://clerk.team0.ai/oauth/authorize`, token URL `https://clerk.team0.ai/oauth/token`)
  - HTTP bearer

## Path parameters

- `app_id` string, required
- `grant_id` string, required

## Headers

- `Idempotency-Key` string, required
- `If-Match` string, required

## Response `200`

Grant and every live key for its dedicated app revoked immediately.

- AgentGrant
  - `id` string, required
  - `object` 'agent_grant', required
  - `developer_app_id` string, required
  - `agent` AgentGrantAgent, required
    - `id` string, required
    - `name` string, required
    - `handle` string, required
  - `permissions` AgentGrantPermissions, required
    - `understanding` boolean, required: Allow bounded deterministic Living Understanding reads.
    - `invoke_chief` boolean, required: Allow this agent to invoke the configured Chief within the app execution ceiling.
    - `communicate_with_agents` boolean, required: Allow directory lookup and C2C messages.
    - `read_inbox` boolean, required: Allow this agent to read and acknowledge only its own C2C inbox.
    - `contribute_conversations` boolean, required: Accept attributed turns as candidates by default. Learning from relayed owner messages requires separate explicit transcript consent and tenant rollout.
    - `contribute_tool_activity` boolean, required: Accept changes observed through the agent's own tools as agent-attributed candidates. This never grants provider-authoritative status.
    - `read_work` boolean: Read explicitly assigned or coordinated work and its task context.
    - `report_work` boolean: Accept assignments
    - `manage_work` boolean: Create and manage work where this agent is the designated coordinator. Includes work reads; does not grant external effects or owner-only approvals.
  - `allowed_tools` string[], required
  - `allowed_resources` string[], required
  - `understanding_scope` 'public' | 'c2c' | 'owner', required: Explicit Living Understanding visibility ceiling; independent of C2C sharing trust.
  - `maximum_execution_policy` 'caller_acts' | 'team0_asks_first' | 'team0_may_act', required: Maximum or effective action owner. A request may narrow an application's maximum but never widen it.
  - `conversation_source_id` string, required
  - `contribution_source_id` string, required
  - `transcript_consent` AgentTranscriptConsent: Display hints only; every mutation and ingestion rechecks current authority. Missing on older servers means unavailable, never enabled.
    - `enabled` boolean, required: Stored consent
    - `is_yours` boolean, required: Consent was granted by the current human.
    - `can_enable` boolean, required
    - `can_disable` boolean, required
    - `unavailable_reason` 'owner_required' | 'another_owner' | 'schema_required' | 'rollout_disabled' | 'inactive_grant' | 'conversations_required' | 'null', nullable, required
  - `status` 'active' | 'revoked' | 'expired', required
  - `version` integer, required
  - `expires_at` string, date-time, required
  - `created_at` string, date-time, required

## Other responses

- `default`: RFC 9457 problem response. Cross-tenant identity is non-enumerating.

---

[API](https://skmtc.dev/team0/apis/team0-external-api.md) · [All operations](https://skmtc.dev/team0/apis/team0-external-api/llms.txt) · [OpenAPI document](https://skmtc.dev/team0/apis/team0-external-api/revisions/9b838d20a98f?raw)
