Skip to main content
Not every tool call should run automatically. When a workflow writes to a production CRM, sends a customer-facing email, or executes a database query, you may want a human to review and approve before it goes through. Tool approvals give you that checkpoint. You declare which tools need approval in your job definition. When the model (or your code) calls one of those tools, the run pauses, notifies you, and waits for a decision. Approve to continue; reject to stop that tool call.

Configuring tool approvals

List the tool names that require approval in toolApprovals:
toolApprovals is typed against the tools exposed by your declared skills, so your editor autocompletes the exact tool names. An empty array means no tools require approval; omitting the field entirely has the same effect.

Approval in development vs. production

The approval experience adapts to your environment:

Local development (terse test)

When you test locally, approval requests appear as interactive prompts in your terminal:
Type Y to approve or n to reject. The run resumes immediately in the same terminal session.

Production (deployed workflows)

In production, Terse delivers approval requests through your configured notification channels and handles them in the app: You can also approve or reject from the Activity tab by opening the paused run and reviewing the tool call in context.

When to use tool approvals

Tool approvals add latency because the run waits for a human. Use them deliberately. Good candidates are write operations to production CRMs during early development, customer-facing messages (emails, Slack DMs to external contacts), database mutations (especially deletes), and any workflow where compliance requires a human checkpoint. Skip them for read-only operations like queries and enrichment lookups, internal notifications to team Slack channels or dashboards, workflows that have been validated and are running reliably, and high-volume operations where per-run approval isn’t practical. A common pattern is to start with approvals enabled during development and the first few production runs, then remove them once the workflow behaves correctly.

Custom input prompts

Tool approvals gate specific tool calls the agent makes. When you need to ask a human a custom question with your own action buttons — approve, reject, request changes — use waitForInput() in a durable workflow. Terse posts an interactive Slack message, suspends the run, and returns the respondent’s choice when they respond. During terse test, the same Slack message is sent (marked as a test) and the run picks up the response without suspending.

Notification configuration

Terse delivers approval requests through the notification settings on your Notifications page. To receive them, make sure:
  1. You’ve added a notification destination. Open the Notifications page, switch to the Destination tab, and add a Slack workspace or confirm your email.
  2. You’ve enabled approval requests. On the same page, open the Notification Types tab and include “Approval requests” in the “Notify me about” action types.
Terse tries Slack first when you have an active destination. If Slack isn’t configured, it falls back to email. Every approval request Terse sends is logged in your notification history.

Where to go next

Activity & observability

Monitor runs, inspect failures, and review the full action trace.

Skills & integrations

Control which integrations the model can use.