CATCH #1293
DETECTED SEP 10, 2026 18:24 UTC
THE CATCHscore 10/10
EXHIBIT 1293 · FLASH
Sep 10, 2026 18:24 UTC
pypi
anthropic
Anthropic's 1.5.0 python package includes new model IDs for `claude-opus-4-8` and `claude-haiku-4-5`, along with beta features for refusal fallback and messages streaming.
READY TO POST:
anthropic just updated their python package to 1.5.0! spotted new model IDs `claude-opus-4-8` and `claude-haiku-4-5` in the diff. could these be upcoming models?
looks like anthropic's new python sdk has some beta features for refusal fallback and streaming messages. also seeing some new claude model ids mentioned. interesting!
EVIDENCE — the receipts
anthropic 1.4.0 -> 1.5.0: +134 strings, -421 strings, 56 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] (56)
+ 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;
+ A plain ``dict`` rejects ``object.__setattr__``; this subclass can carry the tag.
+ Credentials file at {path} is accessi
caught by the 20-minute sweep ·
the live wire · all receipts