CATCH #415
DETECTED JUL 28, 2026 19:10 UTC
THE CATCHscore 10/10
EXHIBIT 415 · FLASH
Jul 28, 2026 19:10 UTC
pypi
anthropic
Anthropic's latest SDK update, 0.120.2, includes references to new models 'claude-opus-4-8' and 'claude-haiku-4-5', alongside 'BetaRefusalFallbackMiddleware' indicating a new beta fallback mechanism for messages.
READY TO POST:
anthropic just shipped sdk version 0.120.2 and it looks like new models 'claude-opus-4-8' and 'claude-haiku-4-5' might be on the horizon. also a new beta refusal fallback middleware?
peeking into the latest anthropic sdk, i'm seeing mentions of two unreleased claude models, opus-4-8 and haiku-4-5. could new capabilities or tiers be coming soon?
EVIDENCE — the receipts
anthropic 0.120.1 -> 0.120.2: +93 strings, -418 strings, 41 interesting
[model_id] (2)
+ py
client = Anthropic(middleware=[BetaRefusalFallbackMiddleware([{"model": "claude-opus-4-8"}])])
state = BetaFallbackState()
with state:
message = client.beta.messages.create(**params)
+ python
with client.messages.stream(
model="claude-haiku-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
[feature_flag] (2)
+ py
client = Anthropic(middleware=[BetaRefusalFallbackMiddleware([{"model": "claude-opus-4-8"}])])
state = BetaFallbackState()
with state:
message = client.beta.messages.create(**params)
+ py
with client.beta.messages.stream(...) as stream:
for chunk in stream:
...
[sentence] (41)
+ py
client = Anthropic(middleware=[BetaRefusalFallbackMiddleware([{"model": "claude-opus-4-8"}])])
state = BetaFallbackState()
with state:
message = client.beta.messages.create(**params)
+ python
with client.messages.stream(
model="claude-haiku-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
+ py
with client.beta.messages.stream(...) as stream:
for chunk in stream:
...
+ .get_final_text() can only be called when the API returns a `text` content block.
The API returned {','.join([b.type for b in message.content])} content block type(s) that you can access by calling get_final_message().content
+ : a field set to a value
overrides it, a field explicitly
+ : a key set to a value overrides
it, a key explicitly
+ ; the whole object is dropped when nothing is left.
Always a fresh dict;
+ bash
pip install "anthropic[google_cloud]"
+ header
(skipping values already present) and the middleware's helper-
caught by the 20-minute sweep ·
the live wire · all receipts