APRIL 2026 / THREE LINES INSIDE THE APP

Everyone covered Opus 4.7, Mythos, and the $25B Amazon deal. This is about one env var that lets your Mac agent reach a corporate Claude gateway.

April 2026 shipped more Anthropic news than most quarters. Opus 4.7 went GA, Claude Mythos previewed through Project Glasswing, Amazon expanded to the $25 billion range, Google and Broadcom added TPU supply, JPMorgan rolled Claude out across the bank, and the Pentagon flagged supply-chain concerns. Every news site listed the announcements. This page looks at the quieter question: if you are a Fazm user inside one of those enterprise accounts and your security team wants Claude traffic to go through their own gateway, what had to already be inside the app? The answer is three lines of Swift at ACPBridge.swift:380-382, one @AppStorage key, and a single restart function.

M
Matthew Diakonov
11 min read
4.9from Written from inside the Fazm source tree
Opus 4.7 GA April 22
Mythos via Project Glasswing
Amazon $25B
JPMorgan rollout
Pentagon supply-chain review
Fazm 2.2.0 shipped April 11

THE HEADLINES

What Anthropic actually shipped and signed in April 2026

Five threads dominated the month. I list them here so the rest of the page has a shared reference point, not because the news is the subject. The subject is what happens inside a desktop agent when a user in one of these enterprise accounts wants the traffic to flow somewhere other than api.anthropic.com.

1

Opus 4.7 generally available on April 22

Same price as Opus 4.6 at $5 per million input tokens and $25 per million output tokens. Stronger SWE-bench, more reliable long-running tool use, better vision. Distributed through the Anthropic direct API, Vertex AI on Google Cloud, and the Claude Agent Client Protocol SDK. For consumer apps this is the model people actually want selectable in the picker the day it lands.

2

Claude Mythos previewed via Project Glasswing

Mythos is an unusually strong vulnerability-finding model. Anthropic is distributing it through a gated cybersecurity consortium called Project Glasswing, which includes Amazon, Apple, Microsoft, and Nvidia. It is explicitly not a broad developer release. The Pentagon flagged supply-chain concerns, and Dario Amodei met with Susie Wiles and Scott Bessent to discuss federal access in mid-April.

3

Amazon expanded investment toward $25B

Bloomberg reported Amazon adding another $5 billion to its Anthropic position with optionality for another $20 billion. Anthropic committed more than $100 billion to Amazon cloud and chips over ten years. This is a capital and capacity story, not a change in the Claude wire format.

4

Google and Broadcom expanded TPU supply

Anthropic grew its existing relationship with Google and Broadcom to take more TPU capacity. Paid subscribers and API customers see this as fewer overloaded turns during peak hours. It is the capacity that serves every third-party app that talks to claude.ai on behalf of a user.

5

JPMorgan internal rollout

JPMorgan communicated an internal rollout of Claude across its workforce. This is the kind of deployment that surfaces the requirement the rest of this guide is about: a large enterprise standing up its own inspection layer, compliance logging, and outbound policy for Claude traffic, and needing every client app that employees already use to respect it.

Opus 4.7 GA
$5 / $25 per MTok
Project Glasswing
Claude Mythos
Amazon +$5B to $25B
$100B Amazon compute / 10y
Google + Broadcom TPUs
JPMorgan rollout
Pentagon supply-chain flag
Fazm 2.2.0 custom endpoint
ANTHROPIC_BASE_URL
restartBridgeForEndpointChange

THE GAP NOBODY WROTE ABOUT

When an announcement hits a firewalled laptop, who changes?

A JPMorgan analyst reading the Opus 4.7 release note on April 22 is also reading it from a laptop that cannot hit api.anthropic.com directly. Their bank runs outbound inspection, central logging, and, often, a proxy that forwards authenticated traffic to Anthropic on the user's behalf. Most consumer AI desktop apps have no answer for this beyond a sign-in form. The user waits for the vendor to add their tenant. Fazm ships the answer as a user-level setting.

A Claude desktop app meets a corporate outbound policy

A typical consumer AI desktop app bakes the Anthropic host into its SDK client. The enterprise user cannot change where the request goes. IT opens a ticket with the vendor, asks for a tenant, waits for a custom build, or blocks the app at the egress.

  • Host is hard-coded in the binary
  • No user-level base URL field
  • IT has to block the app or wait on the vendor
  • Every model update still goes through the vendor pipe
3 lines

Added custom API endpoint setting for proxies and corporate gateways.

fazm/CHANGELOG.json, v2.2.0, dated 2026-04-11

THE ANCHOR FACT

The three lines of Swift that do the whole job

Fazm launches a long-lived Node subprocess called the ACP bridge for every new app session. All Claude traffic flows through that subprocess. Before it is spawned, the Swift app builds the environment for it. This is the exact block that converts a UserDefaults string into the Anthropic SDK's base URL override.

Desktop/Sources/Chat/ACPBridge.swift (lines 378-382)

That is the entire routing feature for the outbound direction. Three lines, one env var, one conditional. The Anthropic SDK honors ANTHROPIC_BASE_URL as the base host override, so every subsequent API call out of the bridge goes where the user told it to go.

THE RESTART HOOK

How a text-field edit rewires a live chat without losing history

The env var is only read on bridge spawn. So a user who edits the endpoint mid-session needs the bridge to respawn. The Swift side does this without tearing the chat down. The function is small enough to read straight through.

Desktop/Sources/Providers/ChatProvider.swift (lines 2101-2106)

Note what it does not do. It does not kill the Swift view. It does not clear local chat state. It does not log the user out. It flips acpBridgeStarted back to false and stops the subprocess. On the next sendMessage call, ensureBridgeStarted spawns a fresh bridge with the new env var and calls session resume against the local chat history. The user sees their conversation continue, just now going through the new base URL.

THE WIRE

What happens after you hit save

Each message below is a real call between real processes. The Swift app, the ACP bridge Node subprocess, and whatever Claude gateway the user pointed at. No polling, no heuristics, just a four-actor handshake.

Custom endpoint switch end to end

UserSettings UIChatProviderACP bridgeClaude gatewayType new URL, submitrestartBridgeForEndpointChange()acpBridge.stop()exit(0)sendMessage('...')spawn with ANTHROPIC_BASE_URL=newsession/resume chatIdPOST /v1/messages (stream)200 OK event-streamagent message deltaschat continues
0Swift lines that do the outbound routing
0UserDefaults key, customApiEndpoint
0App rebuilds required to switch endpoints
0Days ahead of Opus 4.7 GA this feature shipped

THE PIPELINE

Where the custom endpoint sits in the overall data path

Fazm has a single outbound seam to Anthropic. Every piece of user context, every tool result, every screen reading, every typed prompt converges at the ACP bridge and is forwarded over one HTTP connection. The Custom API Endpoint feature sits exactly at that one seam.

Every input routes through one bridge to one base URL

Swift chat UI
Accessibility tree
Playwright MCP
Local DB
MCP servers
ACP bridge
api.anthropic.com
Corporate proxy
Copilot bridge
Vertex AI gateway

WHAT THIS UNLOCKS

Four deployments the April announcements implied but did not spell out

Enterprise user inside a Glasswing partner

The Glasswing program gates Mythos. But the same corporate networks also inspect every outbound AI call. A developer at one of those orgs who wants to use Fazm for Opus 4.7 tasks on their own Mac points customApiEndpoint at the internal gateway. No tenant request, no custom build.

Bank rolling Claude out internally

Whether the example is JPMorgan or the next bank to follow, the engineering problem is the same. Employees run a desktop app. The bank wants every Claude call to land in the bank's inspection layer. Custom API Endpoint terminates the conversation there.

Regulated deployment via Vertex

Some enterprises prefer Claude through Vertex AI on Google Cloud for data-residency reasons. The Vertex endpoint is still an HTTPS base URL that speaks the Anthropic wire format. One text field.

Copilot-compatible corporate bridge

If your company already runs a Copilot-style bridge for other AI products, and that bridge exposes an Anthropic-compatible REST surface, fazm will happily route through it. The Settings card names this case explicitly in its helper text.

SETTINGS UI

What the user actually sees

The Settings card is compact on purpose. Toggle on, one text field, helper text that names both the corporate proxy case and the Copilot bridge case by name. No wizard, no verification roundtrip, no connection test. The correctness check happens on the next message.

Desktop/Sources/MainWindow/Pages/SettingsPage.swift (excerpt)

WHAT YOU GET, CONCRETELY

The checklist a security team can hand the user

If your company runs a Claude gateway, this all works out of the box

  • Outbound host is user-configurable, not baked into the binary. Point the app at https://claude.yourcorp.net or whatever your gateway host is.
  • Env-var injection happens on bridge spawn, not in Swift. The Swift app never holds an Anthropic key or builds an Anthropic request. One narrow seam.
  • Works with any SDK-compatible gateway. Anthropic SDK honors ANTHROPIC_BASE_URL, so any proxy or Copilot-compatible bridge that speaks the wire format slots in.
  • No app rebuild, no forced update, no vendor tenant. The user changes the field, sends a message, and the new route is live. Rollback is one empty text field away.
  • Conversation history survives the switch. Local SQLite chat history is session-resumed on the next bridge start. The user sees no gap.
  • Works with every model Opus 4.7 and beyond. Dynamic model loading already pulls the available model list from the Claude SDK, so a new model behind a corporate gateway shows up in the picker the same way it would on the default endpoint.

COMPARISON

FeatureTypical consumer Claude desktop appFazm 2.2.0+
User-editable Anthropic base URLNot exposedSettings > AI Chat > Custom API Endpoint
Where the env var is injectedNo equivalent seamACPBridge.swift line 381 on subprocess spawn
Restart mechanism for endpoint changeWould require app restartrestartBridgeForEndpointChange, one function
Conversation history across the switchN/APreserved via session resume
Works with corporate proxy or Copilot bridgeVendor tenant requestYes, both named in helper text
How soon available after announcementPer-vendor SLAShipped in v2.2.0 on April 11, 2026

LOG VIEW

What the bridge logs when the endpoint changes

The log lines below are verbatim shapes from /tmp/fazm-dev.log on an app that flipped the toggle mid-session. They give a flavor for how narrow the change surface is.

fazm /tmp/fazm-dev.log (trimmed)

VERIFY IT YOURSELF

Four files, four quick greps

Fazm is MIT-licensed. Every claim on this page is checkable in the repo. Clone from fazm.ai/gh and run the four lookups below.

1

Verify the env-var injection

grep -n ANTHROPIC_BASE_URL Desktop/Sources/Chat/ACPBridge.swift. You should see lines 380-382 with the customApiEndpoint read and the env assignment.

2

Verify the restart hook

grep -n restartBridgeForEndpointChange Desktop/Sources/Providers/ChatProvider.swift. Function starts at line 2101. Reads the UserDefaults string, stops the bridge, flips acpBridgeStarted to false.

3

Verify the AppStorage binding

grep -n customApiEndpoint Desktop/Sources/MainWindow/Pages/SettingsPage.swift. Line 840 declares @AppStorage("customApiEndpoint"). The card body is lines 906 through 952.

4

Verify the release

jq '.releases[] | select(.version=="2.2.0") | .changes[]' CHANGELOG.json. One of the entries is "Added custom API endpoint setting for proxies and corporate gateways." Version dated 2026-04-11.

1 field

Route API calls through a custom endpoint (e.g. corporate proxy, GitHub Copilot bridge). Leave empty to use the default Anthropic API.

SettingsPage.swift line 943, verbatim helper text

NOT COVERED, BY DESIGN

Things this feature deliberately does not do

No connection test. The app does not probe the endpoint on save. The test is the next real message. That is an intentional tradeoff. Probing a corporate gateway with a synthetic request can trip WAF rules or run up audit noise on the enterprise side. A real user message is always the cleanest proof.

No per-model endpoint routing. One endpoint per app. If your infra team wants Opus 4.7 routed differently from Sonnet 4.6, that lives in your gateway, not in the Fazm settings panel. Same argument, one narrow seam.

No credential-rewriting proxy support. The OAuth flow still runs against Anthropic's authorize and token URLs, both defined in acp-bridge/src/oauth-flow.ts. The Custom API Endpoint only overrides the inference base URL. If your corporate gateway also rewrites auth, you configure that at the network layer, not here.

Thinking about standing up Fazm behind your Claude gateway?

I am happy to walk through how the bridge, the OAuth path, and the Custom API Endpoint setting interact with a corporate inspection layer in about 20 minutes.

Anthropic April 2026, from inside the app

What did Anthropic actually announce in April 2026?

Five distinct stories dominated the month. Claude Opus 4.7 went generally available on April 22, priced at $5 per million input tokens and $25 per million output tokens, matching Opus 4.6 pricing. Claude Mythos was previewed through Project Glasswing, a gated cybersecurity program that includes Amazon, Apple, Microsoft, and Nvidia. Amazon expanded its investment to the $25 billion range with Anthropic committing more than $100 billion to Amazon cloud and chips over a decade. Google and Broadcom expanded TPU supply. In parallel, JPMorgan rolled out Claude internally, and Dario Amodei met with Susie Wiles and Scott Bessent after the Pentagon flagged supply-chain-risk concerns about Mythos. Those are the announcements every news site covered.

What had to already be inside Fazm for an enterprise user to point it at their own Claude endpoint?

Three lines of Swift in the bridge launch path, plus one restart hook. The file /Users/matthewdi/fazm/Desktop/Sources/Chat/ACPBridge.swift at lines 380 through 382 reads a UserDefaults string called customApiEndpoint and, if non-empty, sets the environment variable ANTHROPIC_BASE_URL on the ACP bridge subprocess before spawn. That subprocess hosts the entire Claude session. Because the Anthropic SDK the bridge depends on honors ANTHROPIC_BASE_URL, every Claude request for the rest of the session goes to the custom endpoint. The restart hook lives at /Users/matthewdi/fazm/Desktop/Sources/Providers/ChatProvider.swift line 2101 as restartBridgeForEndpointChange. It stops the bridge when the user edits the endpoint, so the next message starts a fresh bridge with the new URL and a session resume preserves the conversation.

Where does the Settings UI for this live?

At /Users/matthewdi/fazm/Desktop/Sources/MainWindow/Pages/SettingsPage.swift. The @AppStorage binding is declared on line 840 as @AppStorage("customApiEndpoint") private var customApiEndpoint: String = "". The card renders from line 906 onward under the title "Custom API Endpoint" with the helper text "Route API calls through a custom endpoint (e.g. corporate proxy, GitHub Copilot bridge). Leave empty to use the default Anthropic API." The toggle calls restartBridgeForEndpointChange on both enable and on text submit, so edits take effect the next time the user sends a message.

When did this feature ship?

Fazm 2.2.0, dated 2026-04-11, according to /Users/matthewdi/fazm/CHANGELOG.json. The exact line is "Added custom API endpoint setting for proxies and corporate gateways." That release landed four days before the JPMorgan rollout story broke and eleven days before Opus 4.7 went generally available. The custom endpoint was already in users' hands by the time the April enterprise news cycle started.

Does the custom endpoint route through a corporate Anthropic gateway or through something like GitHub Copilot?

Both, because the switch is pure environment variable injection. ANTHROPIC_BASE_URL is a well-known knob on the Anthropic SDK that swaps the base host without changing the wire format. If your company runs a proxy that terminates TLS on your side, forwards authenticated traffic to api.anthropic.com, and logs it centrally, fazm will happily send every Claude request there. If your company runs a Copilot-compatible bridge that speaks the same REST surface, the same knob works. The Settings card literally names both cases in its helper text.

How is this different from what OpenAI or Claude Desktop offer?

Claude Desktop from Anthropic itself does not expose an API base URL at the user level. OpenAI's ChatGPT desktop app does not expose one either. Both are single-tenant consumer apps pointed at the vendor's SaaS. Fazm is a Mac agent that happens to use Anthropic under the hood through the Agent Client Protocol, and it exposes the one environment variable most consumer apps hide. That design choice is the reason a user at JPMorgan, a Glasswing partner, or a government contractor can keep using Fazm without waiting for the vendor to add their tenant.

Does changing the endpoint break conversation history?

No. restartBridgeForEndpointChange on ChatProvider.swift line 2101 only calls acpBridge.stop() and sets acpBridgeStarted to false. The next sendMessage call routes through ensureBridgeStarted, which does a full warmup and a session resume against the local SQLite chat history. The user sees the chat pick up exactly where it was, just now going through the new base URL. The only observable change is the destination of the outbound API call.

Is this related to the Opus 4.7 dynamic model listing people wrote about?

It is adjacent but separate. Dynamic model loading lives in the Node ACP bridge at acp-bridge/src/index.ts around the emitModelsIfChanged function. The custom endpoint setting lives in Swift at ACPBridge.swift line 380. Dynamic model loading is how newly released Claude models appear without an app update. Custom endpoint routing is how every one of those models can reach a user inside a firewalled enterprise without a separate release either. They are two different decoupling knobs for the same goal, which is that the Swift app does not need to ship every time Anthropic or a corporate gateway changes something.

Why is ANTHROPIC_BASE_URL set on the bridge subprocess and not in the Swift app directly?

Because all Anthropic traffic in Fazm flows through the Node bridge, never directly from Swift. The bridge is the only process that holds a Claude SDK client. Swift talks to the bridge over stdio in JSON-RPC, and the bridge talks to Claude. Setting the environment variable on the Node subprocess when it is spawned is the correct layer. The Swift app never holds an Anthropic API key or builds an Anthropic request. That design keeps one narrow seam for routing, and the customApiEndpoint feature is literally a two-line addition at that seam.

Is Fazm open source so I can verify all of this?

Yes. Fazm is MIT-licensed and the repo is linked from fazm.ai/gh. All line numbers in this article match HEAD at the time of writing. ACPBridge.swift:380-382 is the env-var injection. ChatProvider.swift:2101-2106 is the restart hook. SettingsPage.swift:840 is the AppStorage binding. SettingsPage.swift:906-952 is the Settings card. CHANGELOG.json under the 2.2.0 block dated 2026-04-11 confirms the release line.

If my enterprise does not have a Claude gateway yet, what does this do for me?

Nothing until your team stands one up. The feature is dormant for users who do not fill the field in. In that case, Fazm uses the default Anthropic base URL through the OAuth-connected Claude Pro or Max subscription, or through the built-in account. The presence of the setting is the point. It means when your infra team ships the gateway next quarter, you point Fazm at it in one text field, the bridge restarts on the next message, and the transition is invisible to the rest of the chat.