Shipping log - April 2026

Anthropic Claude release notes April 2026, read from downstream

Anthropic shipped Opus 4.7, Claude Design, Visualizations, Cowork GA, Managed Agents, and the ant CLI in a three-week stretch. Everyone else wrote that up. This is the other side of the wire: nine versions of a consumer Mac app, each one tagged to the specific upstream change that forced it.

Download Fazm for Mac
M
Matthew Diakonov
9 min
4.8from early Fazm users
Open-source Mac app at github.com/mediar-ai/fazm
Two ACP protocol bumps absorbed in 13 days
Opus 4.7 surfaced to users the day it went GA
0Fazm releases in April
0Days of active shipping
0ACP protocol bumps
v0.0.xACP minor jumps

The downstream release log

Every row below is a real Fazm version that shipped to users, with its date and the upstream Claude-side event it was responding to. No marketing copy, no re-skinned benchmarks, just the ship log.

Source of truth: CHANGELOG.json at the root of the Fazm repo.

1

April 3 - v2.0.1 pop-out chat and Retina-screenshot fix

First April release. Introduced detached chat windows and fixed Playwright screenshots exceeding Anthropic's API dimension limits on Retina displays. The screenshot limit issue only surfaced at scale, so accessibility-tree reads kept working while the screenshot path got patched.

2

April 4 - v2.0.6 Smart and Fast model toggle

Added a header toggle in the chat to switch between Opus and Sonnet without leaving the conversation. The labels Smart and Fast are the first public appearance of the family table that would absorb Opus 4.7 twelve days later.

3

April 5 - v2.0.7 and v2.0.9 model fallback and credits errors

Two releases in one day. Fixed chat failing silently when a personal Claude account lacked access to the selected model (auto-falls back to the built-in account) and surfaced error messages when Claude credits were exhausted instead of just stalling.

4

April 7 - v2.1.2 ACP bumped to v0.25.0

First Agent Client Protocol upgrade of the month. v0.25.0 improved error handling for credit exhaustion and rate limits. Onboarding stopped silently failing when new users ran out of credits and now showed an actual prompt to connect their own Claude account or skip.

5

April 9 - v2.1.3 manage subscription and pop-out errors

Minor release. Added a Manage Subscription button for Fazm Pro subscribers and fixed error messages that were not showing in the pop-out chat window after the ACP protocol bump.

6

April 11 - v2.2.0 custom API endpoint and global shortcut

Added a custom API endpoint setting for proxies and corporate gateways (important for enterprise users whose network team routes Anthropic traffic through a gateway) and a global shortcut Cmd+Shift+N to open a new pop-out chat from anywhere.

7

April 12 - v2.2.1 duplicate response fix

Single-line fix: duplicate AI response appearing in pop-out and floating bar when sending follow-up messages. Shipped within hours of the issue being reported.

8

April 16 - v2.3.2 privacy language and streaming leak fix

Shipped the same day Opus 4.7 went GA. Tightened onboarding and system prompt privacy language from 'nothing leaves your device' to 'local-first.' Also fixed AI responses leaking between pop-out chat windows during simultaneous streaming.

9

April 20 - v2.4.0 dynamic models, ACP v0.29.2, MCP servers

Biggest April release. Custom MCP server support via ~/.fazm/mcp-servers.json with a Settings UI. Available AI models now populate dynamically from the agent, so newly released Claude models appear without an app update. ACP upgraded to v0.29.2. Referrals launched with a $49 credit banner. Free trial shortened from 21 days to 1 day.

10

April 22 - v2.4.1 paywall, sign-in, and partial-models label fix

Last April release. Fixed paywall blocking users mid-onboarding, fixed a revoked sign-in causing the app to keep retrying in the background, and critically, fixed the Smart label showing for Sonnet users when Anthropic reports a partial model list. That last bug only exists because of the dynamic-models path that shipped two days earlier.

What the agent sends, and what we do with it

Before April 20, Fazm had a hard-coded list of Claude model IDs. After v2.4.0, the app reads whatever the agent reports at session start. Here is the actual shape of the payload the Swift side consumes.

ACPBridge.swift - models_available handler input

The matching is substring-based in ShortcutSettings.swift. opus maps to Smart, sonnet maps to Fast, haiku maps to Scary. That is the whole dynamic-models mechanism. Opus 4.7 fell through it the day it went GA because the substring still matched.

The signal path from Anthropic to the user

The app does not ship a per-model build. It sits downstream of a single aggregator, the ACP bridge, which is the only place a new Claude model has to register for a real user to see it.

Anthropic release to end user

Anthropic API
Vertex AI route
User's own key
ACP Bridge
Floating bar
Chat window
MCP tools

Two protocol bumps in 13 days

The Agent Client Protocol jumped four minor versions in April. Most of what we had to patch lived in the seams between the old and new message shapes. This is the flow that the April 7 and April 20 bumps changed.

ACP session/update after v0.29.2

Fazm (Swift)ACP BridgeClaude agentAnthropic APIsession/newinitialize v0.29.2list modelsOpus 4.7 + Sonnet + Haikumodels_availableonModelsAvailable(array)substring match -> labels

Every upstream event, and the downstream patch it caused

These are the cause-effect pairs that matter. Left column is what Anthropic did. Right column is what Fazm had to ship.

Opus 4.7 goes GA on April 16

New model ID lands in the ACP models_available payload. Dynamic family-labeling path in v2.4.0 resolves it to the Smart slot without any app-side rename. Users saw Opus 4.7 the same day.

ACP ships v0.25.0 on April 7

Credit-exhaustion error paths became explicit rather than silent timeouts. v2.1.2 picked it up and turned onboarding into a real prompt.

Partial models payload during rollout

When the agent reports only Sonnet (no Opus), the Smart label used to reassign to the highest-capability entry present. v2.4.1 pinned Smart to the opus substring explicitly.

ACP ships v0.29.2 on April 20

Brought dynamic models_available and custom MCP server support. v2.4.0 adopted both and wrote them to the Settings UI.

Credit-exhaustion error copy

Users on trial accounts started hitting a specific rate-limit error shape. v2.0.9 surfaced it in the UI and added a sign-in prompt instead of a stuck spinner.

Privacy language under scrutiny

Claude calls necessarily leave the device. v2.3.2 rewrote onboarding and system prompts from 'nothing leaves' to 'local-first' on the same day Opus 4.7 went GA.

This is not how screenshot-based agents absorb releases

Most consumer Mac agents that call Claude work by capturing pixels, running OCR, and handing the result to a vision model. That pipeline is expensive and, more importantly, indifferent to Anthropic's release cadence. The bottleneck is the vision step, not the model. Fazm reads the real macOS accessibility tree through AXUIElement for whatever app is under the cursor and hands that structured tree to the selected Claude model.

FeatureScreenshot + OCR agentFazm (accessibility tree)
Time to adopt Opus 4.7 after GARe-build and re-sign requiredSame day (v2.4.0 dynamic list)
Context going into the modelRe-OCR'd pixels each turnStructured AXUIElement tree
Works with any Mac appMostly browser tabsYes, accessibility API is system-wide
Cost per turn as context growsScales with screenshot sizeScales with tree depth
Consumer-friendly or dev frameworkUsually requires Python and API keysSigned, notarized Mac app

Verify it yourself

The repo is open source. If you want to spot-check any claim on this page, clone it and grep.

grep April 2026 releases out of CHANGELOG.json

For the dynamic-models handler: open Desktop/Sources/Chat/ACPBridge.swift and jump to line 1131. For the family labeler: open Desktop/Sources/FloatingControlBar/ShortcutSettings.swift.

What happens when Claude 5 or Mythos lands in the models array

The same dynamic-models path handles it. ShortcutSettings.swift has a catch-all at the bottom of its substring table that assigns an unrecognized family to sort order 99 and surfaces the raw API name. The app stays functional. A friendly label shows up in whichever release first ships a new row for the new family. If the next family is called, say, mythos, the table gets a fourth row, the label lands, and every existing user picks it up on the next relaunch. That is the whole upgrade path.

Number with a 1M context window currently available to 0% of Fazm users who pick Opus, since Opus 4.7 went GA on April 16.

Want to see the models_available path live?

Fifteen minutes, screen-shared, walking through the Swift handler and the CHANGELOG entries that produced this page.

Book a call

Questions about April 2026 Claude releases on Fazm

What did Anthropic actually ship in April 2026?

The headline release was Claude Opus 4.7, generally available on April 16, 2026 with a 1M context window and materially better long-horizon coding. Around that, Anthropic shipped Claude Design in research preview, Visualizations (inline charts and diagrams inside Claude responses), Claude Cowork GA on macOS and Windows, Claude Managed Agents in public beta, and the ant CLI for API work. Claude Opus 4.7 and Haiku 4.5 also rolled out to 27 AWS regions in Amazon Bedrock.

Why does Fazm have its own April 2026 release notes tied to Anthropic's?

Because Fazm is a consumer Mac app that runs every user query through a Claude agent via the Agent Client Protocol (ACP). When Anthropic changes model IDs, rolls out an SDK bump, or changes how credit-exhausted sessions surface, a downstream app has to react within days or users hit broken flows. Fazm shipped 9 versions in April 2026 (v2.0.1 on April 3 through v2.4.1 on April 22). Every one of them is in CHANGELOG.json at the root of the open-source repo.

How did Opus 4.7 appear in Fazm the day it went GA?

v2.4.0 on April 20 contains the relevant line: 'Available AI models now populate dynamically from the agent, so newly released Claude models appear without an app update.' Inside the app, the ACP bridge receives a models_available message from the agent at session start. That handler lives at ACPBridge.swift line 1131. The model IDs are substring-matched in ShortcutSettings.swift against a three-row family table (haiku, sonnet, opus) and the Smart / Fast / Scary label attaches to whatever the agent reports. When Anthropic started reporting claude-opus-4-7 on April 16, the table did not change. Only the ID did.

What bug did the partial models_available payload cause?

v2.4.1 on April 22 fixed 'model label showing Smart for Sonnet users when Anthropic reports a partial model list.' During rollout windows Anthropic's SDK occasionally reports only a subset of models (for example, Sonnet only, no Opus). The Fazm family labeler walked that short list and picked the highest-capability entry as Smart, which for a Sonnet-only payload was Sonnet. Users who had paid for Opus briefly saw a Sonnet model under the Smart label. The fix was to anchor Smart to the opus substring rather than the highest-ranked row in whatever list came back.

What protocol changes on the Claude side forced Fazm releases?

Two Agent Client Protocol bumps landed in April. v2.1.2 on April 7 upgraded ACP to v0.25.0 with improved error handling for credit exhaustion and rate limits, fixing a case where onboarding would silently fail when credits ran out. v2.4.0 on April 20 upgraded ACP to v0.29.2, which is also when the dynamic models_available list and custom MCP server support shipped. That is four minor-version jumps in 13 days.

What about the April 12 Claude Mythos preview - does Fazm support that?

Not yet. Claude Mythos (codename Capybara) is gated to security-researcher access in the April 7 preview and not yet surfaced through the ACP agent SDK Fazm runs on. When Anthropic reports it in the models_available payload with an identifiable family substring, the same dynamic-models path that picked up Opus 4.7 will pick it up. The table in ShortcutSettings.swift gets a fourth row and a new friendly label, no other code changes required.

Did Fazm users ever get downgraded to a worse Claude model without knowing?

Once, briefly, between v2.4.0 and v2.4.1. The 48-hour window on April 20-22 is the exact period when Anthropic's partial-models payload could make a Sonnet user see the Smart label under their Sonnet model. Nobody was forced onto a cheaper model. The labels just briefly drifted. v2.4.1 pinned Smart to the opus substring explicitly, so a payload that does not contain any opus model now shows Smart as unavailable rather than reassigning the label to whatever capable model is present.

Why does Fazm read the accessibility tree instead of screenshotting the screen?

Because a screenshot pipeline is fundamentally indifferent to Anthropic's release cadence - the bottleneck is the vision step, not the model. Fazm reads the real macOS accessibility tree (AXUIElement from the Accessibility API) for whatever app is under the cursor and hands that structured tree to the Claude model the user picked. The note on v1.5.0 on March 27 is specific: 'Screen capture and macOS automation now uses native accessibility APIs instead of browser screenshot.' A new Claude release immediately makes Fazm smarter because the context going into it is structured text, not re-OCR'd pixels.

What privacy language changed in April and why?

v2.3.2 on April 16 tightened the privacy language in onboarding and system prompts to say 'local-first' instead of 'nothing leaves your device.' The previous phrasing overstated the guarantee because a query that goes to a Claude model has to, by definition, reach Anthropic. The change is editorial, not architectural. Screen reads, accessibility trees, and file indexes still run on-device. What crosses the network is the model request itself. The same Claude privacy policy that governs a direct API call governs Fazm's calls.

Where can I read the raw changelog and source myself?

The full CHANGELOG.json lives in the Fazm repo at github.com/mediar-ai/fazm. Every April 2026 release is in that file with its ship date and bulleted change list. The ACP handling path starts at Desktop/Sources/Chat/ACPBridge.swift and the model family labeler is Desktop/Sources/FloatingControlBar/ShortcutSettings.swift. grep for modelFamilyMap, normalizeModelId, and models_available to trace the dynamic-models flow end to end.