# Limits and troubleshooting

> Know what voice agents cannot do today, and fix the problems that come up most.

Source: https://docs.vlayers.ai/build/limits

Kind: Reference

Knowing these up front saves you designing around a capability that is not there, or debugging something with a one-line answer.

## Not supported today

| Limit | What to do instead |
|---|---|
| **A voice agent cannot send an SMS mid-call on its own.** Texting has its own consent and registration rules, so it is not a tool the agent can call by itself. | Have the agent confirm by voice and record what happened, then send the message from your own systems. See [Send SMS](https://docs.vlayers.ai/developers/send/sms). |
| **Caller ID does not look people up.** `{{ caller_id }}` is always there, but turning a number into a customer is your lookup. | Add a **Call an API** step against your CRM with the number as input. See [Tools](https://docs.vlayers.ai/build/tools). |
| **Post-call summaries are sampled.** Transcripts and the action timeline are kept for every call; automatic summaries and topic tags run on a sample. | Do not build a workflow that assumes every call has a summary. |
| **No cross-call topic analytics yet.** You can read any single call in full; "what did people call about this week?" is not built. | Read calls under **Conversations**, or export the data. |

## Common problems

| Problem | Fix |
|---|---|
| The agent speaks a variable as an empty gap | The variable was never captured. Run a dry run: captures appear inline, so you see which step failed. Check the spelling matches exactly. See [Variables](https://docs.vlayers.ai/build/variables). |
| It asks the same question twice | It did not hear an answer it could use, or treated a pause as the end of the caller's turn. Try **Patient caller** in [Voice and turn-taking](https://docs.vlayers.ai/build/voice). |
| It talks over the caller | The same setting, the other way: it ends the caller's turn too eagerly. |
| A transfer did not connect | Check the destination is E.164 (`+14155550100`) and someone answers it. Browser and Playground callers cannot be transferred: test from a phone. See [Transfers](https://docs.vlayers.ai/build/transfers). |
| A proper noun comes out wrong | Speech-to-text guesses at unusual names. Confirm important values back to the caller. |
| An SDK agent shows **Offline** | Its worker stopped or lost its connection: an agent is online only while something runs it. See [Voice agent SDK](https://docs.vlayers.ai/developers/sdks/voice-agents). |
| You see two copies of an agent | An agent is identified by name and environment. A worker started in a different environment than the one it was registered in creates a second row. |
| Your changes are not live | Saving keeps a draft. Publish, then go live: the dry run uses the last saved draft, which is why it can differ from what callers hear. |

## Start with the call itself

Open the call under **Dashboard → Conversations**. The transcript shows what the agent did between turns, with failures in red. Most questions are answered by reading it top to bottom before you look at logs.

## Next steps

- [Testing](https://docs.vlayers.ai/build/testing): Catch these before a customer does.
- [Error codes](https://docs.vlayers.ai/errors): Every error the API answers, with the fix.
