Skip to main content
Connic

Human approvals for agents.
Built into Connic.

Connic pauses sensitive tool calls before execution, pending approval or rejection. Decisions are made in the dashboard or through the REST API and are logged. Conditions and timeouts determine when review is required and how long the agent waits.

Read the approvals docs

Approvals

Pending
order-handler
stripe.refund
2m ago
customera.smith@acme.com
amount€129.00
reasonduplicate charge

Review first, execute next

A tool call requiring approval waits for a human decision. On approval, Connic resumes execution. Configure whether rejection stops the agent or lets it continue without that tool call.

  1. 01

    Agent calls a gated tool

    process_refund(amount=129)

  2. 02

    The run pauses

    Status flips to Awaiting Approval. The agent stops; the request stays alive.

  3. 03

    Reviewers are notified

    Email and in-app by default. An optional webhook forwards to Slack, Teams, PagerDuty, or a custom workflow.

  4. 04

    A reviewer decides

    The request can be approved or rejected from the dashboard or via REST API.

  5. 05

    The run resumes

    Or fails with the rejection reason. With on_rejection: continue, the agent adapts instead.

Approval rules directly in the agent file

Listed tools require human approval before execution. Add a condition to require approval only for matching calls, such as refunds above a set amount.

Simple
agents/order-handler.yaml (snippet)
approval:
  tools:
    - order_tools.process_refund
  timeout: 600
  message: "This refund requires manager approval."

Every call to order_tools.process_refund pauses the run until a project member approves.

Conditional
agents/order-handler.yaml (snippet)
approval:
  tools:
    - order_tools.cancel_order                          # always gated
    - order_tools.process_refund: param.amount > 1000   # conditional
  timeout: 3600
  message: "This action requires manager approval."
  on_rejection: continue

Small refunds fly through. Larger ones pause for review. With on_rejection: continue, the agent adapts instead.

Review and decide on approval requests

The overview shows pending requests with the agent, tool, parameters, and waiting time. Approve or reject requests directly, or open the corresponding run details for more information.

Approvals
4 pending
  • order_tools.process_refundawaiting approval
    on order-manager · order_id=ORD-1234 · amount=129
    2m
  • order_tools.process_refundawaiting approval
    on order-manager · order_id=ORD-1287 · amount=2400
    5m
  • order_tools.cancel_orderawaiting approval
    on order-manager · order_id=ORD-1199 · reason=customer_request
    11m
  • db_deleteawaiting approval
    on support-triage · table=conversations · id=42819
    23m

Every decision is recorded

Approvals and rejections are recorded with the reviewer, time, tool, and parameters. Connic shows them in the project audit log and alongside the relevant tool call in the trace.

Who decided

Every approval and rejection is recorded with the team member who made the decision and when.

What was called

Tool name and the exact parameters at the moment of decision are captured alongside the action.

On the run trace

Approval events show up on the run's trace view too, with wait duration and reviewer next to the gated tool call.

Frequently Asked Questions

The timeout follows the same path as a rejection. With the default on_rejection: fail the run terminates; with on_rejection: continue the run resumes and the agent is told the tool was not executed. Timeouts are clock-time, not run-time.

By default a rejection ends the run with a FAILED status that includes the reviewer's reason. With on_rejection: continue, the tool call returns a rejection message to the LLM instead. The agent can then try a different approach, ask the user for input, or skip the action.

Yes. A condition expression such as 'param.amount > 1000 and not context.is_admin' sits next to the tool name in the approval block. Conditions read tool parameters via param.<key> and middleware values via context.<key>. If the expression can't be evaluated, the call pauses for review. Fail-safe by design.

All project members get an email and in-app notification by default. Reusable channels are configured under Project Settings → Notifications. The Notification Config drawer on the Approvals page selects which members and channels receive requests for each agent. Channel destinations include Slack, Microsoft Teams, PagerDuty, webhooks, and custom approval workflows.

Yes. Approvals can be listed, approved, and rejected via the REST API with API key authentication, alongside the rest of the platform endpoints. This is useful when an existing approval workflow lives in another system.

Approving and rejecting require the approvals.decide project permission. The Owner has full access; other members receive permissions through their assigned permission groups. API decisions also require an API key with approvals.decide.