# ApprovalMenu

> **Class** in `deepagents_cli`

📖 [View in docs](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu)

Approval menu using standard Textual patterns.

Key design decisions (following mistral-vibe reference):
- Container base class with compose()
- BINDINGS for key handling (not on_key)
- can_focus_children = False to prevent focus theft
- Simple Static widgets for options
- Standard message posting
- Tool-specific widgets via renderer pattern

## Signature

```python
ApprovalMenu(
    self,
    action_requests: list[dict[str, Any]] | dict[str, Any],
    _assistant_id: str | None = None,
    id: str | None = None,
    **kwargs: Any = {},
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `action_requests` | `list[dict[str, Any]] \| dict[str, Any]` | Yes | A single action request dictionary or a list of action request dictionaries requiring approval. Each dictionary should contain 'name' (tool name) and 'args' (tool arguments). |
| `_assistant_id` | `str \| None` | No | Optional assistant ID (currently unused, reserved for future use). (default: `None`) |
| `id` | `str \| None` | No | Optional widget ID. Defaults to 'approval-menu'. (default: `None`) |
| `**kwargs` | `Any` | No | Additional keyword arguments passed to the Container base class. (default: `{}`) |

## Extends

- `Container`

## Constructors

```python
__init__(
    self,
    action_requests: list[dict[str, Any]] | dict[str, Any],
    _assistant_id: str | None = None,
    id: str | None = None,
    **kwargs: Any = {},
) -> None
```

| Name | Type |
|------|------|
| `action_requests` | `list[dict[str, Any]] \| dict[str, Any]` |
| `_assistant_id` | `str \| None` |
| `id` | `str \| None` |


## Properties

- `can_focus`
- `can_focus_children`
- `BINDINGS`

## Methods

- [`set_future()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/set_future)
- [`compose()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/compose)
- [`on_mount()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/on_mount)
- [`action_move_up()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_move_up)
- [`action_move_down()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_move_down)
- [`action_select()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_select)
- [`action_select_approve()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_select_approve)
- [`action_select_auto()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_select_auto)
- [`action_select_reject()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_select_reject)
- [`action_toggle_expand()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/action_toggle_expand)
- [`on_blur()`](https://reference.langchain.com/python/deepagents-cli/widgets/approval/ApprovalMenu/on_blur)

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/3bcc51a95da80094cfc8bc4bcaf25dc1e2ad8f44/libs/cli/deepagents_cli/widgets/approval.py#L43)