Skip to main content
Webhook signature and forwarding-header security, plus the CLI, agent tool, and Gateway RPC surfaces. Part of the Voice call plugin guide.

Webhook security

When a proxy or tunnel sits in front of the Gateway, the plugin reconstructs the public URL for signature verification. These options control which forwarded headers are trusted:
string[]
Allowlist hosts from forwarding headers.
boolean
Trust forwarded headers without an allowlist.
string[]
Only trust forwarded headers when the request remote IP matches the list.
Additional protections:
  • Webhook replay protection is enabled for Twilio, Telnyx, and Plivo. Replayed valid webhook requests are acknowledged but skipped for side effects.
  • Twilio conversation turns include a per-turn token in <Gather> callbacks, so stale/replayed speech callbacks cannot satisfy a newer pending transcript turn.
  • Unauthenticated webhook requests are rejected before body reads when the provider’s required signature headers are missing.
  • The voice-call webhook uses the shared pre-auth body-read profile (64 KB max body, 5-second read timeout) plus a per-key in-flight cap (8 concurrent requests per key by default) before signature verification.
Example with a stable public host:

CLI

When the Gateway is already running, operational voicecall commands delegate to the Gateway-owned voice-call runtime so the CLI does not bind a second webhook server. If no Gateway is reachable, the commands fall back to a standalone CLI runtime. latency reads persisted call records from SQLite by default. Use --file <path> to read an existing custom JSONL log (with a basename other than calls.jsonl) and --last <n> to limit analysis to the last N records (default 200). Output includes min/max/avg, p50, and p95 for turn latency and listen-wait times.

Agent tool

Tool name: voice_call. The voice-call plugin ships a matching agent skill.

Gateway RPC

dtmfSequence is only valid with mode: "conversation"; notify-mode calls should use voicecall.dtmf after the call exists if they need post-connect digits.