Skip to content

Troubleshooting

Start with what you noticed, then follow the checks below. Your agents can call for updates, decisions or a conversation — on the terms you set. History can help you review a recorded call and its outcome; it cannot prove what a device displayed or what either side heard.

On this page

It didn’t ring

  1. Check the account. The agent connection and the phone must use the same account.
  2. Check calling availability. Open Availability in Settings. Do not disturb and quiet hours can silence new calls before a notification is requested.
  3. Check this device. In Devices & notifications, choose Ring this device and follow the permission prompt. Confirm that it appears in the list. Registration alone does not prove that a notification was displayed or heard.

Notifications are blocked or the device disappeared

If Settings says notifications are blocked, allow them for AgentCall in your browser or system settings, then try enrollment again. When a push service reports that a registration is no longer valid, AgentCall can remove it. Enroll a missing device again and follow any error shown.

iPhone: open the Home Screen app

Web push on iPhone requires a Home Screen web app. In Safari, use Share → Add to Home Screen, open AgentCall from its Home Screen icon, and enable notifications there. A regular browser tab is not the same installation. Check the app’s notification and Focus settings too.

Locked screen: browser and Android app

The installed web app uses browser notifications. If one appears, wake the screen and tap it to open the call. Sound, vibration and how long a notification remains visible depend on the browser, device settings and whether the ring is still active; a web notification is not a full-screen native call.

Android app availability
An Android app with a real lock-screen ring — Answer and Decline on the lock screen — is in private beta and not yet available to install.

If you already have the private beta, check its notification and full-screen call permissions. Background and battery restrictions can affect incoming rings, including after the app is swiped away. Review the app’s system settings if it only receives calls while open.

Android: force stop, Do Not Disturb or driving

After using Force stop in Android settings, open the app again before trying another call. A force-stopped app cannot rely on background delivery. Reopening makes another test possible; it does not guarantee the next ring.

System Do Not Disturb and driving modes can silence or restrict notifications and full-screen presentation. Check the exceptions you want to allow, separately from AgentCall’s own Availability settings. When you are ready, request an update from Agents. This queues a callback for a compatible waiting agent; it does not place an immediate phone call.

Other enrolled devices may still receive a ring. Optional voicemail lets an eligible agent leave a message after an unanswered or declined call; it is not automatic coverage for every missed notification.

A refused attempt or a dismissed ring

Rings and voicemail share a limit of 10 attempts per minute. A status: "rate_limited" result means that attempt did not ring; it is not a missed call. Wait before trying again.

Choosing Dismiss or Decline explicitly declines that ring. The agent can receive no_answer with declined: true, rather than a claim that nobody responded. Ask for a callback from Agents when you want to resume.

Authentication expired

If tool calls report an authorization error, check the agent’s connection and authorize it again with the same account as your devices. Current client recipes are in Agent connections.

  • Claude Code. Open /mcp, select agentcall and choose Authenticate or Re-authenticate, as shown. From a shell, use claude mcp login agentcall. Its --no-browser option prints the authorization URL for a headless session; follow the prompt to open it and paste the redirect URL back into that terminal.
  • Codex CLI. Use codex mcp login agentcall. Check the matching server entry in ~/.codex/config.toml if the connection is missing.
  • A client using an MCP token. Check its configured credential and the token’s status in MCP tokens. A revoked token needs a new credential; repeating an OAuth login does not repair a token-based connection.
Check the scope before removing a connection
Re-authenticate before deleting configuration. If you intentionally remove a Claude Code entry with claude mcp remove agentcall -s local, check which scope you are removing and be prepared to authenticate the connection you keep. Removal is not required for an ordinary expired login.

Signing in to the Android app

The app opens your browser

Choose Sign in with your browser in the app. Google sign-in uses your phone’s browser rather than the app’s web view. Sign in there, check the account named on the handoff page, then choose Continue only if you started this sign-in.

If the app does not come forward, use Open the app. Returning to the app starts the remaining sign-in steps; it does not by itself confirm that they succeeded. The app waits five minutes for the browser return. The one-time link is valid for two minutes after it is created.

The app is still waiting or refuses the handoff

The app accepts only the pending sign-in it started. A timeout, a newer sign-in attempt or a link from another flow can be refused. Read the message under the button and start again with Sign in with your browser if asked. If a call is active, finish it before starting sign-in again; returning from the browser does not override that restriction.

“Sign-in didn’t finish” or “App setup didn’t finish”

An expired or already-used link, a refused request or an unavailable sign-in service can stop the flow. Use Start sign-in again, then Sign in with your browser in the app. A handoff-page error may instead offer Try again; that returns to the account confirmation before another Continue.

App setup didn’t finish means the account was signed in but the app’s remaining setup failed. Follow its recovery message. Neither error confirms that another device was notified or that the app is ready to answer calls.

Tools missing in a session

If an agent cannot find the call tools, check its current connection before asking it to place another call. See Quickstart for the existing client setup paths.

  • Claude Code scope. Without --scope user, an added server defaults to local scope; another project may not see it. Inspect your entries with claude mcp list. To register the shared user-scope connection:
    Claude Code · user-scope connection
    claude mcp add --transport http --scope user agentcall https://agentcall.io/api/mcp

  • Reconnect the session. A session opened before setup may not yet expose the tools. Reconnect from /mcp or start a fresh session after registration and authentication.
  • Codex CLI. Confirm [mcp_servers.agentcall] in ~/.codex/config.toml and a successful codex mcp login agentcall.
  • Other compatible clients. Confirm the server URL and the OAuth or token method in that client’s connection recipe. A configured server and a running agent session are separate checks.

The agent won’t hang up

If the agent says goodbye but the call remains open, one possible cause is a farewell sent through converse, which waits for a reply, instead of end_call. A status label alone does not establish what the microphone or agent is doing.

  • Ask the agent to “end the call” so it uses end_call.
  • Or choose End on your active Call screen. The agent’s waiting tool can receive your final text with ended: true, or a call_ended event without new words. It should use the words actually returned rather than assume a reply was heard.

The call dropped

Review the recorded outcome in History. An ended call has several possible causes; the record is a useful starting point, not a diagnosis of the phone’s network.

“Call ended” while you were talking

A client_gone outcome means the call detected a gap in the phone’s contact with the server. The reconnect grace is 45 seconds. Check connectivity and whether the browser or app was closed or suspended, then request a callback from Agents when ready.

“Agent disconnected”

An agent_gone outcome means the agent stopped showing activity long enough for the call’s checks to end it: 5 minutes while not waiting for you, or 45 seconds while waiting. Check the agent’s session for a stopped process, error or interrupted connection before requesting another call.

The same outcome ends a ring whose agent went away before anyone answered: once the ring window of 180 seconds has passed without the agent touching it, the ring is closed rather than left ringing for a call nothing is holding — and answering it is refused, because there would be no agent on the other end.

Android: screen off or Android Auto

Backgrounding is not intended to end a call immediately, but the system can suspend or stop the browser or app. Microphone continuity is not guaranteed when the screen is off or another app takes over. If a call drops, return to the app when safe and check its state; a lost client connection is subject to the 45-second grace above.

“Dropped (reconciled)” in History

A later cleanup closed an unfinished History record. This can happen when the original process stopped before recording an ending. The badge does not prove precisely when the call ended or what either side heard. Review the available transcript before resuming work.

Garbled or wrong transcript

  • Set a language hint. In Voice & language, choose a transcription language instead of Auto-detect if recognition keeps switching languages. It is a hint to recognition, not a guarantee of an exact transcript.
  • Reduce competing sound. A quieter place may help. Echo cancellation and noise suppression do not prevent every nearby voice or noise from being transcribed.
  • Use concise turns. Finish your thought, then pause. A pause can close a turn; trailing off or thinking aloud may change where the reply is divided.
  • Interrupt when needed. Speaking over agent playback is supported and can mark an interruption. Noise filtering cannot promise that every brief sound is ignored. Check the transcript if playback stopped unexpectedly.
  • Type instead. Choose Type on your active Call screen when voice input is unavailable or unsuitable.
  • Confirm consequential instructions. Agents are instructed to confirm destructive or irreversible actions verbally. Correct words you did not say and review the transcript before relying on it.

Busy

One live call can occupy an account at a time. Another agent’s request_human can return busy while a ring or call is active; it should wait before retrying. The normal ring window is 180 seconds.

The server also checks recent activity when deciding whether an abandoned call can be reclaimed. Its 90-second claim-freshness check is separate from the disconnection grace periods above; it is not a guaranteed call duration or a promise of an exact cleanup time.

If an agent keeps seeing busy, open Call and review the current state. End a call only if you intend to close it, then ask the waiting agent to retry.

“Daily voice allowance reached”

Check Usage in Settings for today’s speech allowance and the reset time. The allowance resets at the UTC day boundary, shown in your local time.

Reaching the daily speech allowance does not require ending the conversation. Agent lines can be shown as text, and you can reply with Type. See the allowance guide for what the counters include.