The LLM update that mattered in April 2026 was not a benchmark. It was a rate-limit tier.
Every roundup of large language model updates in April 2026 ranks Opus 4.7, GPT-5.2, Gemma 4, and GLM-5.1 by benchmark. None cover the operational change that actually moved real users: Anthropic's new seven_day_opus weekly rate-limit tier, and the nine-line Swift migration inside Fazm that force-switched every existing Opus user over to Sonnet the next time they opened the app.
Large language model updates that shipped in April 2026
The anchor fact
0 lines of Swift, one UserDefaults flag, every Opus user migrated
When Fazm shipped in early April 2026, the default model picker offered three tiers: Scary (Haiku), Fast (Sonnet), Smart (Opus). After Anthropic began enforcing the seven_day_opus weekly rate limit, a block of code ran at app launch to swap every existing Opus user onto Sonnet. The inline comment on the migration is the shortest summary of the month: Opus burns through rate limits too fast.
What happens on launch after the update
The migration is silent. There is no modal, no welcome back screen, no Release Notes card. Users who had 'Smart (Opus)' selected see 'Fast (Sonnet)' the next time they open the floating bar, and the rest of the session behaves exactly as before.
Migration timeline, first launch on Fazm 2.0.6 or later
Read savedModel from UserDefaults
The rate-limit tiers the bridge knows
Four labels, one switch statement, one reason for the migration
ChatProvider.swift lines 537 to 543 enumerate the four rate-limit type strings Anthropic's API returns during the April 2026 rollout. The label a user sees in the floating bar depends on which bucket Anthropic decides was exceeded. The seven_day_opus bucket is the one most Pro-plan users met this month.
five_hour
The short-window session limit. Resets every five hours. Typical of normal conversational usage and easy to drain on heavy days. Fazm surfaces it as 'session limit'.
seven_day
The general weekly limit. Applies across models when the user has blown past their overall plan quota. Fazm labels it 'weekly limit'.
seven_day_opus
The Opus-specific weekly limit Anthropic enforced aggressively in April 2026. Labeled 'Opus weekly limit'. A multi-session desktop agent can hit it in under a day. This is the label that forced the migration.
seven_day_sonnet
The Sonnet-specific weekly limit. Rare to hit in practice because Sonnet is cheaper per call. Labeled 'Sonnet weekly limit' for parity with the Opus case.
Default: 'usage limit'
Any unknown rate-limit type label flows through a default case and is surfaced as a generic 'usage limit'. Unknown labels never crash the UI.
The switch statement itself
Four cases, three new since January
Before the April 2026 wave, this switch had a single case (seven_day). By April 17 it had four. The seven_day_opus and seven_day_sonnet labels arrived with the ACP v0.25.0 upgrade on April 7.
Why the picker never needed a release to pick up Opus 4.7
The model list is dynamic. ACP SDK responses on startup reshape the picker at runtime. A known-family substring matcher maps model IDs to the friendly labels the user sees. Unknown families fall back to the raw API name.
ACP model list becomes the floating-bar picker
The dynamic refresh
updateModels(_:) is what kept Fazm current during April
When Opus 4.7 shipped, Fazm did not need a point release to start offering it. The ACP SDK reported the new model ID on the next launch, the substring matcher mapped it to the 'Smart' label, and the picker redrew.
April 2026, one week at a time, inside Fazm
April 3, 2026
v2.0.1: Pop-out chat windows landed. The default chat window became 30 percent wider and 50 percent taller. Unrelated to the model update, but relevant because the multi-window architecture is what made the per-session rate-limit story acute: Fazm now routes a main session, a floating-bar session, and an observer session in parallel.
April 4, 2026
v2.0.6: Smart / Fast model toggle added to the chat header bar. One tap to swap between Opus and Sonnet mid-conversation. The first public acknowledgement that Opus was not going to stay the default for long.
April 5, 2026
v2.0.7: Chat auto-falls back to the built-in account when the personal Claude account cannot access the selected model. This is the sibling of the weekly-rate-limit migration: same goal, different trigger.
April 7, 2026
v2.1.2: ACP protocol upgraded to v0.25.0 with improved error handling for credit exhaustion and rate limits. The seven_day_opus bucket started reporting cleanly through the bridge.
April 11, 2026
v2.2.0: Custom API endpoint setting added for proxies and corporate gateways. Enterprise users who could not reach api.anthropic.com directly got unblocked.
On next launch (all versions)
ShortcutSettings.swift migration at lines 287 to 296 runs. Every existing 'Smart (Opus)' user becomes a 'Fast (Sonnet)' user. The UserDefaults key shortcut_didMigrateFromOpus is flipped so the migration runs exactly once.
What the log file says on the first launch after the update
What the log said for users who had not yet updated
Pre-migration builds still let users stay on Opus. When the seven_day_opus bucket tripped, the floating bar surfaced the verbatim rate-limit label and prompted the user to switch tiers.
Before the April 2026 LLM updates vs after
Two snapshots of the same app. The one from March ran Opus as default. The one from April does not. Same codebase, same three tiers in the picker, different default.
| Feature | Fazm after April 2026 updates | Fazm in March 2026 |
|---|---|---|
| Default model in the floating bar | claude-sonnet-4-6 (Fast) | claude-opus-4-6 (Smart) |
| Rate-limit type labels the bridge recognizes | five_hour, seven_day, seven_day_opus, seven_day_sonnet (4) | five_hour, seven_day (2) |
| How the user switches model mid-conversation | Smart / Fast toggle in the chat header (one tap) | Settings > Model picker (three clicks) |
| Can the user point Fazm at a custom endpoint | Yes, ANTHROPIC_BASE_URL setting shipped v2.2.0 | No |
| How the model list is discovered | Dynamic from ACP SDK response, defaults as fallback | Static list in ShortcutSettings.defaultModels |
| What happens when personal plan cannot reach a model | Auto-fallback to bundled API key, query retried | Error surfaced to the user |
| Migration on app launch | shortcut_didMigrateFromOpus runs once, flips Opus to Sonnet | None related to model choice |
The whole April 2026 LLM story, compressed into a code comment
// Opus burns through rate limits too fast
That line is the inline comment above the migration at ShortcutSettings.swift line 287. It is the answer to a question no benchmark roundup asks: when you have to pick one default model for an app that runs constantly, which model survives a week of real use?
Opus 4.7 has the highest score on most April 2026 benchmarks. Sonnet 4.6 has the quota that survives a week. For a consumer Mac app that multiplexes sessions, that is the decisive attribute. The benchmark roundups will be superseded within thirty days. The migration comment will age fine.
“The shortcut_didMigrateFromOpus flag is checked on every app launch. If the user's saved model is 'claude-opus-4-6' and the flag is false, Fazm rewrites the saved model to 'claude-sonnet-4-6' and flips the flag to true. The migration runs exactly once per install.”
Fazm ShortcutSettings.swift, lines 287 to 296
Why a cheaper model was safe to promote to default
A screenshot-based desktop agent cannot make this swap. Sending every decision as a pixel array to a vision model burns tokens at a rate that makes a cheaper tier insufficient, and the pipeline itself is rate-limited at the vision endpoint before it ever hits the chat endpoint. The April 2026 weekly caps on Opus and Sonnet are a compounding problem for anything that takes frames.
Fazm does not take frames. It reads the macOS accessibility tree of any running Mac app as structured text: exact button labels, text-field values, menu structures, focused element references, window titles, child hierarchies. That is how the Mail app, the Calendar app, the Finder, or a SwiftUI window built by a third-party developer all look the same to the model. The token cost is a fraction of what a screenshot would be. A mid-tier model reads the tree accurately enough that pushing Opus down from 'default' to 'one tap away' does not degrade everyday automations.
The second reason the migration was safe: Fazm is a consumer product, not a developer framework. Most users never explicitly choose a model. The picker default is what they run. Swapping the default from Opus to Sonnet changes what most people experience by one tier. Power users who manually picked Opus can pick it again in one tap (the Smart / Fast toggle in the chat header, shipped April 4 in v2.0.6) and burn their own Opus quota on purpose.
What every LLM-update roundup misses
The headline items of the April 2026 model cycle are well covered. The operational layer, the layer where real consumer apps ship migrations in response to rate-limit tiers, is invisible in the press coverage. Here is the list of what the roundups leave on the table.
The operational story the benchmarks skip
- Per-model weekly rate-limit tiers (seven_day_opus, seven_day_sonnet) are separate from the general seven_day bucket
- A consumer app running multiple sessions in parallel hits seven_day_opus in hours, not days
- The dynamic model list API (ACP SDK /models) lets a picker redraw without a release
- Custom endpoints (ANTHROPIC_BASE_URL) became table stakes for enterprise rollouts in April
- A one-time UserDefaults migration is enough to re-default an entire install base silently
- Screenshot-based agents cannot survive a default move to a cheaper tier; accessibility-based agents can
Frequently asked questions
Frequently asked questions
What were the biggest large language model updates in April 2026?
The month was dense. On the closed-source side: Claude Opus 4.7 went GA with the same $5 / $25 per MTok pricing as 4.6, the redesigned Claude Code desktop app and Routines research preview landed on April 14, and Anthropic disclosed the internal Mythos model under the Project Glasswing controlled rollout on April 16. GPT-5.2 and Gemini updates continued their monthly cadence. On the open-weights side: Hugging Face saw heavy traction on new Qwen, DeepSeek, and Gemma releases, and GLM-5.1 variants kept arriving. But the operational story, the one that changes behavior inside consumer apps, is smaller and not on any roundup: Anthropic enforced a per-model seven_day_opus weekly rate limit that made Opus unworkable as a default in a desktop agent that runs multiple sessions in parallel.
What is the seven_day_opus rate limit and why does it matter?
Anthropic's API has four rate-limit type labels that Fazm's bridge recognizes (ChatProvider.swift lines 537 to 543): five_hour (session limit), seven_day (general weekly limit), seven_day_opus (Opus-specific weekly limit), and seven_day_sonnet (Sonnet-specific weekly limit). The seven_day_opus bucket is separate from the general seven_day bucket. In practice, a Pro-plan user who picks Opus as their default in a desktop agent like Fazm, which runs a main session, a floating-bar session, and a background observer session in parallel, can burn the Opus weekly quota in under a day. That turns the default 'Smart' tier into a brick for the rest of the week.
What did Fazm do in response to the Opus weekly rate limit?
Two things. First, on April 4 in version 2.0.6, Fazm added a Smart / Fast model toggle in the chat header bar so users could switch between Opus and Sonnet without leaving the conversation (from CHANGELOG.json). Second, a one-time migration was written into the app launch path that silently moved every existing 'Smart (Opus)' user over to 'Fast (Sonnet)' the next time they opened the app. The migration lives at lines 287 to 296 of /Users/matthewdi/fazm/Desktop/Sources/FloatingControlBar/ShortcutSettings.swift, gated by a UserDefaults flag named shortcut_didMigrateFromOpus. The inline comment reads: 'One-time migration: switch existing Opus users to Sonnet (Opus burns through rate limits too fast).' That sentence is the whole April 2026 LLM update story compressed into a code comment.
Does this mean Opus is worse than Sonnet?
No. Opus still scores higher on hard reasoning and long-horizon planning. The decision is a product decision, not a capability decision. For a consumer desktop agent that runs continuously and multiplexes many sessions, a model that hits a weekly wall is a worse default than a model that does not. Sonnet 4.6 is strong enough that most users will not notice the downgrade during normal use, and the 'Smart' tier is still one click away when they need it. The migration preserves user choice for anyone who explicitly re-picks Opus.
How does Fazm keep its model picker current when a new LLM drops?
The ShortcutSettings.swift updateModels(_:) function at lines 168 to 189 pulls a dynamic model list from the ACP (Agent Client Protocol) SDK response on startup. When a new Claude model ships, the list refreshes at the next app launch. A substring matcher at lines 158 to 162 maps known family substrings ('haiku', 'sonnet', 'opus') to friendly short labels ('Scary', 'Fast', 'Smart'). Unknown families fall back to the raw API display name (with 'Claude ' stripped). This is why Fazm did not need a release to pick up Opus 4.7 or any subsequent point release; the picker simply rebuilt itself.
What was the custom API endpoint setting and when did it land?
Version 2.2.0 on April 11, 2026 added 'Custom API endpoint setting for proxies and corporate gateways' (CHANGELOG.json line 29 of the v2.2.0 entry). This exposes the ANTHROPIC_BASE_URL environment variable to the user so they can route Claude traffic through a corporate proxy, a self-hosted gateway like LiteLLM, or a region-specific endpoint. The addition was demand-driven: enterprise rollouts in early April kept hitting corporate egress policies that blocked direct calls to api.anthropic.com. The feature is orthogonal to model choice but became table stakes for any app expecting to be adopted inside a company after the April update cycle.
How many large language models did Fazm track in April 2026?
The in-app picker defaults to three Claude tiers (Haiku 4.5, Sonnet 4.6, Opus 4.6) but the updateModels function accepts whatever the ACP SDK reports at runtime. Beyond Claude, the app delegates to skills in ~/.claude/skills and to MCP servers that can themselves target other models, so the effective set the app can talk to is broader. For direct chat, the picker is Claude-only. For programmatic automation via skills, any model that exposes a compatible API can be wired up.
What is the difference between five_hour, seven_day, seven_day_opus, and seven_day_sonnet?
ChatProvider.swift lines 537 to 543. The five_hour label is a short-window session limit that resets every five hours, typical of Claude Pro. The seven_day label is the general weekly usage limit. The seven_day_opus label is Opus-specific and the one most users hit in April 2026 because Opus is more expensive per call. The seven_day_sonnet label is Sonnet-specific and rarer in practice. The label determines the user-facing message. A seven_day_opus hit surfaces as 'Opus weekly limit, resets <date>' with a suggestion to switch to Sonnet. The app does not silently switch models on a rate limit; it tells the user and lets them choose.
Does this page apply to GPT-5.2, Gemma 4, GLM-5.1, and other April 2026 releases?
The specific Swift source lines apply to Fazm's Claude integration. The general pattern, that a consumer app's choice of default model is dictated by rate-limit economics and not by benchmark rank, applies across providers. OpenAI has its own per-model rate limits that shift with each release. Gemini has region-specific quotas. Open-weights models on Hugging Face shift the same problem onto the user's GPU. The anchor fact in this guide is Claude-specific, but the lesson is provider-agnostic.
Can I see the exact code that triggered the migration?
Yes. Open /Users/matthewdi/fazm/Desktop/Sources/FloatingControlBar/ShortcutSettings.swift. Lines 150 to 156 declare the three default models. Lines 158 to 162 hold the shortLabelMap for friendly 'Scary / Fast / Smart' labels. Lines 168 to 189 are updateModels(_:), the dynamic refresh. Lines 287 to 296 are the Opus to Sonnet one-time migration, gated by shortcut_didMigrateFromOpus. Line 290 is the match condition (savedModel == 'claude-opus-4-6' && !didMigrateOpus). Lines 291 to 293 are the swap. Every claim in this guide maps to one of those line ranges.
What about screenshot-based agents? Were they affected the same way?
Worse, in fact. Screenshot-based agents send every frame of a decision as a pixel array to a vision model. Each vision call consumes tokens at a much higher rate than text, so a screenshot-based agent on Opus burns the Opus weekly quota faster than any text-based app. Fazm uses macOS accessibility APIs instead of screenshots: the app reads the actual UI element tree of any running Mac application as structured text, which costs a fraction of the tokens and means a cheaper model like Sonnet 4.6 can make accurate decisions. This is the second reason the Opus to Sonnet migration was safe in April 2026: the pipeline was already designed to work with a mid-tier model.
How can I verify the anchor facts in this guide?
Open the Fazm desktop source tree. The shortcut_didMigrateFromOpus flag is defined and read in ShortcutSettings.swift lines 287 to 296. The rate-limit type labels are in ChatProvider.swift lines 537 to 543. The v2.0.6 changelog entry dated 2026-04-04 mentions the 'Smart/Fast model toggle in the chat header bar for quick switching between Opus and Sonnet.' The v2.2.0 changelog entry dated 2026-04-11 mentions the 'Custom API endpoint setting for proxies and corporate gateways.' Those two changelog lines and the Swift migration line are the three atoms that compose the April 2026 LLM-update story as seen from inside a shipping consumer app.
See the migration for yourself
Download Fazm on your Mac. Open Settings and look at the floating-bar model picker. If you were an Opus user on a prior install, you will see 'Fast (Sonnet)' selected by default after the first launch on 2.0.6 or later. The migration is nine lines of Swift, gated by a single UserDefaults flag, and you can verify the exact code on line 287 of ShortcutSettings.swift.
Download Fazm →
Comments
Public and anonymous. No signup.
Loading…