Docs
Approvals
Docs/Approvals

Approvals

When Moona holds an action, your agent stops and waits for you to decide. You resolve it from your terminal, or from your phone if you have connected a notification channel.

See what is waiting

List all actions currently held for your approval:

bash
$ moona pending

moona pending is read-only. It shows you what is waiting and gives you the information you need to make a decision: what the action is, what it targets, and why it was held.

Approve or reject

When there is one action pending, approve it:

bash
$ moona approve

Moona presents the action and asks you to confirm. You can approve it, reject it permanently, or keep it blocked (press Enter to keep it blocked without making a final decision).

When more than one action is pending, moona approve requires you to specify which one using the --id flag shown in moona pending output. This prevents accidentally approving the wrong action.

bash
$ moona approve --id <approval-id>

How approval is authorized

Approval uses a key stored in your operating system's keychain, separate from your agent process. This means an AI agent running on your machine cannot mint its own approval: reading the keychain requires different OS-level permissions than running shell commands.

This is what makes the guarantee real: the agent can request an action, but cannot authorize it.

Out-of-band approval

You can also approve actions from your phone or any device with access to a connected notification channel. When a notification channel is configured, Moona sends you a message when an action is held. You reply to approve or deny it.

Moona supports Telegram and Slack as out-of-band channels. See Telegram or Slack to get started.

Approval window

Held actions do not wait indefinitely. If you do not respond within the approval window, the action is automatically denied. It never auto-approves on timeout.