feat(voice-call): support Twilio calls in IE1 and AU1#95832
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 3, 2026, 4:54 PM ET / 20:54 UTC. Summary PR surface: Source +54, Tests +88, Docs +7. Total +149 across 12 files. Reproducibility: yes. at source level: current main and v2026.6.11 hardcode Twilio REST requests and SSRF allowlists to Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the region-only Do we have a high-confidence way to reproduce the issue? Yes, at source level: current main and v2026.6.11 hardcode Twilio REST requests and SSRF allowlists to Is this the best way to solve the issue? Yes, if maintainers accept the new config contract: the PR avoids arbitrary base URLs, derives exact Twilio hostnames from a closed region enum, and keeps SSRF policy coupled to the request host. The main alternative, exposing both edge and region, adds invalid combinations without useful REST ingress control. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 010b61746379. Label changesLabel justifications:
Evidence reviewedPR surface: Source +54, Tests +88, Docs +7. Total +149 across 12 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
anything I can do from my side to get this merged? |
Co-authored-by: Jodok Batlogg <158125+jodok@users.noreply.github.com>
368ac48 to
3da7d02
Compare
|
Maintainer rewrite is land-ready at What changed:
Proof:
Known gap: no second maintainer-owned regional Twilio credential set was available; the contributor's credentialed IE1 proof is retained, and the complete provider/config/SSRF matrix is covered by Testbox. |
|
Merged via squash.
|
Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Jodok Batlogg <158125+jodok@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Jodok Batlogg <158125+jodok@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Jodok Batlogg <158125+jodok@users.noreply.github.com>
AI-assisted: Codex.
What Problem This Solves
The voice-call plugin sends every Twilio Calls API request to US1. Calls and call records are region-specific, so IE1 and AU1 deployments cannot create, update, hang up, or inspect their calls through the US1 endpoint.
Closes #95828.
Why This Change Was Made
This adds one optional closed config field:
twilio.regionacceptsus1,ie1, orau1. OpenClaw derives Twilio's documented REST hostname internally:us1→api.twilio.comie1→api.dublin.ie1.twilio.comau1→api.sydney.au1.twilio.comThe account-scoped base URL is prepared once and reused for mutations and status reads. Each path derives its SSRF allowlist from the actual request/base URL, so request routing and hostname policy cannot drift. No arbitrary base URL or user-selectable edge is exposed.
Config/default metric: one optional config surface added, zero defaults changed, zero config surfaces removed. Existing configs keep the shipped US1 behavior.
User Impact
Twilio voice-call users can target IE1 or AU1 with the Auth Token created in that Region. Existing US1 users see no behavior change. Unsupported region values fail config validation.
Evidence
tbx_01kwxddkwq631x975x00zmd94t: full voice-call extension suite passed — 50 files, 506 tests.pnpm docs:listpassed; full docs check passed across 684 formatting/lint files, 700 MDX files, and 5,753 internal links with zero broken links.api.twilio.com,api.dublin.ie1.twilio.com, andapi.sydney.au1.twilio.com, confirming all three current HTTPS endpoints are active and enforce authentication.TwilioProvider.getCallStatusreachedapi.dublin.ie1.twilio.comwith regional credentials and returnednot-foundfor a deliberately nonexistent Call SID, without creating or modifying a call.api.twilio.com; Twilio's current regional REST, edge, and regional-credential documentation were checked directly.Known gap: no second maintainer-owned regional Twilio credential set was available. The contributor's credentialed IE1 provider proof covers the authenticated path; the maintainer pass independently verified all three live endpoints and the full test/docs surface.