---
name: "Web UI silently swallows chat errors including OAuth login link"
---

# Bug 450: Web UI silently swallows chat errors including OAuth login link

## Description

When the WebSocket chat returns an error (e.g. OAuth authentication failed with a login URL), the `onError` handler in `Chat.tsx` only logs to `console.error` and resets loading state. The error message is never displayed to the user. This means the OAuth login link from story #448 works on Matrix/WhatsApp but is invisible in the web UI.

## How to Reproduce

Use the web UI with missing or expired OAuth credentials. Send any chat message. The server detects auth failure, attempts token refresh, fails, and returns an error containing a login URL over WebSocket.

## Actual Result

Nothing visible happens. The error is logged to browser console only. The user sees no feedback.

## Expected Result

The error message (including the clickable OAuth login link) should be displayed in the chat as an assistant message so the user can act on it.

## Acceptance Criteria

- [ ] WebSocket error messages are displayed in the chat UI as assistant messages
- [ ] OAuth login URL in the error is rendered as a clickable link
- [ ] Consistent with how Matrix and WhatsApp transports display the same error
