Claude agents fail silently when default model requires usage credits (Fable 5)
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
### Summary
Default agents (e.g. Bumble) appear online and receive `@mentions`, but never reply in-channel when Claude Code’s default model is set to **Fable 5** (`claude-fable-5[1m]`), which requires usage credits on a Claude Pro subscription.
The harness logs a clear error and requeues the turn; the Desktop UI and channel stay silent. From the user’s perspective the agent is “broken.”
### Environment
- Buzz Desktop **v0.4.21**
- Runtime: **Claude Code** via `claude-agent-acp`
- Claude auth: **claude.ai Pro** (`claude auth status` → `loggedIn: true`, `subscriptionType: pro`)
- Relay: hosted community relay (e.g. `wss://*.communities.buzz.xyz`)
- macOS arm64
### Steps to reproduce
1. Install / use Claude Code with a Pro login.
2. Set Claude default model to Fable 5 (or leave it if Claude already chose it), e.g. in `~/.claude/settings.json`:
```json
{ "model": "claude-fable-5[1m]" }
```
3. Start a managed Buzz agent with `agent_command` / override `claude-agent-acp` (welcome team / default agents is enough).
4. Confirm agent presence is online in a channel the agent is a member of.
5. Send `@Bumble hello` (or any mention) from the owner account.
6. Observe: no reply in the channel; no in-app error surface about credits/model.
### Expected
- Agent replies, **or**
- Agent/Desktop posts a visible failure in-channel or in the Agents UI, e.g.
“Claude model Fable 5 requires usage credits — switch model or run `/usage-credits`.”
### Actual
- Mention is received and dispatched by `buzz-acp`.
- Claude ACP session starts, then fails:
```
Fable 5 requires usage credits. Run /usage-credits to continue or switch models with /model.
session_prompt error: Agent reported error (code -32603): Internal error: Fable 5 requires usage credits...
requeueing failed batch with backoff
agent_returned (application error — pipe intact) outcome=error
```
- Channel stays empty; user only sees silence.
### Workaround
Change Claude default model to a plan-included model:
```json
// ~/.claude/settings.json
{ "model": "sonnet" }
```
Restart agents. After that, `@Bumble` replies normally (verified: agent pubkey replied `pong` in `#general`).
### Related / secondary bug
`buzz-acp --model sonnet` / `BUZZ_ACP_MODEL=sonnet` did **not** override the bad default:
```
desired model sonnet not found in agent's available models — proceeding with agent default
```
even though `buzz-acp models --agent-command claude-agent-acp` lists `sonnet` under stable configOptions. Session then still hit Fable 5 until `~/.claude/settings.json` was changed.
Suggest treating model-override catalog matching as a follow-up, but the **user-visible bug** is silent failure on LLM/auth/credit errors.
### Suggested fix directions
1. **Surface hard turn failures** to the channel or Agents panel (at least once per failure class; don’t only requeue quietly).
2. On Claude ACP init/prompt errors matching usage-credits / auth, map to a clear readiness / doctor state.
3. Prefer a safe default model for Claude Pro (sonnet/haiku) when Fable requires extra credits, or warn at agent start if default model is credit-gated.
4. Fix `--model` / `BUZZ_ACP_MODEL` so IDs from `buzz-acp models` actually apply via `session/set_model` / `set_config_option`.
### Logs (redacted)
```
INFO buzz_acp: connected to relay ... presence set to online
DEBUG buzz_acp: agent_claimed channel=
INFO acp::session: session created: ...
INFO acp::stream: Fable 5 requires usage credits. Run /usage-credits to continue or switch models with /model.
ERROR pool::prompt: session_prompt error: ... code -32603 ... Fable 5 requires usage credits
WARN buzz_acp::queue: requeueing failed batch with backoff attempt=1
WARN buzz_acp: agent_returned outcome=error configured_model=
```
### Impact
High for first-run / default agents: welcome team looks alive (online) but never answers if Claude’s default is Fable 5. Easy to misdiagnose as “agents don’t work” or relay/auth issues.
### Related issues
- #1743 — Agent @mentions silently fail when mentioned agent is offline (related silent-failure UX; this issue is when the agent is **online** but the LLM fails)
Contributor guide
Research direction
Reproduce the failure with Claude Code set to claude-fable-5[1m] and a managed agent using claude-agent-acp, then follow the buzz-acp session_prompt, queue requeueing, and agent_returned logs. Compare the channel and Agents UI behavior for the reported usage-credit error. Done means the failure is visibly surfaced to users instead of leaving the online agent silent.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100