---
title: "PermissionAnswer"
description: "the typed answer of the permission check before any action, which the acting function takes as an argument"
section: concepts
address: /concepts/permissionanswer
contract: 0476e35e6e275db5
---

# PermissionAnswer

the typed answer of the permission check before any action, which the acting function takes as an argument

[figure: PermissionAnswer is a value at none scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | value |
| scope | none |
| key | none |
| store | none |
| family | people |



## Fields


| field | type | required | note |
|---|---|---|---|
| `allowed` | `bool` | yes |  |
| `mode` | `one of read only \| propose \| act \| full autonomy` | no |  |
| `failed_test` | `one of 1 \| 2 \| 3 \| 4 \| 5` | no |  |
| `refusal` | [Refusal](/concepts/refusal) | no |  |
| `grant` | `id` | no | the narrowest grant that covers it |
| `limits_left` | [GrantLimits](/concepts/grantlimits) | no |  |



## Routes that use it
No route takes or returns PermissionAnswer directly. The record holds it, and the objects that point at it reach it.
