Skip to main content

Integration Guardrails

When agents interact with third-party services (Slack, GitHub, Gmail, Stripe, etc.), guardrails ensure they can’t take destructive actions without oversight, exceed rate limits, or operate outside their assigned permissions.
Guardrails are enforced at the engine level — they apply to all channels, all agents, and all integration methods (MCP Bridge, REST API, and direct tool calls).

Action Risk Classification

Every integration action is classified by its verb into one of three risk levels:
Risk LevelBehaviorExample Verbs
AutoExecuted immediately, no approval neededlist, get, search, read, fetch, count, check
SoftPreview card shown before executionsend, create, update, post, comment, assign, move, upload, pin
HardExplicit confirmation dialog requireddelete, remove, archive, close, bulk_send, transfer, modify_billing, revoke

How classification works

The engine scans the action verb for known keywords. The first matching verb determines the risk level. If no known verb is found, the action defaults to soft (preview required) — erring on the side of caution.

Risk metadata

Each risk level carries UI metadata for consistent display:
LevelIconLabelColor
Autocheck_circleAuto-approvedGreen
SoftvisibilityPreviewYellow
HardwarningConfirmRed

Rate Limits

Per-service rate limits prevent runaway agents from spamming APIs. Each service has a configured maximum number of actions within a sliding time window.

Default limits

ServiceMax ActionsWindow
Slack3015 min
Discord3015 min
Telegram3015 min
Gmail1015 min
SendGrid1015 min
GitHub2015 min
Jira2015 min
Linear2015 min
HubSpot2015 min
Salesforce2015 min
Trello2015 min
Notion2015 min
Google Sheets3015 min
Shopify1515 min
Stripe1015 min
Twilio1515 min
Zendesk2015 min
Other5015 min
Unlisted services fall back to the generic limit of 50 actions per 15 minutes. You can override limits per-service in Settings.

How rate limiting works

The engine tracks actions per service in a sliding window:
  1. Each action increments the service counter
  2. If the counter exceeds maxActions, the action is blocked
  3. The window resets automatically after windowMinutes
  4. You can manually reset a service’s window (e.g., after resolving an issue)

Rate limit response

When an agent hits a rate limit, it receives:
{
  "allowed": false,
  "remaining": 0,
  "limit": 30
}
The agent is informed that the action was blocked and how many actions remain in the current window.

Agent Service Permissions

Each agent can be assigned a specific access level per integration service, controlling what kinds of actions it’s allowed to perform.

Access levels

LevelCan DoIcon
NoneNothing — service is completely blockedblock
ReadOnly auto-risk actions (list, get, search, read)visibility
WriteAll actions including reads, writes, and deletesedit
FullEverything — no restrictions at alladmin_panel_settings

How permissions are checked

Set research agents to Read access and action agents to Write. Reserve Full access for your primary agent.

Dry-Run Plans

Before executing multi-step integration workflows, agents can generate a dry-run plan that shows every action they intend to take — with risk levels, targets, and previews.

Plan structure

FieldDescription
StepsOrdered list of actions the agent will take
ServiceWhich integration each step targets
ActionThe specific action (e.g., send_message, delete_repo)
TargetWhat the action operates on (e.g., #general, my-repo)
RiskAuto / Soft / Hard classification
PreviewOptional human-readable description of the action

Automatic confirmation required

A plan requires explicit user confirmation when:
  • Any step is hard-risk (delete, archive, transfer, etc.)
  • The plan has more than 3 steps (regardless of risk levels)
This prevents agents from silently executing long chains of actions.

Example plan

Plan: Deploy notification pipeline
─────────────────────────────────
1. [auto]  GitHub   → list_repos      → org/backend        "List repos"
2. [soft]  GitHub   → create_issue    → org/backend #142   "Create deploy tracking issue"
3. [soft]  Slack    → send_message    → #deployments       "Notify team"
4. [hard]  GitHub   → archive         → org/backend-old    "Archive legacy repo"

⚠️ This plan requires confirmation (contains hard-risk action)

Credential Audit Log

Every integration action is logged to an audit trail for security review and compliance:
FieldDescription
TimestampWhen the action was executed
AgentWhich agent performed the action
ServiceTarget integration service
ActionThe specific action taken
Access LevelThe agent’s permission level at execution time
ApprovedWhether the action was approved (via HIL or auto)
Resultsuccess, denied, or failed