Anthropic April 2026 - downstream

Anthropic AI news April 2026, read from 13 lines of Swift

Every roundup of Anthropic's April 2026 news cycle leads with the same five stories: Opus 4.7 general availability, the Mythos model held back for safety review, Project Glasswing's controlled enterprise rollout, the White House meeting with Susie Wiles, and the Google TPU plus Broadcom compute deals. Those are real stories. They are also the stories every publication tells. This page is about the quieter story: what Opus 4.7 actually costs a consumer Mac app to absorb. For Fazm, the answer was one file, 13 inserted lines, 18 deleted lines, and no release.

commit 8b4ad3bf
2026-04-18 14:04:16 PDT
ShortcutSettings.swift
+13 / -18
M
Matthew Diakonov
9 min read
4.8from written from the source, not from the press release
Opus 4.7 GA
Mythos held back
Project Glasswing
$800B round
Google TPU
Broadcom deal
LTBT board change

The anchor fact

One file. Two commits. Nine minutes apart.

On Saturday April 18 2026, at 14:04:16 Pacific time, commit 8b4ad3bf landed in the Fazm Desktop repo with the message "Update default models to latest and add family to model map." It touched exactly one file, Desktop/Sources/FloatingControlBar/ShortcutSettings.swift, added 13 lines, and removed 18. Nine minutes later at 14:13:15, the follow-up commit 75676b9c inverted the normalizeModelId function so any legacy full ID collapses to its short alias. Those two commits are the full cost, in source-code terms, of Fazm absorbing Anthropic's April 14 Opus 4.7 release. The rest of the April 2026 news cycle, every dollar of the $800B round and every gigawatt of the Broadcom deal, cost the app zero lines.

The diff, by the numbers

Run git show --stat 8b4ad3bf in a clone of the public Fazm repo to reproduce these four numbers exactly. Each counts up from zero as you scroll it into view.

0Lines added in 8b4ad3bf
0Lines deleted in 8b4ad3bf
0Pinned model IDs removed
0Minutes between the two commits

For scale: the April 2026 Opus 4.7 model card describes a model trained on 0T+ tokens across more than 0 accelerators. Fazm's share of that work, measured in Swift, was 13 lines.

How the short alias travels, end to end

Fazm's three UIs (the main window chat, the floating control bar, the detached pop-out) all read the same selectedModel from UserDefaults. After April 18, that value is a short alias. It travels through the ACP bridge subprocess and lands at Anthropic's API, where it is resolved to the current Opus 4.7 weights. One outbound hop, one resolution step, one downstream upgrade absorbed.

Fazm -> ACP SDK -> Anthropic API

Main window chat
Floating control bar
Detached pop-out
ACP bridge
api.anthropic.com
Streaming response

The diff, line by line

This is the actual content of Desktop/Sources/FloatingControlBar/ShortcutSettings.swift lines 149 through 175 on April 17 (left) and April 18 after both commits (right). Every string on the left was a release trigger. Every string on the right is inert to model upgrades.

ShortcutSettings.swift - pinned IDs out, aliases in

// Desktop/Sources/FloatingControlBar/ShortcutSettings.swift
// Pre-commit 8b4ad3bf, as of 2026-04-17

static let defaultModels: [ModelOption] = [
    ModelOption(
        id: "claude-haiku-4-5-20251001",
        label: "Scary (Haiku)",
        shortLabel: "Scary"
    ),
    ModelOption(
        id: "claude-sonnet-4-6",
        label: "Fast (Sonnet)",
        shortLabel: "Fast"
    ),
    ModelOption(
        id: "claude-opus-4-6",
        label: "Smart (Opus)",
        shortLabel: "Smart"
    ),
]

static func normalizeModelId(_ modelId: String) -> String {
    if modelId.hasPrefix("claude-") { return modelId }
    switch modelId {
    case "haiku":  return "claude-haiku-4-5-20251001"
    case "sonnet": return "claude-sonnet-4-6"
    case "opus":   return "claude-opus-4-6"
    default: return modelId
    }
}
0% fewer lines

Why the app trusts the SDK now

The pre-April defaultModels array was a fallback, but the same file also had an updateModels function that listened to the ACP SDK's availableModels stream. Before April 18, the two sources could disagree: the SDK reported 'opus' as a short alias, the hardcoded fallback reported 'claude-opus-4-6' as a long one, and the UI tried to reconcile them. The April 18 diff picked a side. The SDK wins. The fallback is only used on the first launch before any ACP response arrives.

ShortcutSettings.swift (excerpt, post-commit)

How Opus 4.7 reached a running Fazm window

There are five moments between Anthropic's announcement and a Mac user actually getting Opus 4.7 output in a chat. Four of them happen outside the Fazm source tree. The fifth, the one Fazm controls, is the 13-line diff.

1

2026-04-14 - Opus 4.7 reaches general availability

Anthropic's public announcement. Pricing stays at Opus 4.6 levels ($5 / $25 per MTok). The model is live behind the 'opus' short alias in the Anthropic API, Bedrock, Vertex AI, and Microsoft Foundry. Any call to claude-opus-4-6 still resolves to the 4.6 weights. Any call to the short alias 'opus' now resolves to 4.7.

2

2026-04-14 to 04-17 - Fazm keeps running on Opus 4.6

Fazm v2.3.2 is already in the wild, with ShortcutSettings.swift hardcoding 'claude-opus-4-6' in its defaultModels array. Users still get the old weights every time they pick the 'Smart' model. The ACP SDK starts including 'opus' in its availableModels stream, but the Fazm UI filters that out because the id field does not match the hardcoded prefix.

3

2026-04-18 14:04:16 PDT - commit 8b4ad3bf

The three default ModelOption id fields flip from pinned IDs to short aliases. The modelFamilyMap gains a 'family' column. Labels gain ', latest' so the UI now reads 'Smart (Opus, latest)' instead of 'Smart (Opus)'. Thirteen inserted lines, eighteen deleted lines, one file touched.

4

2026-04-18 14:13:15 PDT - commit 75676b9c

normalizeModelId is inverted. Instead of expanding short aliases to long IDs, it now collapses long IDs to short aliases. A user whose UserDefaults still reads 'claude-opus-4-6' from their pre-upgrade install has that value silently rewritten to 'opus' on the next launch. No data loss, no settings reset.

5

Next launch - Opus 4.7 is live in Fazm

When the user opens Fazm and presses Cmd+J to ask the Smart model something, the ACP bridge sends model='opus' to api.anthropic.com. The Anthropic API resolves that alias to Opus 4.7. No binary rebuild, no Sparkle auto-update dialog, no notarization round-trip. The upgrade cost 13 new lines of Swift.

Verify it yourself

Clone github.com/mediar-ai/fazm and run the following three commands. The output below was captured on 2026-04-19 and should match what you see as long as the two commits are still on the main branch.

git log --oneline -- Desktop/Sources/FloatingControlBar/ShortcutSettings.swift

The four-part pattern, transferable to any Claude app

The Fazm diff is not clever. It is ordinary good practice applied to a very specific moment (April 2026, Opus 4.7 GA), caught in the source. The four rules below are what the diff looks like as generalized advice. They work for Swift, TypeScript, Python, Rust, or whatever your consumer app uses to call Anthropic's API.

Use short aliases in config

Store 'opus', 'sonnet', 'haiku' in UserDefaults / config.json, not 'claude-opus-4-6'. The shorter the string, the more upgrades it absorbs silently. Every pinned version number you hardcode is a future release you will have to cut.

Trust the SDK's model list

Anthropic's SDK (and the ACP SDK that Fazm uses) exposes availableModels as a stream, not a static array. The consumer Mac app's job is to render that list, not to duplicate it in Swift. Fazm's updateModels function, shown above, is 20 lines; the hardcoded array it used to protect is gone.

Normalize legacy IDs, don't reject them

Every user who installed your app before the upgrade has a long ID stashed in UserDefaults. Do not show them a 'model not found' error on first launch after the change. Collapse the long ID to its short alias, rewrite UserDefaults, keep moving. Fazm's normalizeModelId does exactly this in four lines.

Treat model upgrades as cleanups, not releases

Opus 4.7 did not need a Fazm release. It needed a PR that deleted three version pins. That is what the April 18 diff is: a cleanup PR. The app's Sparkle channel didn't tick, the Codemagic pipeline didn't run, no notarization ticket got filed. The Anthropic roadmap absorbs silently, and the app inherits its improvements for free.

The accessibility-API layer did not change

Fazm's public differentiator is not the model it calls. It is the layer beneath the model: Fazm reads macOS accessibility trees (AXUIElement, AXObserver, the kAX* attribute keys) and acts on any app on the Mac through that tree, rather than taking screenshots and asking a vision model what is on the screen. That architectural choice is independent of which Claude model is behind the chat.

That is why the April 18 diff was 13 lines. None of those lines were in the AXUIElement call sites. None were in the observer thread that watches for focused-app changes. None were in the MCPServerManager or the SkillInstaller or the ChatPrompts. The model upgrade hit three lines in a ModelOption array and a normalize function. The accessibility layer shipped Opus 4.7 without knowing Opus 4.7 existed.

That separation is the actual lesson of April 2026 for any consumer AI app on the Mac. Treat the model as a swappable resource. Keep the layer you own (perception of the user's screen, execution of local actions, persistence of memory and files) stable, well-tested, and opinionated. Rebuild when the layer you own changes, not when Anthropic's does.

Want the upgrade-clean architecture in your own app?

I will walk through Fazm's ACP bridge, the accessibility-tree perception layer, and the model-alias pattern on a 20-minute call.

Book a call

Anthropic April 2026 FAQ

What is the Anthropic AI news for April 2026, in one paragraph?

Claude Opus 4.7 reached general availability at Opus 4.6 pricing, with stronger coding, better long-running agent work, higher-resolution vision, and new effort controls and task budgets. Anthropic held back a more capable model called Mythos after internal red-team results and began a controlled Project Glasswing rollout to selected enterprises. Dario Amodei visited the White House on April 17 for a meeting with Chief of Staff Susie Wiles while Anthropic battles the administration in court over the Claude blacklist. Funding offers valued the company near $800 billion. A multi-year Google Cloud / TPU expansion landed on April 6 and a Broadcom multi-gigawatt deal landed the same week. The Long-Term Benefit Trust appointed Vas Narasimhan to the board on April 14. That is the news. This page is about what it cost a downstream consumer Mac app to actually benefit from the release.

What does Opus 4.7 mean for a Claude-powered Mac assistant?

If the app pinned its model IDs to full Anthropic names ('claude-opus-4-6', 'claude-sonnet-4-6', 'claude-haiku-4-5-20251001') in compiled Swift, the app shipped Opus 4.7 only when the app shipped a new binary. If the app used short aliases ('opus', 'sonnet', 'haiku') and let the Anthropic SDK (or the ACP client SDK) resolve them at request time, the upgrade was automatic. Fazm had pinned IDs before April 18, 2026. Commit 8b4ad3bf flipped the model list in ShortcutSettings.swift from pinned IDs to aliases; the ACP SDK then resolves the alias 'opus' to whatever Anthropic currently ships under the opus family. On April 18 that resolves to Opus 4.7.

What exactly did commit 8b4ad3bf change?

Desktop/Sources/FloatingControlBar/ShortcutSettings.swift, 13 inserted lines and 18 deleted lines across lines 149-175. Three ModelOption entries in the defaultModels array had their id fields changed: 'claude-haiku-4-5-20251001' became 'haiku', 'claude-sonnet-4-6' became 'sonnet', 'claude-opus-4-6' became 'opus'. Their labels also gained ', latest' so the UI shows 'Smart (Opus, latest)' instead of 'Smart (Opus)'. The modelFamilyMap tuple gained a 'family' column so the app can rebuild the label when the ACP SDK streams back a new model list. Author m13v, committed 2026-04-18 14:04:16 PDT. Verify with `git show 8b4ad3bf -- Desktop/Sources/FloatingControlBar/ShortcutSettings.swift` in github.com/mediar-ai/fazm.

What did the follow-up commit 75676b9c do?

It flipped the direction of normalizeModelId. Before, the function mapped a short alias to a specific full model ID (hardcoded 'claude-haiku-4-5-20251001', 'claude-sonnet-4-6', 'claude-opus-4-6'). After, it does the opposite: any full ID that contains the substring 'haiku', 'sonnet', or 'opus' is normalized to the three-letter alias. The reason is that the old direction embedded a version pin in the binary. The new direction lets a user's saved UserDefaults (from a pre-Opus-4.7 Fazm install) still work after the upgrade, by collapsing their stored 'claude-opus-4-6' to 'opus' the next time the app boots. Landed 2026-04-18 14:13:15 PDT, nine minutes after 8b4ad3bf.

Why did Fazm do this on April 18 and not April 14, the day Opus 4.7 landed?

Because model releases from Anthropic do not break a consumer app on day one. The old ID 'claude-opus-4-6' kept working. What changed on April 14 was that the ACP SDK started reporting 'opus' in its dynamic availableModels list, which is the list the Fazm settings UI displays. Until the app accepted short aliases as valid IDs, the UI silently showed a stale list. Four days later, the fix went in: accept whatever the SDK reports, and treat short aliases as first-class IDs in UserDefaults, the settings UI, the floating bar, and the quick-switcher. Opus 4.7 was on the menu the next time a user opened Fazm.

Is this a Fazm-specific pattern or is it general advice?

It is general advice. Any Mac app that speaks to the Anthropic API and wants to absorb model upgrades without a code release should follow three rules. First, use short aliases ('opus', 'sonnet', 'haiku') in config and UserDefaults, not full IDs with embedded version numbers. Second, pull the actual list of available models from the SDK at startup, not a hardcoded array. Third, when the user's saved selection references a legacy full ID, normalize it to the short alias rather than rejecting it or falling back to a default. Fazm's ShortcutSettings.swift is one public example of those three rules written in Swift; the same three rules apply whether you are writing in Swift, TypeScript, Python, or Rust.

How does this relate to Fazm's accessibility-API architecture?

It is orthogonal. Fazm reads the Mac's accessibility tree (via AXUIElement / AXObserver) rather than taking screenshots and OCR-ing them, which is how most browser-bound agents work. That choice determines how Fazm sees any app on the Mac, not which Claude model generates the next assistant response. The model-alias refactor is about keeping the cloud inference layer upgrade-clean. The accessibility-API architecture is about keeping the local perception layer fast and reliable. Both layers are independent, which is why the April 18 diff was 13 lines and did not touch a single AX call.

Can I verify the commits and line numbers this page cites?

Yes. The repository is public at github.com/mediar-ai/fazm. Run `git log --oneline --since=2026-04-18 --until=2026-04-19 -- Desktop/Sources/FloatingControlBar/ShortcutSettings.swift` to see both commits. Run `git show 8b4ad3bf` for the model-list change and `git show 75676b9c` for the normalization refactor. The resulting file is viewable at Desktop/Sources/FloatingControlBar/ShortcutSettings.swift, with defaultModels at line 151-155, modelFamilyMap at line 159-163, and normalizeModelId at line 169-175. All line numbers are post-commit, as of 2026-04-19.

fazm.AI Computer Agent for macOS
© 2026 fazm. All rights reserved.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.