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.
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.
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.
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.
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.
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.
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.
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
“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.
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.
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
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
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.
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
| Feature | Typical consumer Claude desktop app | Fazm 2.2.0+ |
|---|---|---|
| User-editable Anthropic base URL | Not exposed | Settings > AI Chat > Custom API Endpoint |
| Where the env var is injected | No equivalent seam | ACPBridge.swift line 381 on subprocess spawn |
| Restart mechanism for endpoint change | Would require app restart | restartBridgeForEndpointChange, one function |
| Conversation history across the switch | N/A | Preserved via session resume |
| Works with corporate proxy or Copilot bridge | Vendor tenant request | Yes, both named in helper text |
| How soon available after announcement | Per-vendor SLA | Shipped 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.
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.
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.
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.
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.
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.
“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.
More on the same Anthropic April 2026 thread, from different angles inside the Fazm source tree.
Keep reading
Anthropic partnership April 2026: the $25B compute headlines, and the quieter protocol partnership
The open Agent Client Protocol is the partnership small apps can actually ride on. Exact file paths, OAuth client ID, keychain slot.
Anthropic API changelog April 2026: what the Fazm bridge had to absorb
Dynamic model loading, ACP 0.29.2 error shapes, the default pseudo-model filter, and how none of it needed an app release.
Anthropic Claude new model April 2026: the 'default' pseudo-model trap
Opus 4.7 arrives under the slug 'default' in the ACP SDK, and the Swift migration in ShortcutSettings.swift line 174 needs to match.