✅ BenefitsCloudIntermediate✨ AI-assisted

Benefits of Claude Sonnet 5.5 for Cloud Operations Teams

WittyTech Daily··5 min read
#claude-sonnet-5-5#cloud-operations#prompt-caching#incident-triage

Incident triage is mostly reading: alerts, logs, recent deploys, runbooks. When the job is reading, price per token decides whether a model sees every page or only the scary ones.

That is the case for Claude Sonnet 5.5 cloud operations work. Anthropic released it on September 28, 2026 at $2 per million input tokens and $10 per million output tokens, unchanged from Sonnet 5.

Five Claude Sonnet 5.5 cloud operations benefits

Triage every alert for pennies

A triage call that reads 20,000 tokens of alert, logs and recent deploys and writes 1,000 tokens back costs about $0.05 (my arithmetic, so use your own sizes). A thousand a day is $50. Anthropic says Sonnet 5.5 runs about 30% faster and costs up to 30% less per task than Sonnet 5 in its own testing, so measure on your alerts first.

Cache the runbook and pay a tenth for it

Every triage call opens with the same runbook, service catalog and escalation policy. Prompt caching bills cache reads at $0.20 per million tokens, a tenth of base input. A 30,000-token prefix costs $0.06 uncached and $0.006 on a cache read. The write costs $2.50 per million and lasts 5 minutes by default, or an hour with "ttl": "1h".

import anthropic

client = anthropic.Anthropic()

RUNBOOK = open("runbook.md").read()  # runbook, service catalog, escalation policy

def triage(alert_bundle: str):
    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=2000,
        cache_control={"type": "ephemeral"},  # default 5-minute lifetime
        output_config={"effort": "medium"},
        system=RUNBOOK,
        messages=[{"role": "user", "content": alert_bundle}],
    )
    usage = response.usage
    print(usage.cache_creation_input_tokens, usage.cache_read_input_tokens)
    return response

If cache_read_input_tokens is zero on the second call, something in the prefix changed. Editing tool definitions invalidates every cache level, so keep the tool list stable.

Batch the work nobody is waiting for

Runbook drafts, post-incident write-ups and review backlogs don't need an answer in seconds. The Message Batches API takes 50% off input and output, most batches finish within an hour, and unfinished ones expire at 24 hours. Drafting 200 runbooks at about 4,000 tokens in and 3,000 out costs $7.60 normally and $3.80 batched (my arithmetic).

import anthropic
from anthropic.types.message_create_params import MessageCreateParamsNonStreaming
from anthropic.types.messages.batch_create_params import Request

client = anthropic.Anthropic()

services = ["payments-api", "checkout-web"]  # your service list

batch = client.messages.batches.create(
    requests=[
        Request(
            custom_id=f"runbook-{name}",
            params=MessageCreateParamsNonStreaming(
                model="claude-sonnet-5-5",
                max_tokens=8000,
                messages=[{"role": "user", "content": f"Draft a runbook for {name} from its Terraform config."}],
            ),
        )
        for name in services
    ]
)
print(batch.id, batch.processing_status)  # in_progress until the batch ends

Poll processing_status until it reads ended, then iterate client.messages.batches.results(batch.id).

Review a whole change in one request

Sonnet 5.5 takes 1M tokens of context, roughly 555,000 words by Anthropic's count. A big Terraform plan, the module diff and your change policy fit in one request, no chunking pipeline. Test whether it catches the one dangerous line before it becomes a gate.

Run it on the cloud you already use

One model, five doors: the Claude API, Amazon Bedrock (anthropic.claude-sonnet-5-5), Google Cloud, Microsoft Foundry and Claude Platform on AWS (claude-sonnet-5-5 on the other four). A multi-cloud team keeps one prompt set and one eval suite. Prices above are Anthropic's; confirm pricing and regions on your platform.

When Sonnet 5.5 is not worth it

Anthropic positions Opus 5.5 for complex work needing careful judgment and Sonnet 5.5 for well-scoped everyday tasks. A novel multi-region outage with no obvious suspect is the first kind, and Opus 5.5 costs $4 / $20 per million, double. Send only those there.

If you only label severity at high volume, Haiku 4.5 ($1 / $5, 200K context) may be enough, so test it.

Claude Sonnet 5.5 API changes that break on upgrade

The model ID swap is one line, but five breaking changes hit code running on Sonnet 5.

Thinking is adaptive, and disabled returns a 400

Adaptive thinking is on by default, with effort at high. Sending thinking: {"type": "disabled"} returns a 400; between_tools is the lowest setting and works at high effort or below. Effort is recalibrated; for latency-sensitive work the docs suggest starting at medium or low.

response = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=16000,
    # Sonnet 5 accepted {"type": "disabled"}; Sonnet 5.5 returns a 400
    thinking={"type": "between_tools"},
    output_config={"effort": "high"},
    messages=[{"role": "user", "content": "..."}],
)

Forced tool choice is replaced by strict tools

tool_choice of any or tool returns a 400. Keep auto, set strict: true, and say in the prompt when the tool applies. Strict schemas need additionalProperties: false on every object. For Amazon Bedrock the migration guide says auto alone, so validate tool input yourself there.

import anthropic

client = anthropic.Anthropic()

classify_incident = {
    "name": "classify_incident",
    "description": "Record the severity and owning team for an incident",
    "strict": True,
    "input_schema": {
        "type": "object",
        "properties": {
            "severity": {"type": "string", "enum": ["sev1", "sev2", "sev3"]},
            "owning_team": {"type": "string"},
        },
        "required": ["severity", "owning_team"],
        "additionalProperties": False,
    },
}

response = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=2000,
    tools=[classify_incident],
    tool_choice={"type": "auto"},  # {"type": "tool", ...} now returns a 400
    messages=[{"role": "user", "content": "Classify this alert with classify_incident: ..."}],
)

Gotchas

  • Non-default temperature, top_p or top_k returns a 400.
  • Text between tool calls arrives in thinking blocks, empty by default, so a chat-ops bot that streams progress notes goes quiet. Set thinking.display or use between_tools.
  • Keep incident threads append-only. Editing the system prompt, tools or earlier messages and then replaying a Sonnet 5.5 thinking block can return a 400, so use mid-conversation system messages for mid-incident changes.

Sonnet 5.5 is cheap enough to sit in front of every alert and change, if you budget for the migration traps and keep Opus 5.5 for incidents that earn it.

← More in Cloud