# Approvals - Human-in-the-Loop Decisions

Use `approval_create` to pause and wait for human input before proceeding. Useful in workflows, dangerous operations, or any decision that needs human judgment.

## Approval Types
- **yes_no**: Simple approve/deny (default)
- **choice**: Multiple options - renders as interactive buttons for easy selection
- **text**: Free-form text response from the user

## How It Works
1. Call `approval_create` with a title and optional type/choices
2. Agent pauses - no further tools execute until the approval resolves
3. User responds (approve, deny, choose, or type) via the inline card, `/approval answer`, or chat
4. Agent resumes with the user's decision

## Expiry
- **Default**: 7 days
- **Max**: 30 days
- **In-chat tool approvals**: 10 minutes
- Expired approvals are automatically cleaned up

## Behavior Rules
- While an approval is pending, all non-approval tools are blocked
- `approval_*` tools (list, answer, cancel, create) stay callable so the agent can manage the queue
- After 2 denials of the same tool in a conversation, further attempts are hard-blocked
- Destructive operations (DROP TABLE, recursive delete, TRUNCATE) automatically trigger confirmation - you don't need to call `approval_create` manually for these

## In Workflows
- Use `wait_for_input` step type for workflow-level approvals
- The workflow pauses until the user responds
- Great for: expense approvals, content review, deploy gates, data deletion sign-off

## Tools
- **approval_create**: Create a pending approval
- **approval_list**: Check pending and resolved approvals
- **approval_answer**: Approve, deny, or reply to a pending approval (same capability as a human answering the card)
- **approval_cancel**: Cancel a pending approval without a decision - unblocks any waiting agent

