Anthropic news, April 2026ChatProvider.swift, lines 1360 to 2956

Opus 4.7, Mythos, the $800B round, and the 12-line Swift function that decides whether any of it reaches your Mac

Every roundup of Anthropic news from April 2026 lists the same five stories. Opus 4.7 GA. Mythos held back. Project Glasswing. The $800 billion round. Routines preview. The Google TPU expansion. None cover the layer that determines whether a Mac user's chat session keeps working when those changes ship: a twelve-line Swift error matcher that catches three specific substrings, switches the bridge from personal OAuth to a bundled Anthropic API key, and silently retries the same query.

F
Fazm
9 min read
4.9from 200+
Every claim maps to a line range in Fazm's Swift source
Three exact error substrings the fallback matcher checks
$10 hard cap on the bundled-key path, line 476

Anthropic-related headlines through April 2026

Opus 4.7 GA, same $5 / $25 pricing as 4.6Mythos held back from general releaseProject Glasswing, ~40 enterprises$800B funding offers, Apr 14Claude Code redesign, Apr 14Routines research previewGoogle TPU expansion, Apr 6Broadcom multi-gigawatt dealVas Narasimhan to LTBT boardFaster AI Hacks, Anthropic vs OpenAIClaude Mythos briefing to Trump adminT&S updated, claude.ai re-accept requiredseven_day_opus rate limit enforcement

The anchor fact

0 lines of Swift, three substring checks, one auto-retry

When Anthropic shipped Opus 4.7 in April 2026, not every Claude consumer plan got access on day one. Free-tier and certain regional plans returned errors like model not found or may not exist or you do not have access. Apps that hard-coded a personal-OAuth-only path surfaced that error. Fazm catches it and falls back.

Desktop/Sources/Providers/ChatProvider.swift

The control-flow branch

Match, swap, retry

The matcher above is the predicate. The branch below is the decision. When the bridge is in personal mode and the matcher fires, the post-query handler swaps the bridge to builtin, clears the error, and re-runs the user's last message under bundled credentials. The user sees the assistant continue typing.

Desktop/Sources/Providers/ChatProvider.swift

Two upstreams, one chat surface

Both bridge modes go through the same ACP (Agent Client Protocol) JSON-line subprocess and the same skill library at ~/.claude/skills. The only difference is what is passed as the upstream credential.

Personal OAuth and bundled key, same chat surface

Claude.ai OAuth
ANTHROPIC_API_KEY
Custom endpoint
ACP bridge
Main chat
Floating bar
Pop-out window
Observer thread

What happens during a model-access fallback

1

1. User sends a message

ChatProvider.sendMessage() is called with the user's text and the currently selected model (claude-sonnet-4-6 by default). pendingRetryMessage is stored.

2

2. Bridge errors with 'may not exist'

Anthropic API returns an agent error containing one of the three matched substrings. ACPBridge wraps it as BridgeError.agentError(msg) and rethrows.

3

3. Post-query handler runs the matcher

isModelAccessError(msg) checks lowercased substrings. Returns true. The handler is at lines 2944 to 2956 of ChatProvider.swift.

4

4. Set pending switch and retry flag

pendingBridgeModeSwitch = 'builtin'. retryAfterModelFallback = true. errorMessage = nil. The user-visible state stays clean.

5

5. applyPendingBridgeModeSwitch swaps the bridge

switchBridgeMode(to: 'builtin') restarts the ACP subprocess with ANTHROPIC_API_KEY in env. The persisted bridge-mode AppStorage flips.

6

6. Re-run the same message

The handler calls sendMessage(pendingRetryMessage) again. The query now flows through bundled credentials. The assistant streams a response. The user sees no interruption.

What the log file says when the fallback fires

~/Library/Logs/Fazm.log

What the log says on a weekly Opus rate limit (no fallback)

Same bridge, different error class. A rate limit is time-bounded and the user already has bundled-key budget, so Fazm explicitly does NOT switch modes. It surfaces the message and lets the user choose Sonnet or wait. The classifier is the regex #"resets\s+\S"# on the raw error.

~/Library/Logs/Fazm.log

Personal OAuth vs bundled API key

The two upstreams Fazm can route through, side by side. Both speak ACP, both get the same skill library, both can be selected manually. The fallback decides which one is live for the next query when something breaks.

FeatureBundled API keyPersonal OAuth
Credential sourceANTHROPIC_API_KEY shipped with the Fazm appClaude.ai OAuth, stored in macOS Keychain (Claude Code-credentials)
Who paysFazm, capped at $10 lifetime per userUser's Claude Pro / Team plan
Models reachableWhatever the bundled key covers (Sonnet, Haiku, Opus)Whatever the user's plan covers (varies by region and tier)
What happens at the $10 capForced switch to personal at line 2272, sign-in alertStays available, no cap
What happens on model-access errorStays in builtin, error surfacedAuto-fallback to bundled, query retried at lines 2944 to 2956
What happens on weekly Opus limitSame rate limit applies if bundled key hits the same capSurfaced as 'Opus weekly limit, resets <date>', no auto-switch
What happens on Anthropic T&S updateBundled key is unaffected if Fazm has accepted the org-level T&SSurfaced verbatim, user sent to claude.ai (re-auth does not fix)
Bridge restart on switchYes, ACP subprocess restarts with new envYes, ACP subprocess restarts with new env
0lines in isModelAccessError
0substring rules in the matcher
0USD cap on the bundled-key path
0rate-limit type labels Fazm knows

The cap that keeps the bundled key honest

static let builtinCostCapUsd: Double = 10.0

Line 476 of ChatProvider.swift. This is the hard cap on how much Anthropic spend the bundled-key path absorbs per user. It is tracked locally in @AppStorage("builtinCumulativeCostUsd") and seeded from a Firestore mirror on startup, so a user can wipe local app data and the cap still applies.

Past $10, the next outgoing query short-circuits at line 2272. showCreditExhaustedAlert = true fires, the bridge mode is forced to personal, and the user is asked to sign into their own Claude account. That moment is loud on purpose. Someone has to pay for the next message.

0 visible errors

When personal OAuth can't reach the model, Fazm sets pendingBridgeModeSwitch = 'builtin' and silently re-runs the same query under bundled credentials. The user sees the assistant continue typing.

Fazm ChatProvider.swift, lines 2944 to 2956

The April 2026 stories the roundups cover

Opus 4.7 GA. Released as a same-price upgrade from Opus 4.6 ($5 input / $25 output per MTok), with stronger software engineering, sharper instruction following, and more reliable long-running agent loops. Available through the Anthropic API and Claude.ai. Day-one access varied by plan.

Claude Code redesign and Routines. Announced April 14. The Claude Code desktop app got a complete redesign on Mac and Windows, and Routines (a research preview) landed as a way to define repeatable agent workflows. Both ship under the Claude Code brand, separate from the Anthropic API.

Mythos and Glasswing. Bloomberg disclosed on April 16 that Anthropic had developed a model called Mythos that performed strongly enough on cyber-offense red-team evaluations that the safety team concluded it could not be released as a general API. Project Glasswing is the controlled rollout to roughly 40 enterprises (Amazon, Apple, Microsoft, JPMorgan Chase, others).

$800 billion round. Reported April 14: investor offers valuing Anthropic at $800B or higher. The deal had not closed at the time of writing, but the number is the one the press pinned to the cycle.

Google Cloud / TPU expansion. Announced April 6 via the Google Cloud press corner: a multi-year expansion of the Google partnership, including Broadcom for multi-gigawatt next-gen compute. This is the supply-side story, not the model story.

Board appointment. The Long-Term Benefit Trust appointed Vas Narasimhan to the board on April 14.

What every Anthropic-news roundup is missing

The press coverage is thorough on the corporate and model layer. The integration layer, where actual users live, is invisible. Here is the list of operational realities a Mac app on Anthropic's stack has to absorb in April 2026.

The integration-layer story the news cycle skips

  • Per-account model access drift on day one of Opus 4.7 (free vs Pro vs region)
  • The seven_day_opus rate limit is a separate label from seven_day, and apps need to surface that distinction
  • Anthropic T&S updates require the user to visit claude.ai, re-auth does not fix it
  • The Custom API Endpoint setting (ANTHROPIC_BASE_URL) became table stakes after corporate-gateway demand in early April
  • The Claude Code OAuth credential is shared via macOS Keychain under 'Claude Code-credentials' and apps must read from there to interop
  • Bundled-key fallback paths need a real cap and a real cost mirror, not a soft prompt

Frequently asked questions

Frequently asked questions

What did Anthropic announce in April 2026?

The April 2026 news cycle around Anthropic was dense. The most-cited items: (1) the general-availability release of Claude Opus 4.7 with stronger software-engineering and long-running agent reliability, at the same $5 / $25 per MTok pricing as 4.6; (2) the redesigned Claude Code desktop app and the Routines research preview, announced April 14; (3) the Mythos safety story (Bloomberg, April 16) where Anthropic disclosed a model called Mythos that was held back from general release after internal red-teaming flagged cyber-offense capabilities; (4) the Project Glasswing controlled rollout to roughly 40 enterprises including Amazon, Apple, Microsoft, and JPMorgan Chase; (5) the $800B-valuation funding offers reported on April 14; (6) the April 6 expanded Google Cloud / TPU partnership and the related Broadcom multi-gigawatt deal; (7) the Long-Term Benefit Trust appointing Vas Narasimhan to the board on April 14. None of these items, by themselves, tell a Mac user whether their chat session will keep working after the rollout.

Why is Opus 4.7 a problem for app developers building on Claude?

Because Opus 4.7 was released at the same price point as 4.6 but not every Claude consumer plan got access on day one. Free-tier accounts and certain regional plans saw a window where requests for Opus models returned the error string 'model not found' or 'may not exist or you do not have access to it.' Apps that hard-coded a personal-OAuth-only architecture surfaced that error to the end user. Apps with a fallback path swallowed it. Fazm's ChatProvider.swift implements that fallback in a 12-line static function (isModelAccessError, line 1362) that matches three specific substrings, then a control-flow branch at lines 2944 to 2956 that sets pendingBridgeModeSwitch = 'builtin' and auto-retries the same query under a bundled Anthropic API key.

What is Project Glasswing and Mythos?

Mythos is an internal Anthropic model that, per a Bloomberg report on April 16, 2026, performed strongly enough on cyber-offense red-team evaluations that Anthropic's own safety team concluded it could not be released as a general API. Project Glasswing is the restricted access program where Mythos is being made available to roughly 40 organizations (Amazon, Apple, Microsoft, JPMorgan Chase, others) under a controlled rollout. For consumer Mac apps the effect is straightforward: most users will never see a Mythos endpoint, and apps must continue to assume Sonnet, Opus, and Haiku as their available model surface.

What is the Routines research preview?

Routines is a Claude Code feature, previewed alongside the redesigned desktop app on April 14, that lets a user define repeatable agent workflows that can be triggered later (similar in spirit to scheduled or saved tasks). It is a research preview, not a stable API. Fazm's existing ScheduledTasks subsystem (Sources/MainWindow/Pages/ScheduledTasksPage.swift) is unrelated and predates Routines. They cover overlapping ground but do not interoperate as of April 2026.

Where in Fazm's source is the auto-fallback from personal OAuth to bundled API key implemented?

Three locations. First, the bridge mode is declared as @AppStorage("bridgeMode") var bridgeMode: String = "builtin" at line 439 of /Users/matthewdi/fazm/Desktop/Sources/Providers/ChatProvider.swift. The two valid values are 'builtin' and 'personal'. Second, the BridgeMode enum lives at /Users/matthewdi/fazm/Desktop/Sources/Chat/ACPBridge.swift lines 192 to 200, with cases .personalOAuth and .bundledKey(apiKey:). Third, the fallback decision happens in the post-query error handler at lines 2944 to 2956 of ChatProvider.swift: if the bridge is in personal mode and isModelAccessError(msg) returns true, the handler sets pendingBridgeModeSwitch = 'builtin' and retryAfterModelFallback = true, then re-runs the original message under bundled credentials.

What are the three error substrings that trigger the fallback?

Lines 1362 to 1369 of ChatProvider.swift: (1) lower.contains("may not exist") && lower.contains("not have access"), (2) lower.contains("model") && lower.contains("not found"), (3) lower.contains("model") && lower.contains("not available"). All three are AND conditions on substrings of the lowercased server error. Anthropic's API has used variants of all three phrasings during the April 2026 rollout windows. The matcher is intentionally tolerant of small wording changes.

What is the $10 cap and why does it exist?

Line 476 of ChatProvider.swift: static let builtinCostCapUsd: Double = 10.0. This is a hard cap on how much Anthropic spend the bundled API key path will absorb per user, tracked locally via @AppStorage("builtinCumulativeCostUsd") and seeded from Firestore on startup. The cap exists because the bundled key is a real Anthropic key Fazm pays for. Past $10, the next outgoing query short-circuits at line 2272 and triggers a forced switch to personal mode (showCreditExhaustedAlert = true). The user is asked to sign into their own Claude account at that point. The number is conservative on purpose: it is enough to evaluate the product end-to-end without a credit card, not enough to be exploited.

How does Fazm distinguish a rate limit from a credit exhaustion?

Lines 2902 to 2917 of ChatProvider.swift. When the bridge throws BridgeError.creditExhausted with a raw message, the handler runs let isRateLimit = rawMessage.range(of: #"resets\s+\S"#, options: .regularExpression) != nil. The 'resets <something>' pattern is what the Anthropic API includes when the limit is time-bounded (a five_hour or seven_day window). If isRateLimit is true and the bridge is in builtin mode, Fazm shows the rate-limit message but does NOT switch modes, because the user still has bundled-key budget. If isRateLimit is false, it is real credit exhaustion: the bridge mode switches to 'personal' via switchBridgeMode(to: "personal") and the credit-exhausted alert is raised.

What about the Anthropic Terms of Service updates that landed in April 2026?

Lines 1370 to 1382 of ChatProvider.swift implement isTermsAcceptanceRequired, a separate matcher from the model-access matcher. It looks for four signals in the server error: 'consumer terms', 'terms of service' AND 'accept', 'terms and privacy', and 'updated our' AND 'policy'. When Anthropic ships a T&S update (as happened in early April 2026 around the rollout of new acceptable-use language), users who have not re-accepted the terms on claude.ai see API errors. Fazm classifies these explicitly because re-authing the user does NOT fix them. The user has to visit claude.ai directly. The error is surfaced verbatim instead of triggering an auth flow.

What about the weekly Opus rate limit Anthropic introduced?

Lines 538 to 543 of ChatProvider.swift list four rate-limit type labels the bridge knows about: 'five_hour' (session limit), 'seven_day' (weekly limit), 'seven_day_opus' (Opus weekly limit), 'seven_day_sonnet' (Sonnet weekly limit). The seven_day_opus type is the one most users will encounter in April 2026 because Opus 4.7 is more expensive and Anthropic enforces the cap more aggressively. When the rate-limit type comes back as seven_day_opus, the in-app message reads 'Opus weekly limit, resets <date>'. The user is told to switch to Sonnet (or wait for the reset).

Does Fazm rely on the Claude Code CLI or the Claude Agent SDK?

Both, in different paths. The 'personal' bridge mode launches a Node.js subprocess that talks to the Claude Agent SDK's ACP (Agent Client Protocol) layer over JSON-lines on stdin/stdout. The user's Claude.ai OAuth token is stored by the Claude Code CLI in the macOS Keychain under the service name 'Claude Code-credentials' (referenced in AppState.swift), and the bridge picks it up from there. The 'builtin' mode bypasses the OAuth path entirely and sets ANTHROPIC_API_KEY in the subprocess env (ACPBridge.swift line 351). Both modes go through the same ACP message loop, the same tool-call dispatcher, and the same skill library at ~/.claude/skills.

What happens to the user's UI when the fallback fires?

Nothing visible during the fallback itself. The model-access fallback path at lines 2945 to 2956 sets errorMessage = nil, swaps the bridge mode, and re-runs the query. The user sees the assistant continue typing as if nothing happened. The only visible signal is in Settings > Model selector, where the bridge mode badge updates to 'Built-in.' If the cap is hit later, the credit-exhausted alert fires and the user is asked to sign in with their personal Claude account. That second case is loud on purpose: someone has to take over paying for the conversation.

Can I verify the anchor facts in this guide?

Yes. Open /Users/matthewdi/fazm/Desktop/Sources/Providers/ChatProvider.swift. Line 439: bridge mode declaration. Line 476: builtinCostCapUsd = 10.0. Lines 491 to 506: createBridge() function with the personal/builtin switch. Lines 1360 to 1369: isModelAccessError with the three substring rules. Lines 1370 to 1382: isTermsAcceptanceRequired. Lines 2272 to 2275: cap enforcement at send time. Lines 2897 to 2935: credit-exhausted handling and rate-limit-vs-cost classifier. Lines 2944 to 2956: model-access fallback control flow. The BridgeMode enum is at /Users/matthewdi/fazm/Desktop/Sources/Chat/ACPBridge.swift lines 192 to 200. Every claim in this guide maps to a specific file and line range a reader can open.

Try Fazm and see the bridge fall back in real time

Download the Mac app. Sign in with your personal Claude account, then ask for a model your plan does not cover. Watch the bridge swap to bundled mode and finish the query. The whole switch is twelve lines of Swift you can read in your own copy of the source.

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

How did this page land for you?

Comments

Public and anonymous. No signup.

Loading…