Back to skill

Security audit

AgentCall

Security checks for vulnerabilities and agentic risk

Overview

This skill is a clearly disclosed AgentCall telephony integration with real-world SMS, calling, billing, and memory risks that are mostly scoped and confirmation-gated.

Install only if you want an agent to manage real telephony through AgentCall. Review costs, confirm every outbound call or text, use OTP retrieval only for systems you own or are authorized to test, keep call recording consent in mind, and monitor or disable persistent AI receptionists, schedules, webhooks, and call memory when no longer needed.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (55)

Ssd 3

High
Confidence
98% confidence
Finding
The skill explicitly documents a workflow to provision a phone number, receive SMS OTP codes, and use them to complete an app verification flow. This enables an agent to intercept authentication factors and automate account verification, which is highly sensitive and can facilitate unauthorized account creation, takeover, or bypass of platform anti-abuse controls.

Memory Manipulation

High
Category
Memory Poisoning
Content
"name": "agentcall",
  "version": "2.13.1",
  "summary": "Phone numbers, SMS, two-way AI SMS plus relay mode (text your own agent on a real number), proactive scheduling (the agent texts first: appointment reminders and recurring digests), AI voice agents (Managed $0.40/min, BYOK $0.10/min, or Premium Voice $0.59/min on inbound + outbound) with 31 languages plus auto-detect, and Auditable Call Memory (cross-call contacts, structured call reports, the next-call context block) for AI agents. 62 tools. VoIP-routed via licensed US carriers.",
  "description": "Phone numbers, SMS, voice calls, inbound + outbound AI voice with multilingual support, AND Auditable Call Memory for AI agents. Provision US/CA numbers, send/receive texts, extract OTP codes for apps you control, configure phone numbers to be answered by an AI voice agent (with plain-English email summaries and optional MP3 recordings after every call), or place autonomous AI-powered outbound calls. Inbound texts can be answered too: set smsMode to 'ai' so AgentCall's AI replies and pulls real quotes by calling tools you host through the action bridge, or set smsMode to 'relay' so AgentCall runs no AI and forwards each text to your own agent and sends its reply back, letting you text your own agent on a real number. AI voice supports 31 languages plus auto-detect on both directions: English, Spanish, French, German, Italian, Portuguese, Dutch, Japanese, Korean, Chinese (Mandarin), Hindi, Arabic, Russian, Indonesian, Turkish, Polish, Ukrainian, Vietnamese, Tamil, Malay, Romanian, Greek, Czech, Swedish, Hungarian, Danish, Finnish, Norwegian, Slovak, Croatian, and Bulgarian. Default is auto (matches the caller naturally); pin a specific language to keep the AI in that language even if the other party speaks another, useful for businesses serving a specific language community or for outbound errands like booking a Spanish doctor's appointment on behalf of someone. Inbound AI voice ships in two billing modes per numbe
...[truncated 26 chars]
Confidence
80% confidence
Finding
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
"number.released"
    ]
  },
  "changelog": "v2.13.1 (2026-09-08): One-time 72-hour card-verified live trial, five minutes total, five verified-destination SMS attempts, no reset or automatic upgrade. Existing monthly Free offers are preserved. Read get_plan first. MCP 0.17.1 aligns hosted, stdio and HTTP instructions. Historical entries below describe past releases, not current offers.\n\nv2.13.0 (2026-08-25): Two new tools so an agent can help its human upgrade: get_plan reads the plan, Free limits, and free AI minutes left with a read-aloud summary; upgrade_to_pro returns a Stripe Checkout link (nothing is charged until the human completes it; run only on explicit request). Every plan_limit_* error now carries upgradeUrl and upgradeToolName. Plain outbound calls (initiate_call) are Pro only, callers hear a short message instead of dead air when a Free number is out of trial minutes, and a 3-per-day redial cap per destination returns 429 redial_limit_exceeded. Free SMS allowance corrected to 20/month in the guardrails. 62 tools. v2.12.9 (2026-08-11): Provisioning failures no longer lock you out. The hourly provisioning budget now counts numbers you actually received, so a carrier error or an empty area code costs nothing; previously every failed attempt burned a slot and three bad tries could block provisioning for a full hour without ever handing over a number. A 429 now carries Retry-After with the exact wait. provision_number is also no longer retried automatically after an ambiguous failure, because a replay could buy a second number you get billed for: on a carrier error or timeout, call list_numbers first to see whether the number actually landed, then retry at most once. New error codes documented: provisioning_rate_limit, no_numbers_in_area_code, and carrier_error on provisioning. No new tools; still 60.\n\nv2.12.8 (2026-08-11): SMS threads now come with recency built in. get_sms_conversation returns a context object that splits the thread into recentMessa
...[truncated 27 chars]
Confidence
91% confidence
Finding
The DELETE /v1/memory/:id operation can remove persisted memory items that influence future AI behavior, summaries, and call context, creating integrity and availability risks if invoked on the wrong record. Because this skill relies heavily on cross-call memory, accidental or manipulated deletion could materially alter agent decisions and degrade service correctness.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
"number.released"
    ]
  },
  "changelog": "v2.13.1 (2026-09-08): One-time 72-hour card-verified live trial, five minutes total, five verified-destination SMS attempts, no reset or automatic upgrade. Existing monthly Free offers are preserved. Read get_plan first. MCP 0.17.1 aligns hosted, stdio and HTTP instructions. Historical entries below describe past releases, not current offers.\n\nv2.13.0 (2026-08-25): Two new tools so an agent can help its human upgrade: get_plan reads the plan, Free limits, and free AI minutes left with a read-aloud summary; upgrade_to_pro returns a Stripe Checkout link (nothing is charged until the human completes it; run only on explicit request). Every plan_limit_* error now carries upgradeUrl and upgradeToolName. Plain outbound calls (initiate_call) are Pro only, callers hear a short message instead of dead air when a Free number is out of trial minutes, and a 3-per-day redial cap per destination returns 429 redial_limit_exceeded. Free SMS allowance corrected to 20/month in the guardrails. 62 tools. v2.12.9 (2026-08-11): Provisioning failures no longer lock you out. The hourly provisioning budget now counts numbers you actually received, so a carrier error or an empty area code costs nothing; previously every failed attempt burned a slot and three bad tries could block provisioning for a full hour without ever handing over a number. A 429 now carries Retry-After with the exact wait. provision_number is also no longer retried automatically after an ambiguous failure, because a replay could buy a second number you get billed for: on a carrier error or timeout, call list_numbers first to see whether the number actually landed, then retry at most once. New error codes documented: provisioning_rate_limit, no_numbers_in_area_code, and carrier_error on provisioning. No new tools; still 60.\n\nv2.12.8 (2026-08-11): SMS threads now come with recency built in. get_sms_conversation returns a context object that splits the thread into recentMessa
...[truncated 27 chars]
Confidence
91% confidence
Finding
The DELETE /v1/memory/:id operation can remove persisted memory items that influence future AI behavior, summaries, and call context, creating integrity and availability risks if invoked on the wrong record. Because this skill relies heavily on cross-call memory, accidental or manipulated deletion could materially alter agent decisions and degrade service correctness.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
"number.released"
    ]
  },
  "changelog": "v2.13.1 (2026-09-08): One-time 72-hour card-verified live trial, five minutes total, five verified-destination SMS attempts, no reset or automatic upgrade. Existing monthly Free offers are preserved. Read get_plan first. MCP 0.17.1 aligns hosted, stdio and HTTP instructions. Historical entries below describe past releases, not current offers.\n\nv2.13.0 (2026-08-25): Two new tools so an agent can help its human upgrade: get_plan reads the plan, Free limits, and free AI minutes left with a read-aloud summary; upgrade_to_pro returns a Stripe Checkout link (nothing is charged until the human completes it; run only on explicit request). Every plan_limit_* error now carries upgradeUrl and upgradeToolName. Plain outbound calls (initiate_call) are Pro only, callers hear a short message instead of dead air when a Free number is out of trial minutes, and a 3-per-day redial cap per destination returns 429 redial_limit_exceeded. Free SMS allowance corrected to 20/month in the guardrails. 62 tools. v2.12.9 (2026-08-11): Provisioning failures no longer lock you out. The hourly provisioning budget now counts numbers you actually received, so a carrier error or an empty area code costs nothing; previously every failed attempt burned a slot and three bad tries could block provisioning for a full hour without ever handing over a number. A 429 now carries Retry-After with the exact wait. provision_number is also no longer retried automatically after an ambiguous failure, because a replay could buy a second number you get billed for: on a carrier error or timeout, call list_numbers first to see whether the number actually landed, then retry at most once. New error codes documented: provisioning_rate_limit, no_numbers_in_area_code, and carrier_error on provisioning. No new tools; still 60.\n\nv2.12.8 (2026-08-11): SMS threads now come with recency built in. get_sms_conversation returns a context object that splits the thread into recentMessa
...[truncated 27 chars]
Confidence
91% confidence
Finding
The DELETE /v1/memory/:id operation can remove persisted memory items that influence future AI behavior, summaries, and call context, creating integrity and availability risks if invoked on the wrong record. Because this skill relies heavily on cross-call memory, accidental or manipulated deletion could materially alter agent decisions and degrade service correctness.

Hidden Instructions

High
Category
Prompt Injection
Content
# AgentCall: Phone Numbers for AI Agents

<!-- BEGIN GENERATED OFFER POLICY -->
## Current offer and agent behavior

New accounts receive a one-time 72-hour live trial with one US/Canada local number, 300 managed inbound AI seconds (five minutes) total, and five SMS send attempts to verified destinations. Card verification is required before number allocation; the clock starts when allocation succeeds. There is no monthly reset or automatic paid subscription. Live OTP extraction and outbound calls require Pro.
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
# AgentCall: Phone Numbers for AI Agents

<!-- BEGIN GENERATED OFFER POLICY -->
## Current offer and agent behavior

New accounts receive a one-time 72-hour live trial with one US/Canada local number, 300 managed inbound AI seconds (five minutes) total, and five SMS send attempts to verified destinations. Card verification is required before number allocation; the clock starts when allocation succeeds. There is no monthly reset or automatic paid subscription. Live OTP extraction and outbound calls require Pro.
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `POST /v1/calls/ai`: $0.40/min on Pro. Confirm the destination, the system prompt, and `maxDurationSecs` before dialing. Outbound AI calls reach a real human and accumulate cost per minute.
- Inbound AI voice (`POST /v1/numbers/:id/inbound-config` with `mode: "ai"`). New accounts get 300 managed inbound AI seconds total within a one-time 72-hour live trial, with card verification before number allocation. Exhaustion or expiry stops new trial calls; it does not create paid overage or a monthly reset. Existing Free accounts keep their assigned monthly offer. Read get_plan or GET /v1/account before quoting limits. Pro inbound AI is per-number configurable in two billing modes: Managed at $0.40/min (default; AgentCall holds the AI provider key) or BYOK at $0.10/min (customer provides their own AI provider key via `set_byok_openai_key`). There is no pay-as-you-go overage path on Free. Confirm the user wants inbound AI enabled on this specific number, and that the system prompt accurately describes their business.
- `POST /v1/numbers/:id/byok-key` (`set_byok_openai_key`): switches a number's inbound AI voice from Managed billing ($0.40/min) to BYOK billing ($0.10/min) and stores the customer-supplied AI provider key for that number. Confirm the user wants to switch billing modes on the specific number, that they have a working key on hand, and that they understand the per-minute rate change before invoking.
- `DELETE /v1/numbers/:id/byok-key` (`disable_byok`): removes the stored BYOK key on a number and reverts it to Managed billing ($0.40/min). Confirm the user wants to revert billing modes; the system prompt, voice, recording flag, and notify block on the number are preserved.
- `POST /v1/numbers/:id/premium-voice` (`set_premium_voice`): enables Premium Voice on a number, or changes which premium voice it uses. Premium Voice is an opt-in Pro add-on: a curated voice library, the same 31 languages as the standard voice plus auto-detect, full caller memory, billed at $0.
...[truncated 26 chars]
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `POST /v1/calls/ai`: $0.40/min on Pro. Confirm the destination, the system prompt, and `maxDurationSecs` before dialing. Outbound AI calls reach a real human and accumulate cost per minute.
- Inbound AI voice (`POST /v1/numbers/:id/inbound-config` with `mode: "ai"`). New accounts get 300 managed inbound AI seconds total within a one-time 72-hour live trial, with card verification before number allocation. Exhaustion or expiry stops new trial calls; it does not create paid overage or a monthly reset. Existing Free accounts keep their assigned monthly offer. Read get_plan or GET /v1/account before quoting limits. Pro inbound AI is per-number configurable in two billing modes: Managed at $0.40/min (default; AgentCall holds the AI provider key) or BYOK at $0.10/min (customer provides their own AI provider key via `set_byok_openai_key`). There is no pay-as-you-go overage path on Free. Confirm the user wants inbound AI enabled on this specific number, and that the system prompt accurately describes their business.
- `POST /v1/numbers/:id/byok-key` (`set_byok_openai_key`): switches a number's inbound AI voice from Managed billing ($0.40/min) to BYOK billing ($0.10/min) and stores the customer-supplied AI provider key for that number. Confirm the user wants to switch billing modes on the specific number, that they have a working key on hand, and that they understand the per-minute rate change before invoking.
- `DELETE /v1/numbers/:id/byok-key` (`disable_byok`): removes the stored BYOK key on a number and reverts it to Managed billing ($0.40/min). Confirm the user wants to revert billing modes; the system prompt, voice, recording flag, and notify block on the number are preserved.
- `POST /v1/numbers/:id/premium-voice` (`set_premium_voice`): enables Premium Voice on a number, or changes which premium voice it uses. Premium Voice is an opt-in Pro add-on: a curated voice library, the same 31 languages as the standard voice plus auto-detect, full caller memory, billed at $0.
...[truncated 26 chars]
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `POST /v1/numbers/:id/byok-key` (`set_byok_openai_key`): switches a number's inbound AI voice from Managed billing ($0.40/min) to BYOK billing ($0.10/min) and stores the customer-supplied AI provider key for that number. Confirm the user wants to switch billing modes on the specific number, that they have a working key on hand, and that they understand the per-minute rate change before invoking.
- `DELETE /v1/numbers/:id/byok-key` (`disable_byok`): removes the stored BYOK key on a number and reverts it to Managed billing ($0.40/min). Confirm the user wants to revert billing modes; the system prompt, voice, recording flag, and notify block on the number are preserved.
- `POST /v1/numbers/:id/premium-voice` (`set_premium_voice`): enables Premium Voice on a number, or changes which premium voice it uses. Premium Voice is an opt-in Pro add-on: a curated voice library, the same 31 languages as the standard voice plus auto-detect, full caller memory, billed at $0.59/min only on the numbers where it is enabled (the 10 standard voices stay the default at $0.40/min). Applies to both inbound calls and outbound AI calls placed from the same number. Pass a `voiceId` from `list_premium_voices`. The number must already have inbound AI configured; enabling premium never wipes the rest of the inbound config; idempotent. Confirm the exact numberId, the chosen voice, and that the user accepts the $0.59/min premium rate before invoking. Requires Pro + a card on file + inbound AI configured, else returns 403 / 402 / 409 respectively; surface that error, do not retry.
- `DELETE /v1/numbers/:id/premium-voice` (`disable_premium_voice`): reverts a number to the standard inbound AI voice, stopping the $0.59/min add-on. Preserves the rest of the inbound config. Idempotent. Pro plan only.
- `list_premium_voices` (`GET /v1/calls/premium-voices`, no auth): browse the Premium Voice catalog (id, name, description, gender, accent, sampleUrl). Use the returned id with set_premium_voice.
- Optiona
...[truncated 25 chars]
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `POST /v1/numbers/:id/byok-key` (`set_byok_openai_key`): switches a number's inbound AI voice from Managed billing ($0.40/min) to BYOK billing ($0.10/min) and stores the customer-supplied AI provider key for that number. Confirm the user wants to switch billing modes on the specific number, that they have a working key on hand, and that they understand the per-minute rate change before invoking.
- `DELETE /v1/numbers/:id/byok-key` (`disable_byok`): removes the stored BYOK key on a number and reverts it to Managed billing ($0.40/min). Confirm the user wants to revert billing modes; the system prompt, voice, recording flag, and notify block on the number are preserved.
- `POST /v1/numbers/:id/premium-voice` (`set_premium_voice`): enables Premium Voice on a number, or changes which premium voice it uses. Premium Voice is an opt-in Pro add-on: a curated voice library, the same 31 languages as the standard voice plus auto-detect, full caller memory, billed at $0.59/min only on the numbers where it is enabled (the 10 standard voices stay the default at $0.40/min). Applies to both inbound calls and outbound AI calls placed from the same number. Pass a `voiceId` from `list_premium_voices`. The number must already have inbound AI configured; enabling premium never wipes the rest of the inbound config; idempotent. Confirm the exact numberId, the chosen voice, and that the user accepts the $0.59/min premium rate before invoking. Requires Pro + a card on file + inbound AI configured, else returns 403 / 402 / 409 respectively; surface that error, do not retry.
- `DELETE /v1/numbers/:id/premium-voice` (`disable_premium_voice`): reverts a number to the standard inbound AI voice, stopping the $0.59/min add-on. Preserves the rest of the inbound config. Idempotent. Pro plan only.
- `list_premium_voices` (`GET /v1/calls/premium-voices`, no auth): browse the Premium Voice catalog (id, name, description, gender, accent, sampleUrl). Use the returned id with set_premium_voice.
- Optiona
...[truncated 25 chars]
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `create_schedule` (`POST /v1/numbers/:id/schedules`): schedules a proactive text the agent sends FIRST (a one-time appointment reminder, or a recurring digest). Each time it fires it sends one outbound SMS ($0.015 on Pro) to a real person who did not just message in, and a recurring schedule keeps firing until cancelled. Confirm the recipient, the message (or the recurrence and timezone), and the timing before creating it. Pro plan only; the number must have inbound AI / `smsMode: "ai"`. Offer `cancel_schedule` as soon as the schedule is no longer needed.

**Irreversible actions:**
- `DELETE /v1/numbers/:id`: releases the number permanently. The same number cannot be re-provisioned. Always confirm before releasing, and warn the user that this is irreversible.
- `POST /v1/calls/:callId/hangup`: terminates an in-flight call. Usually fine but confirm if the call may still be progressing toward its goal.

**External-effect actions (contact real people):**
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `create_schedule` (`POST /v1/numbers/:id/schedules`): schedules a proactive text the agent sends FIRST (a one-time appointment reminder, or a recurring digest). Each time it fires it sends one outbound SMS ($0.015 on Pro) to a real person who did not just message in, and a recurring schedule keeps firing until cancelled. Confirm the recipient, the message (or the recurrence and timezone), and the timing before creating it. Pro plan only; the number must have inbound AI / `smsMode: "ai"`. Offer `cancel_schedule` as soon as the schedule is no longer needed.

**Irreversible actions:**
- `DELETE /v1/numbers/:id`: releases the number permanently. The same number cannot be re-provisioned. Always confirm before releasing, and warn the user that this is irreversible.
- `POST /v1/calls/:callId/hangup`: terminates an in-flight call. Usually fine but confirm if the call may still be progressing toward its goal.

**External-effect actions (contact real people):**
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `create_schedule` (`POST /v1/numbers/:id/schedules`): schedules a proactive text the agent sends FIRST (a one-time appointment reminder, or a recurring digest). Each time it fires it sends one outbound SMS ($0.015 on Pro) to a real person who did not just message in, and a recurring schedule keeps firing until cancelled. Confirm the recipient, the message (or the recurrence and timezone), and the timing before creating it. Pro plan only; the number must have inbound AI / `smsMode: "ai"`. Offer `cancel_schedule` as soon as the schedule is no longer needed.

**Irreversible actions:**
- `DELETE /v1/numbers/:id`: releases the number permanently. The same number cannot be re-provisioned. Always confirm before releasing, and warn the user that this is irreversible.
- `POST /v1/calls/:callId/hangup`: terminates an in-flight call. Usually fine but confirm if the call may still be progressing toward its goal.

**External-effect actions (contact real people):**
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `create_schedule` (`POST /v1/numbers/:id/schedules`): schedules a proactive text the agent sends FIRST (a one-time appointment reminder, or a recurring digest). Each time it fires it sends one outbound SMS ($0.015 on Pro) to a real person who did not just message in, and a recurring schedule keeps firing until cancelled. Confirm the recipient, the message (or the recurrence and timezone), and the timing before creating it. Pro plan only; the number must have inbound AI / `smsMode: "ai"`. Offer `cancel_schedule` as soon as the schedule is no longer needed.

**Irreversible actions:**
- `DELETE /v1/numbers/:id`: releases the number permanently. The same number cannot be re-provisioned. Always confirm before releasing, and warn the user that this is irreversible.
- `POST /v1/calls/:callId/hangup`: terminates an in-flight call. Usually fine but confirm if the call may still be progressing toward its goal.

**External-effect actions (contact real people):**
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Post-configuration responsibility:**
- Monitor usage: periodically call `get_usage` or point the user at the dashboard at /billing.
- Disable as soon as the configuration is no longer needed: proactively offer `disable_inbound_ai` (or `DELETE /v1/numbers/:id/inbound-config`) when the user's stated goal has been met (testing finished, campaign over, business closed for the season).
- If the user reports unexpected calls or charges, call `disable_inbound_ai` first, then investigate.

If the user's request is ambiguous (e.g. "set up a phone number" with no type or country, or "send a text" with no recipient), ask one or two clarifying questions before invoking a billable tool.
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Post-configuration responsibility:**
- Monitor usage: periodically call `get_usage` or point the user at the dashboard at /billing.
- Disable as soon as the configuration is no longer needed: proactively offer `disable_inbound_ai` (or `DELETE /v1/numbers/:id/inbound-config`) when the user's stated goal has been met (testing finished, campaign over, business closed for the season).
- If the user reports unexpected calls or charges, call `disable_inbound_ai` first, then investigate.

If the user's request is ambiguous (e.g. "set up a phone number" with no type or country, or "send a text" with no recipient), ask one or two clarifying questions before invoking a billable tool.
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Release a number (irreversible):**
```
DELETE /v1/numbers/:id
```

**Rename a number or change its inbound AI voice/language (partial update, preserves all other inbound config):**
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Release a number (irreversible):**
```
DELETE /v1/numbers/:id
```

**Rename a number or change its inbound AI voice/language (partial update, preserves all other inbound config):**
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Disable inbound AI (calls hang up at carrier):**
```
DELETE /v1/numbers/:numberId/inbound-config
```

### Voice billing mode: Managed vs BYOK (per number)
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Disable inbound AI (calls hang up at carrier):**
```
DELETE /v1/numbers/:numberId/inbound-config
```

### Voice billing mode: Managed vs BYOK (per number)
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Switch a number back to Managed (revert billing mode):**
```
DELETE /v1/numbers/:numberId/byok-key
Response: { "voiceMode": "managed", "hasByokKey": false, "byokOpenaiApiKeyPreview": null }
```
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
**Switch a number back to Managed (revert billing mode):**
```
DELETE /v1/numbers/:numberId/byok-key
Response: { "voiceMode": "managed", "hasByokKey": false, "byokOpenaiApiKeyPreview": null }
```
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```
POST   /v1/numbers/:numberId/schedules     # create a schedule
GET    /v1/numbers/:numberId/schedules      # list schedules (?status= optional)
DELETE /v1/numbers/:numberId/schedules/:id  # cancel + remove
```

Each schedule is one of two timings and one of two message styles:
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```
POST   /v1/numbers/:numberId/schedules     # create a schedule
GET    /v1/numbers/:numberId/schedules      # list schedules (?status= optional)
DELETE /v1/numbers/:numberId/schedules/:id  # cancel + remove
```

Each schedule is one of two timings and one of two message styles:
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Static analysis

No suspicious patterns detected.