Prewire · case file · public copy of the record
FILE P311 PREWIRE receipts archive the live wire
CATCH #411 DETECTED JUL 28, 2026 16:54 UTC
THE CATCHscore 10/10
EXHIBIT 411 · FLASH
Jul 28, 2026 16:54 UTC pypi anthropic
Anthropic's latest SDK update (0.120.1) reveals new model IDs "claude-opus-4-8" and "claude-haiku-4-5" along with beta streaming and refusal fallback middleware features.

READY TO POST:

anthropic just shipped 0.120.1 to pypi and it looks like 'claude-opus-4-8' and 'claude-haiku-4-5' might be new models coming soon. also seeing beta streaming and refusal fallback middleware.

new anthropic sdk version 0.120.1 includes references to 'claude-opus-4-8' and 'claude-haiku-4-5'. hints at some interesting new models and beta features like refusal fallback. 👀

EVIDENCE — the receipts
anthropic 0.120.0 -> 0.120.1: +84 strings, -417 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

THE WIRE RECEIPTS ACCESS @VEDOLOS TERMS PRIVACY break the story before it breaks