---
audience: everyone
summary: "You send a message and the AI never replies \u2014 or replies and then nothing."
title: AI isn't responding
path: troubleshooting/ai-not-responding
status: published
---

# AI isn't responding

## Symptom: No reply at all

After you send a message, there's no typing indicator, no reply,
nothing in the chat header about generation.

Possible causes:

- **No AI engaged in the room.** Even with `@<ai-name>`, the AI
  must be a member. Type `/engage <ai-name>` once to bring them in.
- **Engagement mode is `mention` but no `@mention` in your
  message.** Either add a mention or `/engage` first.
- **AI is disabled at the tenant level.** Admin: check
  `GET /v1/admin/ai-config → enabled_models`.

## Symptom: Typing indicator, then nothing

The AI says it's typing, then the indicator disappears with no
reply. Causes (visible in the error message that should appear in
chat — `swp.model.error` event):

- **`SW_AI_NO_TOKEN`** — no valid ScaiGrid token. Often a misconfigured
  ScaiGrid URL or expired service token. Admin: check
  `SCAIWAVE_SCAIGRID_URL` and run
  `scripts/scaigrid_service_token_smoke.py`.
- **`MODEL_NOT_FOUND`** — the AI's model id isn't registered with
  this tenant on ScaiGrid. Re-enable in **Admin → Models**.
- **`SW_AI_BUDGET_EXCEEDED`** — monthly token cap hit. Either wait
  for the cap to roll, or admin raises it.
- **`SW_AI_BUSY`** — another generation is in flight for this AI in
  this room. Click **Stop** or wait.

## Symptom: AI starts streaming, then stops mid-sentence

Three common causes:

- **You sent another message.** Engagement cancels in-flight
  generation when a new user message arrives.
- **Tool call took too long.** Plugin timeout is 30s. The AI
  usually reports this and either falls back or finishes its reply.
- **ScaiGrid stream disconnect.** Transient; the AI catches the
  error and replies "I lost connection to ScaiGrid mid-generation."

## Symptom: AI calls the wrong tool / gives weird answers

Not strictly an error; check:

- **System prompt override**. Studio → see what's actually being
  injected. A stale override can confuse the model.
- **Plugin loadout**. Maybe the right plugin is disabled per-room.
  Admin: **Room settings → Plugins**.
- **Temperature too high**. Default is 0.7; try 0.3 for more
  deterministic behaviour.

## Symptom: Sidekick "spawning…" forever

Sidekick task status sticks at `spawning`. Causes:

- **No sidekick worker running.** Admin: check `make worker` is
  alive in prod; check ARQ queue depth.
- **Concurrency cap hit.** `SW_SIDEKICK_CAP_REACHED` should have
  been returned at spawn time, but if you're using a script that
  ignores response codes, this can happen. Check
  `GET /v1/rooms/{id}/sidekicks`.

## Symptom: Plan stuck on a step

Plan in `running` state, current step `in_progress`, but no
visible progress. Possible:

- **Auto-step budget exhausted.** Plan card shows `paused` with a
  message. Just click **Resume** (or send any message in the room).
- **Step's tool call is hung.** 30s plugin timeout should rescue
  this; if it doesn't, **Cancel** the plan and start fresh.
- **AI gave up silently.** Plan stays `running` because nothing
  called `step_failed`. **Cancel** + restart.

## Where to look (admin)

- WebSocket log: `swp.model.error` events for this room.
- ARQ worker logs: any `index.embedding_failed`,
  `scaigrid.request_failed`, or unhandled exceptions.
- ScaiGrid request logs (their side) with the `request_id` from
  the error message.
