CATCH #1960
DETECTED OCT 9, 2026 16:24 UTC
THE CATCHscore 10/10
EXHIBIT 1960 · FLASH
Oct 9, 2026 16:24 UTC
pypi
anthropic
Anthropic's latest SDK includes new `claude-opus-4-8` and `claude-haiku-4-5` model IDs, alongside beta features for messages streaming, refusal fallback middleware, and environments for workflow management. It also adds new configuration options for agents and workflow runs.
✓ VERIFIED — BEAT THE ANNOUNCEMENT BY 62.5H · AUTO-VERIFIED AGAINST ANTHROPIC NEWS
READY TO POST:
anthropic just shipped 1.13.0 and it looks like some new model ids slipped in! seeing references to `claude-opus-4-8` and `claude-haiku-4-5` in the code.
new anthropic sdk updates hint at more control over agent workflows and environments. also, beta features for message streaming and refusal fallbacks are showing up. interesting stuff for building with claude!
EVIDENCE — the receipts
anthropic 1.12.1 -> 1.13.0: +264 strings, -524 strings, 68 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] (3)
+ 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:
...
+ py
client.beta.environments.work.worker(environment_id=..., environment_key=...)
[sentence] (68)
+ 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:
...
+ py
client.beta.environments.work.worker(environment_id=..., environment_key=...)
+ .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 whe
caught by the 20-minute sweep ·
the live wire · all receipts