---
title: Chat Issues
description: >-
  Troubleshoot chat streaming, tool calls, citations, and rendering issues on
  the platform.
tags:
  - troubleshooting
  - chat
---

 A chat turn streams the model's answer to your browser while the orchestrator runs tool calls on the server. Most chat issues clear when you start a fresh conversation or switch models. If a tool call fails, the orchestrator reports the error to the model, which retries or tries another tool.

## Streaming failures

Chat responses stream from the AI model in real time via Server-Sent Events (SSE). When streaming is interrupted, you may see partial responses or stalled output.

**Symptoms:**
- The response stops mid-sentence with no completion indicator.
- The loading spinner keeps spinning but no text appears.
- The response appears all at once after a long delay (buffering issue).

**Common causes and fixes:**

| Cause | Symptom | Fix |
|-------|---------|-----|
| Network interruption | Response stops and "Reconnecting..." appears | Wait for automatic reconnection. If it does not reconnect within 30 seconds, reload the page. |
| Idle connection closed by a proxy | Response stops during a long silent stretch, often while the model is thinking | Some proxies close HTTPS responses that stay quiet too long. Turn thinking to "auto" or "off", or ask IT to allow long-lived responses (see [Networking](/docs/troubleshooting/network#corporate-proxy-setup)). |
| Browser throttled background tab | Response appears incomplete when switching back to the tab | Keep the chat tab in the foreground during streaming. Chrome throttles background tab network activity. |
| Ad blocker blocking SSE | No streaming at all, only errors | Allowlist `*.ivybiosciences.com` in your ad blocker. See Browser troubleshooting for details. |

**Connection drops during long responses:**
- Responses from advanced models with tool calls can take several minutes. Keep the tab open until the answer finishes.
- If the connection drops, reload the page. Whatever the chat saved is shown again, and jobs the turn submitted keep running on Modal.
- ⚠︎ Follow-ups that fire when an async job finishes are delivered through the tab that started the job. If you close that tab, reopen the chat and ask for the result.
- If the response didn't complete because the model hit an error, the error appears at the end of the partial response.

## Tool call errors

When the AI invokes tools (database queries, job submissions, calculations), those tool calls can fail independently of the chat stream.

### Tool not found (error 1001)

The AI requested a tool that isn't in the tool registry.

- This usually means the model invented a tool name. The orchestrator reports the error back so the model can pick a real tool.
- If you see this error repeatedly for the same request, rephrase your question. The model may be misreading what you want.

### Tool validation failed (error 1002)

The parameters the AI passed to the tool did not match the expected schema.

- The validation error goes back to the model, which usually retries with corrected parameters. You rarely need to act.
- If the retry also fails, the AI will explain what went wrong and ask for clarification.
- Common validation failures: SMILES string was malformed, UniProt ID had wrong format, PDB ID was incorrect.

### Tool execution failed (error 1003)

The tool started executing but encountered a runtime error.

- Check the error detail in the tool call card. It shows the specific error from the backend.
- Common causes: the external database (UniProt, PubChem, NCBI) was temporarily unavailable, the input entity was not found, or the query returned too many results.
- For database tools, try being more specific in your query. Instead of "search for kinase inhibitors," try "search PubChem for SMILES matching c1ccc2[nH]c3ccccc3c2c1."

### Tool timeout (error 1004)

The tool exceeded its maximum execution time.

- Database lookups time out in seconds. GPU jobs on Modal run asynchronously, so a long job doesn't hold the chat turn open.
- If a tool times out, the AI reports the timeout and can suggest alternatives, such as a simpler query or splitting the request.

**Tool call cards:**
- Each active tool call displays as a card in the chat stream showing the tool name, parameters, and status (running, completed, failed).
- Completed tool calls show a summary of the results. Click "View full results" to see the complete output.
- Failed tool calls show the error code and message. The AI uses this error to adjust its approach.

## Citations not appearing

The platform has two layers of citation extraction. If citations are missing, one or both layers may not be working.

**Client-side citations (instant):**
- These are extracted at render time from markdown links in the AI's response.
- Links to recognized scientific databases (for example UniProt, PubChem, PubMed, ChEMBL and RCSB PDB) become citations.
- If the AI didn't include a markdown link, this layer has nothing to extract.
- This layer runs in your browser at render time, so it doesn't wait on any external service.

**Backend citations (post-stream):**
- After the AI finishes responding, the backend runs `injectCitations()` to resolve entity names (e.g., "BRCA1") to database URLs.
- This step has a 3-second budget. If the NCBI or PubChem APIs are slow, some citations stay unresolved.
- Backend citations are best-effort and non-blocking. They appear 1-3 seconds after the response completes.
- If backend citations consistently do not appear, the external API may be experiencing issues. Check the NCBI and PubChem status pages.

**Deduplication:**
- Both layers are deduplicated by `source:identifier`. If the AI already linked to a PubMed article, the backend will not add a duplicate.

## Response style not applying

The chat offers four response styles: concise, balanced (the default), detailed and technical. If your selected style doesn't seem to apply:

- **Style is per-session.** Changing the style only affects new messages in the current session. Previous messages are not reformatted.
- **Model override.** Some models (especially smaller/faster ones) may not follow style instructions as closely. Try a more capable model if style adherence is important.
- **Re-select the style.** If the old style persists, pick a different style in the chat header, send a message, then switch back.

## Thinking mode stuck

Thinking has three settings: "auto" (the model decides, with a 5,000-token budget), "on" (always, with an 8,000-token budget) and "off". While the model reasons, the chat shows a thinking indicator.

**Normal thinking duration:**
- Simple questions: 2-5 seconds of thinking.
- Complex analysis: 10-30 seconds of thinking.
- Multi-step reasoning with tool calls: up to 60 seconds.

**If thinking mode seems stuck (over 2 minutes):**
1. Check your network connection. Thinking tokens are generated server-side but the connection must remain open.
2. The model may have genuinely hit a difficult reasoning step. Wait up to 3 minutes.
3. If nothing happens after 3 minutes, click "Stop" to cancel the response and try again.
4. Set thinking to "off" if you don't need it for this particular question.

**Token budget:**
- Thinking reserves up to 5,000 tokens ("auto") or 8,000 tokens ("on") for reasoning. These tokens count toward the model's context window.
- If you're near the context window limit, thinking may fail because there isn't room for both the reasoning and the answer. Start a fresh chat.

**Model compatibility:**
- Not every model supports extended thinking. With a model that doesn't, the thinking setting has no effect.

## SMILES chips not rendering

When the AI mentions a molecule by SMILES notation, the platform renders an inline preview chip showing a 2D structure.

**If SMILES chips appear as plain text:**
- The SMILES string may be malformed. Invalid SMILES cannot be parsed by RDKit and fall back to plain text.
- The RDKit WebAssembly module may not have loaded. Reload the page and wait for the initial bundle to finish loading.

**If the 2D structure looks wrong:**
- RDKit 2D depiction uses a default coordinate generator. Some molecules (especially macrocycles) may have unusual 2D layouts. This does not affect the underlying chemistry.
- Stereochemistry is preserved in the SMILES but may not be visible in the 2D depiction at small sizes.

## File references broken

The AI can reference files in your project using `@filename` notation. If file references show as "File not found":

- **File deleted.** If you or a team member deleted the file, references to it break.
- **Wrong project context.** Ensure you are in the correct project. File references are project-scoped.
- **Filename typo or spaces.** A name with spaces must be quoted: `@"my file.pdb"`.
- **Storage issue.** If storage (Amazon S3) is having problems, file references may fail for a while. The file still exists; it just can't be retrieved right now. `curl https://www.ivybiosciences.com/api/health` shows the storage check.

## Context window exceeded

Each AI model has a maximum context window. When the conversation exceeds this limit, you will see degraded behavior.

**Symptoms:**
- The AI starts "forgetting" information from early in the conversation.
- The AI gives shorter or less detailed responses.
- An explicit "Context window exceeded" error appears.

**Context window sizes:**

The context window depends on the model you pick. Check the model's provider page (Anthropic, or the model's listing on OpenRouter) for its current size.

**What consumes context:**
- Every message in the conversation (yours and the AI's).
- Tool call inputs and outputs.
- File contents that were uploaded or referenced.
- The system prompt and tool definitions.
- Thinking tokens (up to 5,000 or 8,000 per response, depending on the setting).

**Recommendation:** When the conversation becomes very long (50+ messages with tool calls), start a fresh chat. The AI performs best with a focused conversation. You can reference results from previous chats by their Job IDs.

## Ticket checklist

If you need to contact support about a chat issue:

- The chat's URL (`/chat/[username]/[chatSlug]`)
- The exact message you sent that caused the issue
- The model you were using
- Your thinking setting (auto, on or off)
- Screenshots showing the error or unexpected behavior
- Browser and OS version
