Claude Subscription cannot use Claude Fable 5.1 — User-Agent pinned to claude-cli/2.1.183 (needs ≥2.1.250)
- Dominant language
- TypeScript
- Stars
- 53
- Forks
- 17
- Avg merge
- 2h 5m
- Merged PRs (30d)
- 1
Description
## Summary
Alma's built-in `claude-subscription` provider lists **Claude Fable 5.1** (`claude-fable-5-1`) in the model picker, but the model cannot actually be used.
Alma spoofs Claude Code as **`claude-cli/2.1.183`**. Anthropic requires **Claude Code ≥ 2.1.250** for Fable 5.1 (Fable 5 only needed ≥ 2.1.170).
This is a **core Alma provider** issue, not a marketplace plugin. Opening here because `yetone/alma-plugins` is the public issue tracker.
## Environment
- Alma **v0.4.17** (latest; `alma update check` → already up to date)
- Provider: `claude-subscription` (Claude Subscription, OAuth)
- Model: `claude-fable-5-1` / Claude Fable 5.1 (released 2026-09-01)
- OS: macOS
## Expected
Selecting Claude Fable 5.1 on Claude Subscription should work the same way as Claude Fable 5 (`claude-fable-5`).
## Actual
- `claude-fable-5-1` **does appear** in the Claude Subscription model list (catalog comes from [models.dev](https://models.dev/api.json); Fable 5.1 is already there).
- Enabled models on this machine include both `claude-fable-5` and `claude-fable-5-1`.
- Requests through the subscription OAuth path still cannot use Fable 5.1.
## Root cause
In the packaged app (`app.asar`), the Claude Subscription client is pinned to an old Claude Code fingerprint:
```
Lp = "2.1.183"
Fp = "claude-cli/2.1.183 (external, cli)"
```
OAuth calls go to `https://api.anthropic.com` with that `User-Agent`.
Official docs:
- Fable 5 → Claude Code **≥ 2.1.170**
- **Fable 5.1 → Claude Code ≥ 2.1.250**
- The `fable` alias only resolves to Fable 5.1 starting with **Claude Code v2.1.255** (before that it still resolved to Fable 5)
Also: `claude-fable-5-1` does **not** appear as a string in Alma 0.4.17. Capability detection uses `modelId.includes('claude-fable-5')`, which would match `claude-fable-5-1` as a prefix, so adaptive-thinking handling is probably fine. The blocker is the **version gate**, not thinking/tool payload shape.
## Suggested fix
Bump the spoofed Claude Code version to **≥ 2.1.250** (ideally **≥ 2.1.255** so the `fable` alias maps to 5.1).
## Workaround
Use an Anthropic API-key / Bedrock / other compatible provider instead of `claude-subscription`.
## References
- [Claude Fable models on your plan](https://support.claude.com/en/articles/15424964-claude-fable-models-on-your-plan)
- [Claude Code model configuration](https://code.claude.com/docs/en/model-config)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the Claude Subscription client and the packaged app.asar references to the pinned `claude-cli/2.1.183` User-Agent. Check the version gate used for OAuth requests, then verify that `claude-fable-5-1` works through the subscription provider while existing Claude Fable 5 behavior remains unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 62/100