Home › Changelog › 2026-08-22
Last updated: 2026-08-22
Changelog — August 22, 2026
OpenAI cut the price of its current flagship, and the new number is one you have seen before. GPT-5.6 Sol drops from $5/$30 to $4/$20 per million tokens — 20% off input, 33% off output — which lands it on exactly the price of the GPT-5.5 it replaced in July. GPT-5.5 is now strictly dominated: same price, older model. Our cost calculator is updated in this run, so the figures there are current as you read this. Elsewhere: Anthropic shipped Python SDK v1.0, which breaks on purpose — the HTTP layer moves from httpx to a fork, and several long-deprecated parameters are gone — and Claude Code v2.1.239 shipped a /claude-api upgrade command the next day to do the migration for you. That same release fixes a Bedrock proxy bug that silently doubled your billed API calls. And NemoClaw cleared a tar advisory out of every tree it ships.
2026-08-21
ChatGPT
Platform changelog — GPT-5.6 Sol drops to $4/$20 (pricing) · per-request regional processing
The flagship got cheaper, and the size of the cut is asymmetric in a way worth reading. GPT-5.6 Sol now costs $4 per million input tokens and $20 per million output tokens, down from $5/$30 — 20% off input, 33% off output. Output is where agent workloads spend, so the effective saving for anyone running a reasoning-heavy agent loop is closer to the 33% than the 20%. If you priced a deployment on Sol in the last six weeks and decided against it, the arithmetic has changed enough to be worth redoing.
The more interesting consequence is what it does to GPT-5.5. $4/$20 is precisely what GPT-5.5 has cost since April. The current flagship and the previous one are now the same price, which makes GPT-5.5 strictly dominated — there is no longer a cost argument for staying on it. If you are on GPT-5.5 for budget reasons, that reason is gone; the only remaining reasons to stay are behavioral (a prompt tuned to its quirks, an eval suite you have not re-run). This is the second time in two weeks a vendor has collapsed a price gap it had itself created — Anthropic did the same thing on August 10 when Sonnet 5's introductory $2/$10 became permanent. When the newest model stops carrying a premium, the migration you were deferring on cost grounds needs a different justification.
Our cost calculator is updated in this run. Sol reads $4/$20 there now, alongside Terra at $2.50/$15 and Luna at $1/$6. This is the change we care most about catching same-day: a calculator quoting a rate 25% high on input and 50% high on output does not merely mislead, it steers a reader to the wrong provider entirely.
The other item is a data-residency control. API customers can select regional processing for an individual request by using a prefixed domain with an API key from a project whose geography is set to Global. Per-request rather than per-project is the useful part: one key can now serve a mixed workload where some requests must stay in-region and most need not, instead of forcing you to provision separate projects and thread two keys through your application. Existing eligibility, retention-control, endpoint and model-support requirements are unchanged, so check those before assuming any given call qualifies.
Still no pricing for Ultrafast mode. The August 13 Ultrafast tier for GPT-5.6 Sol — up to 14× faster than Standard, limited preview — is now nine days announced without published rates. A price cut on the Standard tier makes the silence louder, not quieter: Ultrafast is presumably priced relative to a number that just moved. We will not estimate it.
Changelog →
Affects: /chatgpt/, /chatgpt/pricing/, /chatgpt/api-vs-chat/, /tools/cost-calculator/
2026-08-20
Claude API
August 20 release — Python SDK v1.0 · the HTTP layer moves to a fork (breaking)
Python SDK v1.0 is a deliberate break, and the headline is the HTTP layer. The SDK moves from httpx to httpx2, described as a maintained, API-compatible fork. In practice that means custom http_client, Timeout and transport objects must now be built from httpx2 rather than httpx — the DefaultHttpxClient helpers are unchanged, so the common path is fine, but anyone who configured a timeout or a proxy transport by hand has an import to change. There is a second-order trap worth flagging: if you rely on tracing or mocking libraries that patch httpx — and most Python observability and test tooling does — call httpx2.alias_httpx() at startup, or those patches will silently miss every request the SDK makes. A tracer that instruments nothing while reporting success is the failure mode to watch for here.
The removals are the part to audit before you pin >=1.0. v1.0 requires Python 3.10 or later and drops long-deprecated surface: the legacy Text Completions API, the temperature, top_p and top_k parameters on Messages methods, and the tool runner's client-side compaction_control. The sampling parameters are the ones most likely to be sitting in real code — they have been deprecated for a while, but "deprecated" and "removed" are different days, and this is the second one. Two more behavior changes: on the async client, .with_raw_response results now need await response.parse(), and AnthropicBedrock now raises when no AWS region is configured instead of quietly defaulting to us-east-1. That last one is a genuine improvement even though it will break someone's deploy: silently defaulting a region means silently choosing where your inference runs and what it costs.
You do not have to do the migration by hand, and the tool landed the next day. Claude Code v2.1.239 — covered below — adds /claude-api upgrade, which migrates Python projects from anthropic 0.x to 1.x, and updates the bundled skill's Python reference for 1.x (including the detail that timeouts now use anthropic.Timeout, not httpx.Timeout). The upstream v1 migration guide documents every change with before-and-after snippets. Run the command against a branch, read the diff, and keep the guide open for anything it does not catch — an automated migration is a first pass, not a review.
No new models, no pricing changes, no deprecations in this window. Nothing here moves our cost calculator on the Anthropic side; the OpenAI half of it did move, above.
Release notes →
Affects: /claude-cowork/, /claude-cowork/vs-api/, /claude-cowork/pricing/
2026-08-22
Claude Code
v2.1.239 → v2.1.240 — a proxy bug that doubled your bill · a password field that leaked · WebFetch caching forever
Start with the one that costs money. v2.1.239 fixes Bedrock streaming behind proxies that strip the response Content-Type header, which silently doubled billed API calls by re-running every turn non-streaming. Read that mechanism carefully, because it explains who was affected and why nobody noticed. The proxy removes a header; Claude Code concludes the stream failed; it retries the same turn without streaming; you are billed for both. There is no error, no warning, and no line in the interface — the only symptom is a bill roughly twice what your token counts imply. If you run Claude Code on Bedrock behind a corporate proxy, this is worth a look at your actual spend against your expected spend for the period before you upgrade. It is the second silent-billing bug in this line in a week: v2.1.237 had gateway-routed sessions paying uncached input prices with equally little indication. Both are the same class of failure — the meter runs correctly, but the thing being metered is not what you thought you asked for.
The security item is a masked input field that did not stay masked. v2.1.239 fixes "masked (password-style) inputs such as the login code field letting their text be pasted back with Ctrl+Y elsewhere or saved to prompt history when cleared with double Esc". Both halves matter. The kill-ring half means a secret typed into a masked field could be yanked back out into an ordinary prompt — where it goes to the model and into the transcript. The prompt-history half means it could be persisted to disk, outliving the session entirely. If you have typed anything sensitive into a masked Claude Code field on an earlier build, treat it as potentially recorded and rotate accordingly. This is a good general reminder that a UI mask is a display property, not a storage boundary.
WebFetch was caching pages for the entire session. Fixed: "WebFetch retaining expired page content in memory for the whole session instead of the intended 15 minutes". The documented behavior is a 15-minute per-URL cache; the actual behavior was forever. For a long agent session that polls a status page, a feed, or a docs page it expects to change, every fetch after the first returned stale content while reporting a fresh result — which is exactly the kind of bug that makes an agent confidently reason from data that stopped being true hours ago. If you built a workflow around re-fetching a changing URL and it appeared not to see updates, this was why, and it is fixed rather than something you need to work around with cache-busting query strings.
Two organization-scale fixes with the same shape: fail fast instead of hanging. A "request rejected by an organization policy check being re-sent before the rejection was shown" is now shown first — previously the session retried a request the policy had already refused, so the user saw latency rather than the reason. And persistent retry mode (CLAUDE_CODE_RETRY_WATCHDOG) now fails immediately on organization spend-limit and out-of-credits errors instead of waiting indefinitely for a reset. The watchdog exists to ride out transient rate limits; a spend limit is not transient, and waiting for it to clear meant a session that appeared to be working while it sat on an error that would never resolve. Relatedly, the usage-limit message shown when your monthly spend limit is already used up now also says when your session or weekly limit resets.
Cost estimates now include a premium they were omitting. /cost, the status line and --max-budget-usd now include the 1.1× US-only-inference premium for data-residency workspaces. If you are on such a workspace, every cost figure the tool has shown you was 10% low. Small as a percentage, but it was systematically low in one direction, which is the kind of error that compounds in a budget.
Cross-session and teammate messaging got real fixes, and Windows got the feature at all. "Windows: cross-session messaging is now available, so Claude Code sessions across your machines can message each other with SendMessage" — this was a Unix-only capability until now. Two discoverability fixes go with it: "ListAgents and /list-agents now list your live teammates (previously only subagents and other sessions appeared, so a reachable teammate looked absent)", and "ListAgents now tells a session its own name (the one peers use to message it), and SendMessage to your own name says so instead of 'no agent named …'". A session that could not learn its own address could not tell a peer how to reach it, which quietly made half of multi-session coordination guesswork.
/resume got four fixes, and one of them is a data-loss-shaped bug. "Custom session titles disappearing from /resume after more than ~64 KB of conversation was written following the rename" — you name a session, work in it for a while, and the name is gone when you come back. Also fixed: /resume picking up sessions from different directories with similar names; showing sessions as recently changed when only a file was touched; and, in all-projects mode, directing you to directories that no longer exist. Separately, "runaway session-title syncing to Remote Control" — a 2.1.232 regression — is fixed, as are sessions whose titles start with / being unaddressable.
Everything else, briefly. The one-time fullscreen renderer offer now appears on Bedrock, Vertex, Foundry and other previously excluded setups, and new installs there start in fullscreen; the prompt no longer reappears on every launch. Cloud sessions: plugins synced from claude.ai show as name@synced, work with claude plugin enable/disable <name>@synced, and never override a same-named plugin you installed. Alpine/musl builds get working native image paste, clipboard and audio-capture add-ons (musl-built binaries instead of glibc ones the runtime refused). Claude Code on the web routes Bash and tool requests to non-API anthropic.com hosts through the session proxy. Also fixed across the release: Claude Code hanging at startup behind an HTTPS proxy on Bedrock with an SSO profile and awsAuthRefresh (the credential pre-check now honors HTTPS_PROXY); a raw crash dump when starting from a deleted directory; Edit and Write pausing ~5 seconds in JetBrains IDE terminals; an Esc-with-queued-prompt race that let a turn finish early and a later resubmit repeat actions; cloud sessions resuming out of plan mode after an idle worker restart; MCP elicitation forms taller than the terminal being clipped in fullscreen; remote MCP servers staying failed after a transient 5xx reconnect; dark-ansi rendering expanded tool results in invisible text; .worktreeinclude patterns starting with **/ silently matching nothing; agents, skills and commands with a UTF-8 BOM being silently ignored; marketplace metadata.pluginRoot having no effect; claudeMdExcludes not excluding symlinked .claude/rules; the Linux sandbox making .git/config.worktree unreadable; hooks failing with "posix_spawn ENOENT" after a directory deletion; OpenTelemetry trace fragmentation with PreToolUse hook deferrals; broken [Pasted text #N] placeholders after text edits; and several terminal-input papercuts (vim-mode Escape now preserves text, selection:copy keeps Shift+Arrow extensions, Ctrl+Backspace deletes a word in search boxes, shell-mode Tab completion keeps ./, mouse movement in browser terminals no longer inserts garbage). keybindingFlavor: "readline" now matches Bash for word-movement keys, and Claude in Chrome's /clear closes the session's Chrome tab group.
v2.1.240 shipped hours later with no itemized notes — the entry reads only "Bug fixes and reliability improvements." We are not going to characterize changes we cannot see. It is the current release as of this writing, and there is nothing in it we can tell you about.
No reverts in either release. We check every release for rollbacks of claims we have published, because v2.1.233 reverted two permission changes we had reported as shipped. Nothing in v2.1.239 walks back anything we have told you — the vim-mode Escape and session-title-sync items are regression fixes, not withdrawals. The narrower replacements for the reverted Cygwin-symlink and input-redirection permission checks have still not appeared, now nine days on. v2.1.240's unlisted contents are, necessarily, unchecked.
Full changelog →
Affects: /openclaw/, /openclaw/setup/, /openclaw/configuration/, /openclaw/security/, /openclaw/cost-optimisation/, /claude-cowork/, /security/
2026-08-22
NemoClaw
main — a tar advisory cleared out of every shipped tree · a no_proxy bug that dropped every operator exclusion · v0.0.114 in preparation
The security item is a tar advisory, and the interesting part is how thoroughly it was chased. #9929 replaces affected tar releases with the first patched release, [email protected], clearing GHSA-r292-9mhp-454m from the reviewed OpenClaw archive, the committed OpenClaw runtime, the NemoClaw plugin production graph, and the npm-private image trees — without adding an audit exception. That last clause is the one to notice. The easy way to make an advisory stop appearing is to suppress it; doing the work in four separate trees instead is the harder and correct path. A follow-up, #9936, found that main still left two retained OpenClaw remediation paths on the affected [email protected] and moved those to 7.5.21 as well — which is the ordinary shape of dependency remediation: the first pass gets the obvious trees, and the second finds the ones pinned somewhere else. #9938 then closes the test gaps that had let the remediation pass without proving mismatched archive bytes actually stop before extraction.
The bug most likely to have bitten a real deployment is a proxy-exclusion bug. #9779 fixes the plugin copy of withLocalNoProxy, which normalized NO_PROXY and no_proxy separately. The consequence: a host that set only lowercase no_proxy got an uppercase NO_PROXY containing just the NemoClaw local hosts — and lost every operator exclusion. On a corporate network, that means plugin subprocesses were sending traffic through the proxy for hosts your administrator had explicitly excluded, including internal ones. Lowercase-only no_proxy is the common convention on Linux, so this was not an exotic configuration. It now canonicalizes the union of both spellings and writes both, matching the CLI copy — and "the CLI copy was already right" is the tell that this was a divergent-duplicate bug, the kind that only shows up in whichever copy you happen to exercise.
Two installer fixes remove real dead ends. #9883 repairs macOS Homebrew formula reuse: the installer reused a version-compatible OpenShell installation after checking only formula presence and tap identity, so repair guidance could loop when the formula digest was stale — you follow the fix, it fails the same way, it tells you the same thing. Reuse inspection now happens inside the checksum-pinned temporary trust boundary, with a pinned reinstall when formula state cannot be confirmed, and rebuild-only openclaw doctor --fix gets a five-minute budget instead of inheriting a shared 15-second command limit. And #9917 stops an Express install aborting when an automatically discovered reciprocal DGX Station peer has an active vLLM workload; it now leaves that peer alone and continues with the single-Station Ultra recipe. Explicit and resume-bound pair selections still fail closed, which is the right split — an automatic discovery finding a busy machine is a reason to not use it, but an explicit request for that machine is a reason to stop and say so.
The uninstall path keeps hardening, all in the same direction: prove identity before destroying anything. #9756 makes scoped uninstall prove the package-managed OpenShell gateway service's current process, executable, owner and loaded namespace before each sandbox deletion, and stop if any of it changes mid-validation. #9870 makes Bedrock Runtime adapter cleanup fail closed when process termination cannot be proven, preserving the PID, bearer token and journal rather than proceeding. #9903 stops Hermes Portable uninstall deleting matched names opportunistically and binds it to schema-5 receipts and registry rows under lifecycle locks, resumable from a durable journal. If you have ever watched an uninstaller delete something that merely shared a name with its target, you know why each of these exists. #9877 is the same instinct on the rebuild path: the handoff could restart a healthy replacement container while OpenShell was still processing the rollback backup deletion, so it now requires a sandbox list that omits the old name first.
One governance change is a good pattern to steal. #9326 binds the accepted Pi trust boundary to a contract check. The summary is unusually candid about why: the Pi baseline policy already denied everything except the managed inference route, but agents/pi/policy-additions.yaml was reachable from a single existence check — so weakening the boundary changed no test and failed no gate. The artifact check now parses the policy and the manifest and binds each accepted boundary, so widening Pi's trust surface fails the check rather than the next release. A security policy guarded only by "the file exists" is a policy nothing enforces, and that is worth checking for in your own repository today.
v0.0.114 is being prepared. #9841 stages the documentation and the dated changelog entry, covering deterministic read-only MCP tool calls for LangChain Deep Agents Code, per-stage connect --probe-only timing, and — following yesterday's destroy --yes fix — active SSH session warnings before destroy, plus retained session-export staging artifacts. Also in the window: #9885 binds the Hermes Discord credential endpoints so REST and WebSocket rewrites resolve the token without exposing it, using an endpointless profile after the OpenShell 0.0.106 credential revision; and interactive connect, sandbox lifecycle and Portable networking work continues.
Commits →
Affects: /nemoclaw/, /nemoclaw/setup/, /nemoclaw/policy/, /nemoclaw/local-gpu/, /nemoclaw/switching-providers/
The pattern this window: the meter was right, the thing being metered was not
Two of today's fixes are billing bugs that produced no error and no warning, and they are the same bug wearing different clothes. Claude Code on Bedrock behind a header-stripping proxy concluded every stream had failed, re-ran each turn non-streaming, and billed you twice — a 100% overcharge with no symptom except the invoice. Four days earlier, gateway-routed sessions were paying uncached input prices on every turn because prompt caching was silently not applying. In both cases the accounting was correct; the request was not the one you thought you had made. This is the argument for the kind of instrumentation OpenAI shipped this week in its Prompt Caching dashboard and that Claude Code's /cost now improves by including the 1.1× data-residency premium it had been omitting. The practical takeaway is unglamorous: reconcile your provider invoice against your own token counts at least once. Every one of these bugs is invisible from inside the tool and obvious the moment you compare two numbers that should match.
Not counted as news
A large share of NemoClaw's commits this window are CI and test-harness work with no effect on a running install: pinning portable-launch to Ubuntu 26.04 and Podman 5.7 after a runner failure (#9940), binding Portable Podman to systemd cgroups (#9918), dropping a BuildKit-only COPY --chmod that rootless Podman rejects (#9922), repairing a stale Dockerfile-path assertion (#9930), a Launchable identity smoke run (#9937), an interrupted-onboarding E2E readiness fix (#9920), and documentation-PR ownership handoff (#9954). Real work, invisible to users. Claude Code v2.1.240 published no itemized notes at all, so there is nothing in it to evaluate either way.
Quiet in this window
No new releases from IronClaw (still 1.3.0 stable, covered yesterday), Kilo Code (v7.4.23), or Hermes (v0.20.5, whose curated notes remain deferred to v0.21.0 — now eight days of tagged releases documented only by area). No new entries on the Claude apps release notes. OpenClaw itself remains at 2.3 (March 20); its release page is editorial and independent of the Claude Code line tracked above. All eight feeds were polled and healthy.
Guides we're reviewing after this
- /chatgpt/pricing/ is wrong as of yesterday and is the top edit today. GPT-5.6 Sol is $4/$20, not $5/$30. The page needs the new rate, and it needs the consequence spelled out: GPT-5.5 is now the same price as the flagship that replaced it, so any guidance that recommends 5.5 on cost grounds is obsolete. The calculator is already updated in this run — the prose page is the gap.
- /openclaw/cost-optimisation/ should take the Bedrock-behind-a-proxy double-billing fix. Together with the v2.1.237 gateway caching fix already flagged for this page, it makes a section that page does not yet have and badly needs: billing failures that produce no error, and the habit of reconciling an invoice against your own token counts. The 1.1× data-residency premium now appearing in
/cost belongs here too.
- /openclaw/security/ and /security/ (both August 13) should take the masked-input leak: a password-style field whose contents could be yanked back with Ctrl+Y or written to prompt history on double-Esc. It is a compact, memorable example of the principle those pages teach — a UI mask is not a storage boundary — and it comes with a concrete reader action (rotate anything typed into a masked field on an older build). Both pages also still owe the macOS wildcard read-deny fix and the removal of the reverted Cygwin-symlink and input-redirection checks if described as active.
- /claude-cowork/vs-api/ needs Python SDK v1.0: the
httpx → httpx2 move, the Python 3.10 floor, the removal of Text Completions and of temperature/top_p/top_k on Messages, and the httpx2.alias_httpx() requirement for anyone whose tracing or mocking patches httpx. It should point at /claude-api upgrade as the migration path. This is on top of the browser use tool and computer use GA already outstanding for this page from yesterday.
- /openclaw/configuration/ (May 16, now 98 days old, past the 90-day staleness threshold) is on its eighth consecutive digest without action. The backlog is thirteen items, adding
CLAUDE_CODE_RETRY_WATCHDOG's new spend-limit fail-fast behavior to the twelve already listed. We said last time this either gets scheduled or gets dropped as something we have decided not to do; a ninth listing without a decision would make this list dishonest, so it needs one before the next weekly review.
- /nemoclaw/setup/ (May 30) should note the
no_proxy union fix — on a corporate network with lowercase-only no_proxy, plugin subprocesses were ignoring every operator exclusion — and the macOS Homebrew repair loop, since a reader hitting that loop would otherwise conclude the installer is simply broken. The destroy --yes warning, the gemini-3.6-flash onboarding default and the reserved gateway port 11438 remain outstanding here from earlier digests.
- /nemoclaw/policy/ should take the Pi trust boundary contract check as a worked example: a policy file guarded only by an existence check is a policy that nothing enforces, and weakening it failed no gate. That is a lesson about policy testing rather than policy syntax, which is the part that page currently under-covers.
- /openclaw/ and /openclaw/setup/ should record that Windows now has cross-session messaging — previously Unix-only — and that
ListAgents//list-agents now surface live teammates and a session's own name. Our commands reference already carries /list-agents; the behavior change is what needs describing.
- /tools/cost-calculator/ — updated in this run for GPT-5.6 Sol at $4/$20. Mythos 5 remains a watch item: a gated Project Glasswing research preview with no published pricing, so it stays out until rates exist. GPT-5.6 Ultrafast likewise, nine days after announcement.
See all releases
Browse the full changelog index for the complete history across all platforms, or the daily one-liner for the most recent state of each agent.