# Error messages in the chat

> Find the exact message on your screen, look it up here, and how to fix it.

- Canonical: https://big-agi.com/docs/issue-messages
- Minimum tier: open  [Open ⊂ Free ⊂ Pro - a tier only ever ADDS to the Open baseline]
- Kind: group-lead · Last content update generation: 2026-07-27 · Review by: 2026-10-25
- Answers: I got an error I don't understand - what does it mean? · Is this my fault, Big-AGI's, or the AI service's? · Is it down, or is it me? · Did Big-AGI already retry before showing me this? · Where do I report this?

Big-AGI retries most transport failures on its own. When an operation stops anyway - an overloaded server, a network drop, a protocol change - the chat message carries the reason.

Errors arrive at three points: connecting, when servers are overloaded; streaming, on an abrupt disconnection; and decoding, when an AI service changes its protocol. The index below maps the exact string to its fix.

## Identify the issue class

| The message starts with | What failed |
|---|---|
| `[<Vendor> issue]:` | The AI service answered and refused the call. |
| `[<Vendor> network issue]: Could not connect:` | Nothing answered - the Big-AGI server could not reach that address. |
| `Missing <Vendor> API Key` | No credential reached the request: yours, or the one your deployment supplies. |
| `**network error**` | Your own browser connection. |
| `**connection terminated**` | The server in front of Big-AGI cut a live stream. |
| `**upstream dropped**` | The AI service closed the socket mid-answer. |
| `**Request too large**` | A size limit in front of the app, before any AI service saw it. |
| `**Network issue**: The network returned an HTML page` | Something between you and the app: a Wi-Fi sign-in page, a proxy, an extension. |
| `Sync not available` · `Storage quota exceeded` · `Unknown feature status` | Your Big-AGI account, never the AI service. |

Then fix it: refresh the model list (`Ctrl + Shift + M` -> **Models**), retry the model, or switch to another model - at the same vendor, or a different one.

## Key and access issues

| What you see | What it means | Fix |
|---|---|---|
| `[OpenAI issue] Unauthorized: Incorrect API key.` | The AI service rejected the credential - any OpenAI-compatible service can emit this exact string | [Key & access](/docs/issue-key-and-access#openai-issue-unauthorized-incorrect-api-key) |
| `Upstream responded with HTTP 401 Unauthorized` | The key arrived and was refused | [Key & access](/docs/issue-key-and-access#upstream-responded-with-http-401-unauthorized) |
| `Upstream responded with HTTP 403 Forbidden` | The key is accepted; this account may not do this | [Key & access](/docs/issue-key-and-access#upstream-responded-with-http-403-forbidden) |
| `Gemini: Check API key restrictions in Google Cloud Console` | A referrer restriction on the key, not a bad key | [Key & access](/docs/issue-key-and-access#upstream-responded-with-http-403-forbidden) |
| `Missing <Vendor> API Key. Add it on the UI or server side (your deployment).` | No credential reached the request - one string per vendor, one cause | [Key & access](/docs/issue-key-and-access#missing-vendor-api-key) |
| `An error occurred. Please check your API Key.` · `An error occurred. Please check your server.` | The setup panel's fallback when the service's own text was unusable | [Key & access](/docs/issue-key-and-access#an-error-occurred-please-check-your-api-key) |
| A key that looks right in the field and still fails | The field checks length only; it never tests the key | [Keep your key safe](/docs/key-storage#rotating-and-revoking) |
| `Cloudflare AI Gateway API Host is not valid.` · `Cloudflare AI Gateway only supports OpenAI as a provider.` | The gateway URL is malformed, or points at an upstream that path does not serve | [Custom endpoints](/docs/connect-custom-endpoints#proxies-and-company-gateways) |
| Direct Connection is on and every request fails | The AI service accepts the setting and refuses the browser call | [Key & access](/docs/issue-key-and-access#direct-connection-is-on-and-every-request-fails) |
| The Direct Connection row is absent for a service | That service does not permit browser calls at all | [Direct Connection](/docs/feature-direct-connection) |
| `This sign-in link has already been used or has expired.` and the other sign-in refusals | Your Big-AGI account, not an AI service | [Account & Pro](/docs/account-pro#when-this-doesnt-work) |

> **Direct Connection works only with your API key stored in the browser**, and with an AI service that permits direct browser calls (CORS). Where it cannot be used, requests route through the Big-AGI fast edge servers instead - everything still works, within the standard upload size and time limits.

## AI service issues

| What you see | What it means | Fix |
|---|---|---|
| `429 Too Many Requests` · `rate_limit_exceeded` | Too fast. Four automatic attempts already made; waiting works | [Key & access](/docs/issue-key-and-access#429-too-many-requests) |
| `You exceeded your current quota` · `insufficient_quota` | Out of money or allowance. Never retried - waiting changes nothing | [Key & access](/docs/issue-key-and-access#i-have-credit-and-it-still-says-quota) |
| `Insufficient balance or no resource package` · `credit balance is exhausted` | A prepaid balance at zero | [Key & access](/docs/issue-key-and-access#i-have-credit-and-it-still-says-quota) |
| `Request too large for <model> ... Limit <n>, Requested <n>` | One request exceeds the per-minute token limit; retrying cannot help | [Key & access](/docs/issue-key-and-access#429-too-many-requests) |
| `rate limit of 0 input tokens per minute` | Your organisation has no access to that model | [Key & access](/docs/issue-key-and-access#rate-limit-of-0-input-tokens-per-minute) |
| A free tier that stopped answering part-way through a session | A speed limit, not a spending cap | [Key & access](/docs/issue-key-and-access#429-too-many-requests) |
| Several Beam cards failing at the same moment | One rate limit hitting parallel calls | [Key & access](/docs/issue-key-and-access#429-too-many-requests) |
| Spend landed slightly above the cap you set | Enforcement at the AI service lags behind usage | Expected: the console usage page is the ledger |
| The balance keeps topping itself up | Auto top-up is on at the AI service | Switch it off in the service's billing page |
| Big-AGI's total disagrees with the invoice | The in-app figure is a local estimate priced from a catalogue that can lag | The invoice is authoritative |
| `Missing tokens for pricing` · `Model pricing not available` · `Incomplete Message - Partial Cost` | The cost display saying it cannot price this one | Cosmetic - the answer itself is complete |

## Network issues

| What you see | What it means | Fix |
|---|---|---|
| `An unexpected issue occurred: **network error**.` · `An issue occurred: **network error**` | Your own connection dropped, mid-answer or before the request left | [Stalled or cut off](#stalled-or-cut-off) |
| `An unexpected issue occurred: **connection terminated**.` | The server in front of Big-AGI closed a live stream | [Stalled or cut off](#stalled-or-cut-off) |
| `The AI provider interrupted mid-stream: **upstream dropped**.` | The AI service closed the socket | [Stalled or cut off](#stalled-or-cut-off) |
| `**Request too large**: Your message or attachments exceed the request size limit of the server.` | A size limit in front of the app | [Stalled or cut off](#stalled-or-cut-off) |
| `**Network issue**: The network returned an HTML page instead of expected data.` | A sign-in page, proxy or extension answered instead of Big-AGI | [Stalled or cut off](#stalled-or-cut-off) |
| `🧱 Token limit hit.` with a `Continue...` button | The reply reached its output limit. Not an error | [Stalled or cut off](#stalled-or-cut-off) |
| `Issue: <message>` appended to a reply | The request started and then failed | [Stalled or cut off](#stalled-or-cut-off) |
| `Issue: no model selected.` · `Issue: no history available.` · `Issue: no URL provided.` | A precondition, not a failure | [Stalled or cut off](#stalled-or-cut-off) |
| `An unexpected error occurred: <text> Please retry.` · `An unexpected issue occurred: <text> Please retry.` | A transport or stream-processing failure with no classification | [Stalled or cut off](#stalled-or-cut-off) |
| `No model selected` on a Beam card · `Invalid conversation history (N)` · `Merge Stopped` | One card cannot run, or a merge was cancelled; the run survives | [Stalled or cut off](#stalled-or-cut-off) |
| The whole answer appears at once, at the end | A proxy is buffering the stream | [Stalled or cut off](#stalled-or-cut-off) |
| Replies still end early after raising **Maximum Tokens** | A lower limit applies | [Model settings](/docs/model-settings#which-setting-to-change) |
| A merge that errors immediately, or a Guided checklist that came back as prose | The merge model or the mode, not the network | [Combining answers](/docs/multi-model-fusion) |

## Big-AGI issues

| What you see | What it means | Fix |
|---|---|---|
| `No models found.` | The key stored and the AI service returned an empty list | [Model not listed](#model-not-listed) |
| `Please complete the configuration` · `and refresh the models.` | Nothing configured for this service yet | [Model not listed](#model-not-listed) |
| A model you expected is not in the dropdown | It is in the list and hidden | [Model not listed](#model-not-listed) |
| A model used yesterday is gone, and pinned jobs reverted to **Auto** | The AI service stopped returning it | [Model not listed](#model-not-listed) |
| Ollama, LM Studio or LocalAI is running and Big-AGI lists nothing | The Big-AGI server is calling your `127.0.0.1`, not your browser | [Model not listed](#model-not-listed) |
| `403 Forbidden` from `127.0.0.1:11434` | Ollama refused your browser's origin | [Model not listed](#model-not-listed) |
| `Max Output Tokens: Token computations are disabled because this model does not declare the context window size.` | The model works; its metadata is thin | [Model not listed](#model-not-listed) |
| **Done** greyed out with `You have unsaved changes` (`Unsaved` on mobile) | A key was typed and never stored | [Add your key](/docs/connect-models) |
| No eye buttons on the model rows | **View Hidden Models** is off, or you are on a phone | [Manage your model list](/docs/connect-models) |
| The dropdown choice is ignored | The active persona pinned its own model | [Personas](/docs/feature-personas#pinning-a-model-a-voice-and-merge-buttons) |
| A custom endpoint saved cleanly and listed nothing | It serves chat but not a model list | [Custom endpoints](/docs/connect-custom-endpoints#models-without-the-bells-and-whistles) |
| A second device, browser or profile is empty | Expected - chats live in the browser that made them | [Missing chats](/docs/issue-missing-chats#my-chats-arent-on-my-other-device) |
| Signed in on the hosted app and the chats vanished | Signed-in and signed-out work are separate stores in this browser | [Missing chats](/docs/issue-missing-chats#i-signed-in-and-my-chats-are-gone) |
| Signed out and the chats are gone | What happens depends on whether you were signed in at all | [Missing chats](/docs/issue-missing-chats#i-signed-out-and-my-chats-are-gone) |
| Browser data cleared, chats gone | Where the bytes were, and whether anything is left | [Missing chats](/docs/issue-missing-chats#i-cleared-my-browser) |
| A conversation you deleted on purpose and now want back | Recoverable for 90 days on a subscribed account with the trashcan on | [Missing chats](/docs/issue-missing-chats#i-deleted-a-chat-and-want-it-back) |
| An off-the-record chat vanished on reload | Nothing was written; there is nothing to recover | [Missing chats](/docs/issue-missing-chats#an-off-the-record-chat-vanished) |
| `Sync not available` · `Storage quota exceeded. Please upgrade your plan or free up space.` · `Unknown feature status` | Your Big-AGI plan, not the AI service | [Plans and billing](/docs/account-pro#if-you-cancel-or-stop-paying) |
| `N sync errors need attention` · `N conflicts need resolution` · `Real-time Sync Disconnected` | Sync reporting itself; automatic retries stop at two | [Sync and devices](/docs/feature-sync) |
| A restore replaced chats instead of merging them | **Replace Selected Data** does what it says | [Back up and restore](/docs/account-backup#restoring-a-settings-or-whole-device-file) |
| `Failed to clear device data` | A partial wipe | [Delete everything](/docs/account-delete#wiping-this-browser) |
| `Oops, we hit a snag` | The app crashed; this is the one worth reporting | [Report it](#oops-we-hit-a-snag) |
| `Update Required` | Big-AGI was redeployed while this tab stayed open. Reload | [Reload it](#update-required) |
| Chats from an older version of the app never appeared | A one-time storage migration that already ran | [Missing chats](/docs/issue-missing-chats#my-chats-from-an-older-version-didnt-come-across) |

> **Pro:** Chats, personas and rambles stay on this device and browser only, unless you subscribe to Pro: cloud backup and multi-device sync (1 GB). On Open there is no sync. Disabling sync never deletes local data.

## Stalled or cut off

Every row that lands here shares one shape: the request started and did not finish cleanly. Big-AGI already retried what it retries on its own, and whatever text arrived stays in the message - `Issue: <reason>` is appended under it rather than replacing it.

| How it stopped | Whose it was | Do |
|---|---|---|
| `**network error**` | your browser's connection | check your network, retry |
| `**connection terminated**` mid-stream | the server in front of the hosted app | retry; if long answers keep dying, shorten with **Cleanup** |
| `**upstream dropped**` | the AI service closed the socket | retry once, then switch model or vendor |
| the whole answer appears at once, at the end | a proxy between you and the app is buffering the stream | own instance: [reverse proxy requirements](/docs/self-host-configuration#behind-a-reverse-proxy); at work, the corporate proxy |
| `🧱 Token limit hit.` with **Continue...** | not an error - the reply reached its output limit | press **Continue...**, or raise the limit ([which setting](/docs/model-settings#which-setting-to-change)) |
| `Issue: no model selected.` and the other `Issue:` preconditions | nothing failed; something was missing before a request could exist | supply it: pick a model, add history, give the URL |
| one Beam card stopped, the others kept going | that card's model, not the run | rerun the card; the run survives |

## Model not listed

The model list is what the AI service returned the last time this browser asked - press **Models** (`Ctrl + Shift + M`) to ask again. Four cases:

1. **The list came back empty.** The key worked; the service answered with nothing. On local servers that is the norm, not a fault: LM Studio lists only what is loaded, Ollama only what is pulled. Cloud side, the cause is provider-specific - open your service's page from [Connect Models](/docs/connect-models).
2. **The model exists and is hidden.** Hidden is not absent: **View Hidden Models**, then the eye buttons. Managing the list is [Add your AI services](/docs/connect-models).
3. **The server is calling itself.** `127.0.0.1` in a hosted app names the Big-AGI server's own machine, not yours. A model server on your machine needs [Direct Connection](/docs/feature-direct-connection) or an address the server can reach - walked through on [Ollama](/docs/connect-ollama), [LM Studio](/docs/connect-lmstudio) and [LocalAI](/docs/connect-localai).
4. **The service withdrew the model.** Gone-since-yesterday means removed or renamed upstream; jobs pinned to it fall back to **Auto**. Refresh the list and re-pin.

`Token computations are disabled...` under **Max Output Tokens** is none of these: the model runs; its metadata is thin.

## Is it down, or is it me?

Two requests answer it. Ask the same model again: a one-off overload clears. Then ask a different vendor's model the same thing: if that works, the first vendor is having trouble, and their status page will say so. If nothing works anywhere, it is your network or this tab - reload and check your connection. The status page that matters is the AI service's: your requests go to them, so their page is authoritative, not ours.

## Oops, we hit a snag

The app itself crashed - the one message on this page produced by Big-AGI rather than relayed, and the one worth reporting every time. Your chats are untouched: they live in this browser's storage, and a reload brings the app back around them. Before reloading, open the **Error Details** fold and copy the text - that plus what you did immediately before is the whole report: [where to send it](#where-to-send-new-error-messages).

## Update Required

Not a fault: Big-AGI was redeployed while this tab stayed open, and the tab asked for a file that no longer exists. The app reloads itself once to pick up the new version; if the screen stays, reload manually. Nothing is lost either way. On your own instance this follows every update while old tabs stay open.

## Where to send new error messages

A message that is not in the tables above is either new or rare - both worth reporting.

| Channel | Best for |
|---|---|
| [AI-assisted triage](https://github.com/enricoros/big-AGI/issues/new?template=ai-triage.yml) | anything reproducible - it files a structured GitHub issue |
| [Discord](https://discord.gg/MkH4qj2Jp9) | quick questions, "is this just me" |
| support@big-agi.com | hosted-account issues: billing, sign-in, sync |

Include the exact text of the message, copied whole - the substrings route the fix - plus the model and service, what you did immediately before, and whether it repeats. On your own instance, attach `/dev/debug` -> **Download debug JSON**: build identifiers and capability booleans, never a key value.

Leave out: your key, always; conversation content, which support does not need; and whole chat exports - **Export All** files carry your API keys.
