#19487: fix(voice-call): add .ngrok-free.dev to ngrok free tier domain check
channel: voice-call
size: XS
Cluster:
Security Enhancements and Fixes
## Problem
ngrok free tier now issues tunnels on `.ngrok-free.dev` in addition to `.ngrok-free.app`. The current ngrok free tier detection in `webhook-security.ts` only checks for `.ngrok-free.app` and `.ngrok.io`, so users with the newer `.ngrok-free.dev` domain hit webhook signature validation failures even when `allowNgrokFreeTierLoopbackBypass` is enabled.
## Fix
Add `.ngrok-free.dev` to the `isNgrokFreeTier` check. One-line change.
## Testing
Tested with ngrok free tier on `.ngrok-free.dev` domain with Twilio voice calls -- webhook validation passes correctly after this fix.
Tested on OpenClaw 2026.2.9 through 2026.2.15.
<!-- greptile_comment -->
<h3>Greptile Summary</h3>
Adds `.ngrok-free.dev` to the ngrok free tier domain detection in `webhook-security.ts:513`. This fixes webhook signature validation failures for users with the newer ngrok free tier domain when `allowNgrokFreeTierLoopbackBypass` is enabled.
- The change is a simple addition to the boolean check that identifies ngrok free tier URLs
- Maintains consistency with existing `.ngrok-free.app` and `.ngrok.io` domain checks
- The fix is minimal, targeted, and well-tested according to the PR description
<h3>Confidence Score: 5/5</h3>
- This PR is safe to merge with no risk
- The change is a single-line addition to a string matching condition that adds a new ngrok domain variant. The logic is straightforward, follows the existing pattern, and has been tested by the author. There are no security implications, breaking changes, or edge cases introduced by this change.
- No files require special attention
<sub>Last reviewed commit: a59df83</sub>
<!-- greptile_other_comments_section -->
<sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub>
<!-- /greptile_comment -->
Most Similar PRs
#6128: Fail closed when Telnyx webhook public key is missing (voice-call p...
by yueyueL · 2026-02-01
71.0%
#21128: Security/Voice Call: require trusted proxy IPs for forwarded-header...
by bmendonca3 · 2026-02-19
70.7%
#21197: Security/Voice Call: enforce exact webhook path matching
by bmendonca3 · 2026-02-19
70.5%
#21772: [Bug]: Allow ws:// to Tailscale CGNAT addresses
by AIflow-Labs · 2026-02-20
69.5%
#11048: fix: address repository issues (env, author, CI comments, security ...
by cavula · 2026-02-07
69.4%
#21288: Security/Voice: reject malformed Host headers in webhook+WS server
by bmendonca3 · 2026-02-19
69.2%
#10239: Security: Add production guard for skipSignatureVerification
by StreetJammer · 2026-02-06
69.2%
#23280: fix(control-ui): remove stale allowInsecureAuth suggestion from err...
by anillBhoi · 2026-02-22
69.0%
#21842: fix(gateway-cli): use wss:// scheme when gatewayTls is enabled
by hydro13 · 2026-02-20
68.9%
#21163: Prevent Slack DNS errors from crashing the gateway
by graysurf · 2026-02-19
68.8%